From f804210b5a1fa0eec4262fd777c03b48d2702fbd Mon Sep 17 00:00:00 2001 From: Veado <5270325-veado@users.noreply.gitlab.com> Date: Fri, 18 Sep 2020 11:46:51 +0000 Subject: [PATCH] Merge branch 'feature/update-deps-cleanup' into 'master' Update dependencies Closes #1 See merge request thorchain/asgardex-common/asgardex-bitcoin!17 --- packages/asgardex-bitcoin/dotenv | 9 - packages/asgardex-bitcoin/lerna.json | 6 - packages/asgardex-bitcoin/lib/index.esm.js | 366 +- .../asgardex-bitcoin/lib/index.esm.js.map | 2 +- packages/asgardex-bitcoin/lib/index.js | 399 +- packages/asgardex-bitcoin/lib/index.js.map | 2 +- packages/asgardex-bitcoin/lib/utils.d.ts | 1 - packages/asgardex-bitcoin/package.json | 37 +- packages/asgardex-bitcoin/src/client.ts | 4 +- packages/asgardex-bitcoin/src/util.ts | 1 - packages/asgardex-bitcoin/src/utils.ts | 36 +- packages/asgardex-bitcoin/yarn.lock | 5353 ++++------------- 12 files changed, 1654 insertions(+), 4562 deletions(-) delete mode 100644 packages/asgardex-bitcoin/lerna.json delete mode 100644 packages/asgardex-bitcoin/src/util.ts diff --git a/packages/asgardex-bitcoin/dotenv b/packages/asgardex-bitcoin/dotenv index 2a358b78..6c03effa 100644 --- a/packages/asgardex-bitcoin/dotenv +++ b/packages/asgardex-bitcoin/dotenv @@ -1,20 +1,11 @@ USER_PHRASE= VAULT_PHRASE= -#TESTNET -##ETHEREUM -USER_ETH= -VAULT_ETH= - ##BITCOIN ELECTRS_API= USER_BTC= VAULT_BTC= -##BINANCECHAIN -USER_BNB= -VAULT_BNB= - ##THORCHAIN USER_THOR= VAULT_THOR= diff --git a/packages/asgardex-bitcoin/lerna.json b/packages/asgardex-bitcoin/lerna.json deleted file mode 100644 index bcdca041..00000000 --- a/packages/asgardex-bitcoin/lerna.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "packages": ["packages/*"], - "npmClient": "yarn", - "useWorkspaces": true, - "version": "independent" -} diff --git a/packages/asgardex-bitcoin/lib/index.esm.js b/packages/asgardex-bitcoin/lib/index.esm.js index d1dc907c..8d63068d 100644 --- a/packages/asgardex-bitcoin/lib/index.esm.js +++ b/packages/asgardex-bitcoin/lib/index.esm.js @@ -31393,9 +31393,9 @@ function reverseBuffer(buffer) { } exports.reverseBuffer = reverseBuffer; function cloneBuffer(buffer) { - const clone = Buffer.alloc(buffer.length); + const clone = Buffer.allocUnsafe(buffer.length); buffer.copy(clone); - return buffer; + return clone; } exports.cloneBuffer = cloneBuffer; /** @@ -32422,12 +32422,7 @@ function check(data) { } exports.check = check; function canAdd(currentData, newData) { - return ( - !!currentData && - !!newData && - currentData.witnessUtxo === undefined && - currentData.nonWitnessUtxo === undefined - ); + return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined; } exports.canAdd = canAdd; }); @@ -32795,12 +32790,7 @@ function check(data) { } exports.check = check; function canAdd(currentData, newData) { - return ( - !!currentData && - !!newData && - currentData.witnessUtxo === undefined && - currentData.nonWitnessUtxo === undefined - ); + return !!currentData && !!newData && currentData.witnessUtxo === undefined; } exports.canAdd = canAdd; }); @@ -33262,12 +33252,9 @@ function psbtFromKeyVals( keyVal.key, typeFields.InputTypes.NON_WITNESS_UTXO, ); - if ( - input.nonWitnessUtxo !== undefined || - input.witnessUtxo !== undefined - ) { + if (input.nonWitnessUtxo !== undefined) { throw new Error( - 'Format Error: Input has multiple [NON_]WITNESS_UTXO', + 'Format Error: Input has multiple NON_WITNESS_UTXO', ); } input.nonWitnessUtxo = converter.inputs.nonWitnessUtxo.decode(keyVal); @@ -33278,13 +33265,8 @@ function psbtFromKeyVals( keyVal.key, typeFields.InputTypes.WITNESS_UTXO, ); - if ( - input.nonWitnessUtxo !== undefined || - input.witnessUtxo !== undefined - ) { - throw new Error( - 'Format Error: Input has multiple [NON_]WITNESS_UTXO', - ); + if (input.witnessUtxo !== undefined) { + throw new Error('Format Error: Input has multiple WITNESS_UTXO'); } input.witnessUtxo = converter.inputs.witnessUtxo.decode(keyVal); break; @@ -33631,7 +33613,7 @@ function getEnumLength(myenum) { exports.getEnumLength = getEnumLength; function inputCheckUncleanFinalized(inputIndex, input) { let result = false; - if (!input.nonWitnessUtxo !== !input.witnessUtxo) { + if (input.nonWitnessUtxo || input.witnessUtxo) { const needScriptSig = !!input.redeemScript; const needWitnessScript = !!input.witnessScript; const scriptSigOK = !needScriptSig || !!input.finalScriptSig; @@ -33968,6 +33950,14 @@ class Psbt { __NON_WITNESS_UTXO_BUF_CACHE: [], __TX_IN_CACHE: {}, __TX: this.data.globalMap.unsignedTx.tx, + // Old TransactionBuilder behavior was to not confirm input values + // before signing. Even though we highly encourage people to get + // the full parent transaction to verify values, the ability to + // sign non-segwit inputs without the full transaction was often + // requested. So the only way to activate is to use @ts-ignore. + // We will disable exporting the Psbt when unsafe sign is active. + // because it is not BIP174 compliant. + __UNSAFE_SIGN_NONSEGWIT: false, }; if (this.data.inputs.length === 0) this.setVersion(2); // Make data hidden when enumerating @@ -34086,6 +34076,7 @@ class Psbt { ); } checkInputsForPartialSig(this.data.inputs, 'addInput'); + if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript); const c = this.__CACHE; this.data.addInput(inputData); const txIn = c.__TX.ins[c.__TX.ins.length - 1]; @@ -34182,6 +34173,43 @@ class Psbt { this.data.clearFinalizedInput(inputIndex); return this; } + getInputType(inputIndex) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + const script = getScriptFromUtxo(inputIndex, input, this.__CACHE); + const result = getMeaningfulScript( + script, + inputIndex, + 'input', + input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig), + input.witnessScript || + redeemFromFinalWitnessScript(input.finalScriptWitness), + ); + const type = result.type === 'raw' ? '' : result.type + '-'; + const mainType = classifyScript(result.meaningfulScript); + return type + mainType; + } + inputHasPubkey(inputIndex, pubkey) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE); + } + inputHasHDKey(inputIndex, root) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + const derivationIsMine = bip32DerivationIsMine(root); + return ( + !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine) + ); + } + outputHasPubkey(outputIndex, pubkey) { + const output = utils$1.checkForOutput(this.data.outputs, outputIndex); + return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE); + } + outputHasHDKey(outputIndex, root) { + const output = utils$1.checkForOutput(this.data.outputs, outputIndex); + const derivationIsMine = bip32DerivationIsMine(root); + return ( + !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine) + ); + } validateSignaturesOfAllInputs() { utils$1.checkForInput(this.data.inputs, 0); // making sure we have at least one const results = range(this.data.inputs.length).map(idx => @@ -34210,6 +34238,7 @@ class Psbt { inputIndex, Object.assign({}, input, { sighashType: sig.hashType }), this.__CACHE, + true, ) : { hash: hashCache, script: scriptCache }; sighashCache = sig.hashType; @@ -34409,12 +34438,15 @@ class Psbt { }); } toBuffer() { + checkCache(this.__CACHE); return this.data.toBuffer(); } toHex() { + checkCache(this.__CACHE); return this.data.toHex(); } toBase64() { + checkCache(this.__CACHE); return this.data.toBase64(); } updateGlobal(updateData) { @@ -34422,6 +34454,7 @@ class Psbt { return this; } updateInput(inputIndex, updateData) { + if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript); this.data.updateInput(inputIndex, updateData); if (updateData.nonWitnessUtxo) { addNonWitnessTxCache( @@ -34522,6 +34555,11 @@ function canFinalize(input, script, scriptType) { return false; } } +function checkCache(cache) { + if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) { + throw new Error('Not BIP174 compliant, can not export'); + } +} function hasSigs(neededSigs, partialSig, pubkeys) { if (!partialSig) return false; let sigs; @@ -34557,6 +34595,14 @@ const isP2PK = isPaymentFactory(payments.p2pk); const isP2PKH = isPaymentFactory(payments.p2pkh); const isP2WPKH = isPaymentFactory(payments.p2wpkh); const isP2WSHScript = isPaymentFactory(payments.p2wsh); +const isP2SHScript = isPaymentFactory(payments.p2sh); +function bip32DerivationIsMine(root) { + return d => { + if (!d.masterFingerprint.equals(root.fingerprint)) return false; + if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false; + return true; + }; +} function check32Bit(num) { if ( typeof num !== 'number' || @@ -34626,15 +34672,8 @@ function checkPartialSigSighashes(input) { } }); } -function checkScriptForPubkey(pubkey, script$1, action) { - const pubkeyHash = crypto$2.hash160(pubkey); - const decompiled = script.decompile(script$1); - if (decompiled === null) throw new Error('Unknown script error'); - const hasKey = decompiled.some(element => { - if (typeof element === 'number') return false; - return element.equals(pubkey) || element.equals(pubkeyHash); - }); - if (!hasKey) { +function checkScriptForPubkey(pubkey, script, action) { + if (!pubkeyInScript(pubkey, script)) { throw new Error( `Can not ${action} for this input with the key ${pubkey.toString('hex')}`, ); @@ -34666,13 +34705,13 @@ function checkTxInputCache(cache, input) { cache.__TX_IN_CACHE[key] = 1; } function scriptCheckerFactory(payment, paymentScriptName) { - return (inputIndex, scriptPubKey, redeemScript) => { + return (inputIndex, scriptPubKey, redeemScript, ioType) => { const redeemScriptOutput = payment({ redeem: { output: redeemScript }, }).output; if (!scriptPubKey.equals(redeemScriptOutput)) { throw new Error( - `${paymentScriptName} for input #${inputIndex} doesn't match the scriptPubKey in the prevout`, + `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`, ); } }; @@ -34759,6 +34798,7 @@ function getHashAndSighashType( inputIndex, input, cache, + false, sighashTypes, ); checkScriptForPubkey(pubkey, script, 'sign'); @@ -34767,7 +34807,7 @@ function getHashAndSighashType( sighashType, }; } -function getHashForSig(inputIndex, input, cache, sighashTypes) { +function getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) { const unsignedTx = cache.__TX; const sighashType = input.sighashType || transaction.Transaction.SIGHASH_ALL; @@ -34779,7 +34819,7 @@ function getHashForSig(inputIndex, input, cache, sighashTypes) { ); } let hash; - let script; + let prevout; if (input.nonWitnessUtxo) { const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache( cache, @@ -34795,83 +34835,64 @@ function getHashForSig(inputIndex, input, cache, sighashTypes) { ); } const prevoutIndex = unsignedTx.ins[inputIndex].index; - const prevout = nonWitnessUtxoTx.outs[prevoutIndex]; - if (input.redeemScript) { - // If a redeemScript is provided, the scriptPubKey must be for that redeemScript - checkRedeemScript(inputIndex, prevout.script, input.redeemScript); - script = input.redeemScript; - } else { - script = prevout.script; - } - if (isP2WSHScript(script)) { - if (!input.witnessScript) - throw new Error('Segwit input needs witnessScript if not P2WPKH'); - checkWitnessScript(inputIndex, script, input.witnessScript); - hash = unsignedTx.hashForWitnessV0( - inputIndex, - input.witnessScript, - prevout.value, - sighashType, - ); - script = input.witnessScript; - } else if (isP2WPKH(script)) { - // P2WPKH uses the P2PKH template for prevoutScript when signing - const signingScript = payments.p2pkh({ hash: script.slice(2) }).output; - hash = unsignedTx.hashForWitnessV0( - inputIndex, - signingScript, - prevout.value, - sighashType, - ); - } else { - hash = unsignedTx.hashForSignature(inputIndex, script, sighashType); - } + prevout = nonWitnessUtxoTx.outs[prevoutIndex]; } else if (input.witnessUtxo) { - let _script; // so we don't shadow the `let script` above - if (input.redeemScript) { - // If a redeemScript is provided, the scriptPubKey must be for that redeemScript - checkRedeemScript( - inputIndex, - input.witnessUtxo.script, - input.redeemScript, - ); - _script = input.redeemScript; - } else { - _script = input.witnessUtxo.script; - } - if (isP2WPKH(_script)) { - // P2WPKH uses the P2PKH template for prevoutScript when signing - const signingScript = payments.p2pkh({ hash: _script.slice(2) }).output; - hash = unsignedTx.hashForWitnessV0( - inputIndex, - signingScript, - input.witnessUtxo.value, - sighashType, - ); - script = _script; - } else if (isP2WSHScript(_script)) { - if (!input.witnessScript) - throw new Error('Segwit input needs witnessScript if not P2WPKH'); - checkWitnessScript(inputIndex, _script, input.witnessScript); - hash = unsignedTx.hashForWitnessV0( - inputIndex, - input.witnessScript, - input.witnessUtxo.value, - sighashType, - ); - // want to make sure the script we return is the actual meaningful script - script = input.witnessScript; - } else { + prevout = input.witnessUtxo; + } else { + throw new Error('Need a Utxo input item for signing'); + } + const { meaningfulScript, type } = getMeaningfulScript( + prevout.script, + inputIndex, + 'input', + input.redeemScript, + input.witnessScript, + ); + if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) { + hash = unsignedTx.hashForWitnessV0( + inputIndex, + meaningfulScript, + prevout.value, + sighashType, + ); + } else if (isP2WPKH(meaningfulScript)) { + // P2WPKH uses the P2PKH template for prevoutScript when signing + const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) }) + .output; + hash = unsignedTx.hashForWitnessV0( + inputIndex, + signingScript, + prevout.value, + sighashType, + ); + } else { + // non-segwit + if ( + input.nonWitnessUtxo === undefined && + cache.__UNSAFE_SIGN_NONSEGWIT === false + ) throw new Error( `Input #${inputIndex} has witnessUtxo but non-segwit script: ` + - `${_script.toString('hex')}`, + `${meaningfulScript.toString('hex')}`, ); - } - } else { - throw new Error('Need a Utxo input item for signing'); + if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false) + console.warn( + 'Warning: Signing non-segwit inputs without the full parent transaction ' + + 'means there is a chance that a miner could feed you incorrect information ' + + 'to trick you into paying large fees. This behavior is the same as the old ' + + 'TransactionBuilder class when signing non-segwit scripts. You are not ' + + 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' + + 'BIP174 compliant.\n*********************\nPROCEED WITH CAUTION!\n' + + '*********************', + ); + hash = unsignedTx.hashForSignature( + inputIndex, + meaningfulScript, + sighashType, + ); } return { - script, + script: meaningfulScript, sighashType, hash, }; @@ -35123,6 +35144,129 @@ function nonWitnessUtxoTxFromCache(cache, input, inputIndex) { } return c[inputIndex]; } +function getScriptFromUtxo(inputIndex, input, cache) { + if (input.witnessUtxo !== undefined) { + return input.witnessUtxo.script; + } else if (input.nonWitnessUtxo !== undefined) { + const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache( + cache, + input, + inputIndex, + ); + return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script; + } else { + throw new Error("Can't find pubkey in input without Utxo data"); + } +} +function pubkeyInInput(pubkey, input, inputIndex, cache) { + const script = getScriptFromUtxo(inputIndex, input, cache); + const { meaningfulScript } = getMeaningfulScript( + script, + inputIndex, + 'input', + input.redeemScript, + input.witnessScript, + ); + return pubkeyInScript(pubkey, meaningfulScript); +} +function pubkeyInOutput(pubkey, output, outputIndex, cache) { + const script = cache.__TX.outs[outputIndex].script; + const { meaningfulScript } = getMeaningfulScript( + script, + outputIndex, + 'output', + output.redeemScript, + output.witnessScript, + ); + return pubkeyInScript(pubkey, meaningfulScript); +} +function redeemFromFinalScriptSig(finalScript) { + if (!finalScript) return; + const decomp = script.decompile(finalScript); + if (!decomp) return; + const lastItem = decomp[decomp.length - 1]; + if ( + !Buffer.isBuffer(lastItem) || + isPubkeyLike(lastItem) || + isSigLike(lastItem) + ) + return; + const sDecomp = script.decompile(lastItem); + if (!sDecomp) return; + return lastItem; +} +function redeemFromFinalWitnessScript(finalScript) { + if (!finalScript) return; + const decomp = scriptWitnessToWitnessStack(finalScript); + const lastItem = decomp[decomp.length - 1]; + if (isPubkeyLike(lastItem)) return; + const sDecomp = script.decompile(lastItem); + if (!sDecomp) return; + return lastItem; +} +function isPubkeyLike(buf) { + return buf.length === 33 && script.isCanonicalPubKey(buf); +} +function isSigLike(buf) { + return script.isCanonicalScriptSignature(buf); +} +function getMeaningfulScript( + script, + index, + ioType, + redeemScript, + witnessScript, +) { + const isP2SH = isP2SHScript(script); + const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript); + const isP2WSH = isP2WSHScript(script); + if (isP2SH && redeemScript === undefined) + throw new Error('scriptPubkey is P2SH but redeemScript missing'); + if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined) + throw new Error( + 'scriptPubkey or redeemScript is P2WSH but witnessScript missing', + ); + let meaningfulScript; + if (isP2SHP2WSH) { + meaningfulScript = witnessScript; + checkRedeemScript(index, script, redeemScript, ioType); + checkWitnessScript(index, redeemScript, witnessScript, ioType); + checkInvalidP2WSH(meaningfulScript); + } else if (isP2WSH) { + meaningfulScript = witnessScript; + checkWitnessScript(index, script, witnessScript, ioType); + checkInvalidP2WSH(meaningfulScript); + } else if (isP2SH) { + meaningfulScript = redeemScript; + checkRedeemScript(index, script, redeemScript, ioType); + } else { + meaningfulScript = script; + } + return { + meaningfulScript, + type: isP2SHP2WSH + ? 'p2sh-p2wsh' + : isP2SH + ? 'p2sh' + : isP2WSH + ? 'p2wsh' + : 'raw', + }; +} +function checkInvalidP2WSH(script) { + if (isP2WPKH(script) || isP2SHScript(script)) { + throw new Error('P2WPKH or P2SH can not be contained within P2WSH'); + } +} +function pubkeyInScript(pubkey, script$1) { + const pubkeyHash = crypto$2.hash160(pubkey); + const decompiled = script.decompile(script$1); + if (decompiled === null) throw new Error('Unknown script error'); + return decompiled.some(element => { + if (typeof element === 'number') return false; + return element.equals(pubkey) || element.equals(pubkeyHash); + }); +} function classifyScript(script) { if (isP2WPKH(script)) return 'witnesspubkeyhash'; if (isP2PKH(script)) return 'pubkeyhash'; diff --git a/packages/asgardex-bitcoin/lib/index.esm.js.map b/packages/asgardex-bitcoin/lib/index.esm.js.map index 463fc627..bc3e459f 100644 --- a/packages/asgardex-bitcoin/lib/index.esm.js.map +++ b/packages/asgardex-bitcoin/lib/index.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"index.esm.js","sources":["../node_modules/inherits/inherits_browser.js","../node_modules/safe-buffer/index.js","../node_modules/hash-base/index.js","../node_modules/md5.js/index.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/cipher-base/index.js","../node_modules/create-hash/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/browser.js","../node_modules/randombytes/browser.js","../node_modules/bip39/src/_wordlists.js","../node_modules/bip39/src/index.js","../node_modules/create-hmac/legacy.js","../node_modules/create-hmac/browser.js","../node_modules/bip32/src/crypto.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/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/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/tiny-secp256k1/rfc6979.js","../node_modules/tiny-secp256k1/js.js","../node_modules/typeforce/native.js","../node_modules/typeforce/errors.js","../node_modules/typeforce/extra.js","../node_modules/typeforce/index.js","../node_modules/wif/index.js","../node_modules/bip32/src/bip32.js","../node_modules/bip32/src/index.js","../node_modules/bitcoinjs-lib/src/networks.js","../node_modules/bitcoinjs-lib/src/script_number.js","../node_modules/bitcoinjs-lib/src/types.js","../node_modules/bip66/index.js","../node_modules/bitcoinjs-lib/src/script_signature.js","../node_modules/pushdata-bitcoin/index.js","../node_modules/bitcoin-ops/map.js","../node_modules/bitcoinjs-lib/src/script.js","../node_modules/bitcoinjs-lib/src/payments/lazy.js","../node_modules/bitcoinjs-lib/src/payments/embed.js","../node_modules/bitcoinjs-lib/src/payments/p2ms.js","../node_modules/bitcoinjs-lib/src/payments/p2pk.js","../node_modules/bitcoinjs-lib/src/crypto.js","../node_modules/bitcoinjs-lib/src/payments/p2pkh.js","../node_modules/bitcoinjs-lib/src/payments/p2sh.js","../node_modules/bech32/index.js","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.js","../node_modules/bitcoinjs-lib/src/payments/p2wsh.js","../node_modules/bitcoinjs-lib/src/payments/index.js","../node_modules/bitcoinjs-lib/src/address.js","../node_modules/bitcoinjs-lib/src/ecpair.js","../node_modules/varuint-bitcoin/index.js","../node_modules/bitcoinjs-lib/src/bufferutils.js","../node_modules/bitcoinjs-lib/src/transaction.js","../node_modules/merkle-lib/fastRoot.js","../node_modules/bitcoinjs-lib/src/block.js","../node_modules/bip174/src/lib/typeFields.js","../node_modules/bip174/src/lib/converter/global/globalXpub.js","../node_modules/bip174/src/lib/converter/global/unsignedTx.js","../node_modules/bip174/src/lib/converter/input/finalScriptSig.js","../node_modules/bip174/src/lib/converter/input/finalScriptWitness.js","../node_modules/bip174/src/lib/converter/input/nonWitnessUtxo.js","../node_modules/bip174/src/lib/converter/input/partialSig.js","../node_modules/bip174/src/lib/converter/input/porCommitment.js","../node_modules/bip174/src/lib/converter/input/sighashType.js","../node_modules/bip174/src/lib/converter/varint.js","../node_modules/bip174/src/lib/converter/tools.js","../node_modules/bip174/src/lib/converter/input/witnessUtxo.js","../node_modules/bip174/src/lib/converter/shared/bip32Derivation.js","../node_modules/bip174/src/lib/converter/shared/checkPubkey.js","../node_modules/bip174/src/lib/converter/shared/redeemScript.js","../node_modules/bip174/src/lib/converter/shared/witnessScript.js","../node_modules/bip174/src/lib/converter/index.js","../node_modules/bip174/src/lib/parser/fromBuffer.js","../node_modules/bip174/src/lib/parser/toBuffer.js","../node_modules/bip174/src/lib/parser/index.js","../node_modules/bip174/src/lib/combiner/index.js","../node_modules/bip174/src/lib/utils.js","../node_modules/bip174/src/lib/psbt.js","../node_modules/bitcoinjs-lib/src/psbt.js","../node_modules/bitcoinjs-lib/src/templates/multisig/input.js","../node_modules/bitcoinjs-lib/src/templates/multisig/output.js","../node_modules/bitcoinjs-lib/src/templates/multisig/index.js","../node_modules/bitcoinjs-lib/src/templates/nulldata.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/index.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/output.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/index.js","../node_modules/bitcoinjs-lib/src/classify.js","../node_modules/bitcoinjs-lib/src/transaction_builder.js","../node_modules/bitcoinjs-lib/src/index.js"],"sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\nvar 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","'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","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 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","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction lpad(str, padString, length) {\n while (str.length < length)\n str = padString + str;\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map(x => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary([...hash]).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return new Promise((resolve, reject) => {\n try {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n pbkdf2_1.pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', (err, data) => {\n if (err)\n return reject(err);\n else\n return resolve(data);\n });\n }\n catch (error) {\n return reject(error);\n }\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = (mnemonic || '').normalize('NFKD').split(' ');\n if (words.length % 3 !== 0)\n throw new Error(INVALID_MNEMONIC);\n // convert word indices to 11 bit binary strings\n const bits = words\n .map(word => {\n const index = wordlist.indexOf(word);\n if (index === -1)\n throw new Error(INVALID_MNEMONIC);\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length > 32)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length % 4 !== 0)\n throw new Error(INVALID_ENTROPY);\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits)\n throw new Error(INVALID_CHECKSUM);\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy))\n entropy = Buffer.from(entropy, 'hex');\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length > 32)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length % 4 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n const entropyBits = bytesToBinary([...entropy]);\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map(binary => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result)\n DEFAULT_WORDLIST = result;\n else\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST)\n throw new Error('No Default Wordlist set');\n return Object.keys(_wordlists_1.wordlists).filter(lang => {\n if (lang === 'JA' || lang === 'EN')\n return false;\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","'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 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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","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","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","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 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\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 var 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 var 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 for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\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 (var j = 0; j < repr.length; j++) {\n var 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 k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\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 for (var i = 0; i < len; i++) {\n var 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 (var 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 (var 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 (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var 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 (var j = 0; j < len; j++) {\n var z = tmp[j];\n var 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 (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var 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 (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var 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 var h = this.z.redSqr();\n // J = F - 2 * H\n var 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 var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var 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 return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\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 + 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 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 (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\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(curves.hasOwnProperty(options), '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 do {\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 } while (true);\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; true; 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\n if (!this.curve._maxwellTrick) {\n var 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 var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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 var 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","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 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) {\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 // 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","var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n","var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n","var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n","// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n","var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n","var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n","'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","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.alloc(buffer.length);\n buffer.copy(clone);\n return buffer;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, 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 result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\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++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n","// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n];\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)+$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData &&\n !!newData &&\n currentData.witnessUtxo === undefined &&\n currentData.nonWitnessUtxo === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\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 Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData &&\n !!newData &&\n currentData.witnessUtxo === undefined &&\n currentData.nonWitnessUtxo === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const pubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.outputs = outputs;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (\n input.nonWitnessUtxo !== undefined ||\n input.witnessUtxo !== undefined\n ) {\n throw new Error(\n 'Format Error: Input has multiple [NON_]WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (\n input.nonWitnessUtxo !== undefined ||\n input.witnessUtxo !== undefined\n ) {\n throw new Error(\n 'Format Error: Input has multiple [NON_]WITNESS_UTXO',\n );\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n","'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (!input.nonWitnessUtxo !== !input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForInput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n return this.data.toBuffer();\n }\n toHex() {\n return this.data.toHex();\n }\n toBase64() {\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n const hasKey = decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n if (!hasKey) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for input #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let script;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n const prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n if (input.redeemScript) {\n // If a redeemScript is provided, the scriptPubKey must be for that redeemScript\n checkRedeemScript(inputIndex, prevout.script, input.redeemScript);\n script = input.redeemScript;\n } else {\n script = prevout.script;\n }\n if (isP2WSHScript(script)) {\n if (!input.witnessScript)\n throw new Error('Segwit input needs witnessScript if not P2WPKH');\n checkWitnessScript(inputIndex, script, input.witnessScript);\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n input.witnessScript,\n prevout.value,\n sighashType,\n );\n script = input.witnessScript;\n } else if (isP2WPKH(script)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: script.slice(2) }).output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n hash = unsignedTx.hashForSignature(inputIndex, script, sighashType);\n }\n } else if (input.witnessUtxo) {\n let _script; // so we don't shadow the `let script` above\n if (input.redeemScript) {\n // If a redeemScript is provided, the scriptPubKey must be for that redeemScript\n checkRedeemScript(\n inputIndex,\n input.witnessUtxo.script,\n input.redeemScript,\n );\n _script = input.redeemScript;\n } else {\n _script = input.witnessUtxo.script;\n }\n if (isP2WPKH(_script)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: _script.slice(2) }).output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n input.witnessUtxo.value,\n sighashType,\n );\n script = _script;\n } else if (isP2WSHScript(_script)) {\n if (!input.witnessScript)\n throw new Error('Segwit input needs witnessScript if not P2WPKH');\n checkWitnessScript(inputIndex, _script, input.witnessScript);\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n input.witnessScript,\n input.witnessUtxo.value,\n sighashType,\n );\n // want to make sure the script we return is the actual meaningful script\n script = input.witnessScript;\n } else {\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${_script.toString('hex')}`,\n );\n }\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n return {\n script,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n","'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n","'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n","'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n","'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n","'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n","'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n","'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n"],"names":["Buffer","require$$0","require$$1","inherits","HashBase","ARRAY16","rotl","Hash","K","W","rotl5","rotl30","ft","Sha256","maj","sigma0","sigma1","SHA512","require$$2","require$$3","require$$4","require$$5","Transform","Base","MD5","RIPEMD160","sha","checkParameters","defaultEncoding","global","sync","_wordlists_1","createHash","pbkdf2_1","randomBytes","ZEROS","Hmac","Legacy","createHmac","basex","base58","bs58checkBase","this","minAssert","minUtils","BN","crypto","utils","assert","Point","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sum32_3","r","curve","hash","curves","KeyPair","HmacDRBG","rand","Signature","signature","cachedProperty","parseBytes","require$$6","EC","secp256k1","deterministicGenerateK","native","_Buffer","ERRORS","NATIVE","types","typeName","tfJSON","TfTypeError","TfPropertyTypeError","tfSubError","getValueTypeName","EXTRA","typeforce","ecc","bip32_1","decode","encode","OPS","pushdata","REVERSE_OPS","scriptNumber","scriptSignature","bscript","typef","networks_1","bcrypto","ALPHABET","embed_1","NETWORKS","encodingLength","varuint","bufferutils_1","transaction_1","fastMerkleRoot","typeFields_1","tools_1","convert","parser_1","utils_1","combiner_1","bip174_1","psbt","address","address_1","script","ecpair_1","crypto_1","input","output","p2wsho","p2wpkho","p2pkh","p2ms","p2pk","witnessPubKeyHash","witnessScriptHash","pubKeyHash","scriptHash","script_1","pubKey","witnessCommitment","nullData","baddress","ECPair","bip32","block_1","psbt_1","transaction_builder_1"],"mappings":"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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,EAA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AAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;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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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KA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UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAA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AAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,I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,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,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EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAA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E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QA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Q,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,gEAAgE;AACxE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE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"} \ No newline at end of file +{"version":3,"file":"index.esm.js","sources":["../node_modules/inherits/inherits_browser.js","../node_modules/safe-buffer/index.js","../node_modules/hash-base/index.js","../node_modules/md5.js/index.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/cipher-base/index.js","../node_modules/create-hash/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/browser.js","../node_modules/randombytes/browser.js","../node_modules/bip39/src/_wordlists.js","../node_modules/bip39/src/index.js","../node_modules/create-hmac/legacy.js","../node_modules/create-hmac/browser.js","../node_modules/bip32/src/crypto.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/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/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/tiny-secp256k1/rfc6979.js","../node_modules/tiny-secp256k1/js.js","../node_modules/typeforce/native.js","../node_modules/typeforce/errors.js","../node_modules/typeforce/extra.js","../node_modules/typeforce/index.js","../node_modules/wif/index.js","../node_modules/bip32/src/bip32.js","../node_modules/bip32/src/index.js","../node_modules/bitcoinjs-lib/src/networks.js","../node_modules/bitcoinjs-lib/src/script_number.js","../node_modules/bitcoinjs-lib/src/types.js","../node_modules/bip66/index.js","../node_modules/bitcoinjs-lib/src/script_signature.js","../node_modules/pushdata-bitcoin/index.js","../node_modules/bitcoin-ops/map.js","../node_modules/bitcoinjs-lib/src/script.js","../node_modules/bitcoinjs-lib/src/payments/lazy.js","../node_modules/bitcoinjs-lib/src/payments/embed.js","../node_modules/bitcoinjs-lib/src/payments/p2ms.js","../node_modules/bitcoinjs-lib/src/payments/p2pk.js","../node_modules/bitcoinjs-lib/src/crypto.js","../node_modules/bitcoinjs-lib/src/payments/p2pkh.js","../node_modules/bitcoinjs-lib/src/payments/p2sh.js","../node_modules/bech32/index.js","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.js","../node_modules/bitcoinjs-lib/src/payments/p2wsh.js","../node_modules/bitcoinjs-lib/src/payments/index.js","../node_modules/bitcoinjs-lib/src/address.js","../node_modules/bitcoinjs-lib/src/ecpair.js","../node_modules/varuint-bitcoin/index.js","../node_modules/bitcoinjs-lib/src/bufferutils.js","../node_modules/bitcoinjs-lib/src/transaction.js","../node_modules/merkle-lib/fastRoot.js","../node_modules/bitcoinjs-lib/src/block.js","../node_modules/bip174/src/lib/typeFields.js","../node_modules/bip174/src/lib/converter/global/globalXpub.js","../node_modules/bip174/src/lib/converter/global/unsignedTx.js","../node_modules/bip174/src/lib/converter/input/finalScriptSig.js","../node_modules/bip174/src/lib/converter/input/finalScriptWitness.js","../node_modules/bip174/src/lib/converter/input/nonWitnessUtxo.js","../node_modules/bip174/src/lib/converter/input/partialSig.js","../node_modules/bip174/src/lib/converter/input/porCommitment.js","../node_modules/bip174/src/lib/converter/input/sighashType.js","../node_modules/bip174/src/lib/converter/varint.js","../node_modules/bip174/src/lib/converter/tools.js","../node_modules/bip174/src/lib/converter/input/witnessUtxo.js","../node_modules/bip174/src/lib/converter/shared/bip32Derivation.js","../node_modules/bip174/src/lib/converter/shared/checkPubkey.js","../node_modules/bip174/src/lib/converter/shared/redeemScript.js","../node_modules/bip174/src/lib/converter/shared/witnessScript.js","../node_modules/bip174/src/lib/converter/index.js","../node_modules/bip174/src/lib/parser/fromBuffer.js","../node_modules/bip174/src/lib/parser/toBuffer.js","../node_modules/bip174/src/lib/parser/index.js","../node_modules/bip174/src/lib/combiner/index.js","../node_modules/bip174/src/lib/utils.js","../node_modules/bip174/src/lib/psbt.js","../node_modules/bitcoinjs-lib/src/psbt.js","../node_modules/bitcoinjs-lib/src/templates/multisig/input.js","../node_modules/bitcoinjs-lib/src/templates/multisig/output.js","../node_modules/bitcoinjs-lib/src/templates/multisig/index.js","../node_modules/bitcoinjs-lib/src/templates/nulldata.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/index.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/output.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/index.js","../node_modules/bitcoinjs-lib/src/classify.js","../node_modules/bitcoinjs-lib/src/transaction_builder.js","../node_modules/bitcoinjs-lib/src/index.js"],"sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\nvar 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","'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","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 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","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction lpad(str, padString, length) {\n while (str.length < length)\n str = padString + str;\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map(x => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary([...hash]).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return new Promise((resolve, reject) => {\n try {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n pbkdf2_1.pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', (err, data) => {\n if (err)\n return reject(err);\n else\n return resolve(data);\n });\n }\n catch (error) {\n return reject(error);\n }\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = (mnemonic || '').normalize('NFKD').split(' ');\n if (words.length % 3 !== 0)\n throw new Error(INVALID_MNEMONIC);\n // convert word indices to 11 bit binary strings\n const bits = words\n .map(word => {\n const index = wordlist.indexOf(word);\n if (index === -1)\n throw new Error(INVALID_MNEMONIC);\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length > 32)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length % 4 !== 0)\n throw new Error(INVALID_ENTROPY);\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits)\n throw new Error(INVALID_CHECKSUM);\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy))\n entropy = Buffer.from(entropy, 'hex');\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length > 32)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length % 4 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n const entropyBits = bytesToBinary([...entropy]);\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map(binary => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result)\n DEFAULT_WORDLIST = result;\n else\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST)\n throw new Error('No Default Wordlist set');\n return Object.keys(_wordlists_1.wordlists).filter(lang => {\n if (lang === 'JA' || lang === 'EN')\n return false;\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","'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 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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","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","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","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 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\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 var 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 var 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 for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\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 (var j = 0; j < repr.length; j++) {\n var 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 k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\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 for (var i = 0; i < len; i++) {\n var 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 (var 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 (var 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 (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var 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 (var j = 0; j < len; j++) {\n var z = tmp[j];\n var 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 (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var 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 (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var 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 var h = this.z.redSqr();\n // J = F - 2 * H\n var 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 var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var 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 return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\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 + 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 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 (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\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(curves.hasOwnProperty(options), '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 do {\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 } while (true);\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; true; 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\n if (!this.curve._maxwellTrick) {\n var 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 var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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 var 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","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 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) {\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 // 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","var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n","var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n","var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n","// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n","var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n","var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n","'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","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.allocUnsafe(buffer.length);\n buffer.copy(clone);\n return clone;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, 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 result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\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++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n","// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n];\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)+$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\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 Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.witnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const pubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.outputs = outputs;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (input.nonWitnessUtxo !== undefined) {\n throw new Error(\n 'Format Error: Input has multiple NON_WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (input.witnessUtxo !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_UTXO');\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n","'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (input.nonWitnessUtxo || input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForInput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n // Old TransactionBuilder behavior was to not confirm input values\n // before signing. Even though we highly encourage people to get\n // the full parent transaction to verify values, the ability to\n // sign non-segwit inputs without the full transaction was often\n // requested. So the only way to activate is to use @ts-ignore.\n // We will disable exporting the Psbt when unsafe sign is active.\n // because it is not BIP174 compliant.\n __UNSAFE_SIGN_NONSEGWIT: false,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript);\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n getInputType(inputIndex) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const script = getScriptFromUtxo(inputIndex, input, this.__CACHE);\n const result = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig),\n input.witnessScript ||\n redeemFromFinalWitnessScript(input.finalScriptWitness),\n );\n const type = result.type === 'raw' ? '' : result.type + '-';\n const mainType = classifyScript(result.meaningfulScript);\n return type + mainType;\n }\n inputHasPubkey(inputIndex, pubkey) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE);\n }\n inputHasHDKey(inputIndex, root) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine)\n );\n }\n outputHasPubkey(outputIndex, pubkey) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE);\n }\n outputHasHDKey(outputIndex, root) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine)\n );\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n true,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n checkCache(this.__CACHE);\n return this.data.toBuffer();\n }\n toHex() {\n checkCache(this.__CACHE);\n return this.data.toHex();\n }\n toBase64() {\n checkCache(this.__CACHE);\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript);\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction checkCache(cache) {\n if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) {\n throw new Error('Not BIP174 compliant, can not export');\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nconst isP2SHScript = isPaymentFactory(payments.p2sh);\nfunction bip32DerivationIsMine(root) {\n return d => {\n if (!d.masterFingerprint.equals(root.fingerprint)) return false;\n if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false;\n return true;\n };\n}\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n if (!pubkeyInScript(pubkey, script)) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript, ioType) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n false,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let prevout;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n } else if (input.witnessUtxo) {\n prevout = input.witnessUtxo;\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n const { meaningfulScript, type } = getMeaningfulScript(\n prevout.script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) {\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n meaningfulScript,\n prevout.value,\n sighashType,\n );\n } else if (isP2WPKH(meaningfulScript)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) })\n .output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n // non-segwit\n if (\n input.nonWitnessUtxo === undefined &&\n cache.__UNSAFE_SIGN_NONSEGWIT === false\n )\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${meaningfulScript.toString('hex')}`,\n );\n if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)\n console.warn(\n 'Warning: Signing non-segwit inputs without the full parent transaction ' +\n 'means there is a chance that a miner could feed you incorrect information ' +\n 'to trick you into paying large fees. This behavior is the same as the old ' +\n 'TransactionBuilder class when signing non-segwit scripts. You are not ' +\n 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +\n 'BIP174 compliant.\\n*********************\\nPROCEED WITH CAUTION!\\n' +\n '*********************',\n );\n hash = unsignedTx.hashForSignature(\n inputIndex,\n meaningfulScript,\n sighashType,\n );\n }\n return {\n script: meaningfulScript,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction getScriptFromUtxo(inputIndex, input, cache) {\n if (input.witnessUtxo !== undefined) {\n return input.witnessUtxo.script;\n } else if (input.nonWitnessUtxo !== undefined) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script;\n } else {\n throw new Error(\"Can't find pubkey in input without Utxo data\");\n }\n}\nfunction pubkeyInInput(pubkey, input, inputIndex, cache) {\n const script = getScriptFromUtxo(inputIndex, input, cache);\n const { meaningfulScript } = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction pubkeyInOutput(pubkey, output, outputIndex, cache) {\n const script = cache.__TX.outs[outputIndex].script;\n const { meaningfulScript } = getMeaningfulScript(\n script,\n outputIndex,\n 'output',\n output.redeemScript,\n output.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction redeemFromFinalScriptSig(finalScript) {\n if (!finalScript) return;\n const decomp = bscript.decompile(finalScript);\n if (!decomp) return;\n const lastItem = decomp[decomp.length - 1];\n if (\n !Buffer.isBuffer(lastItem) ||\n isPubkeyLike(lastItem) ||\n isSigLike(lastItem)\n )\n return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction redeemFromFinalWitnessScript(finalScript) {\n if (!finalScript) return;\n const decomp = scriptWitnessToWitnessStack(finalScript);\n const lastItem = decomp[decomp.length - 1];\n if (isPubkeyLike(lastItem)) return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction isPubkeyLike(buf) {\n return buf.length === 33 && bscript.isCanonicalPubKey(buf);\n}\nfunction isSigLike(buf) {\n return bscript.isCanonicalScriptSignature(buf);\n}\nfunction getMeaningfulScript(\n script,\n index,\n ioType,\n redeemScript,\n witnessScript,\n) {\n const isP2SH = isP2SHScript(script);\n const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript);\n const isP2WSH = isP2WSHScript(script);\n if (isP2SH && redeemScript === undefined)\n throw new Error('scriptPubkey is P2SH but redeemScript missing');\n if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined)\n throw new Error(\n 'scriptPubkey or redeemScript is P2WSH but witnessScript missing',\n );\n let meaningfulScript;\n if (isP2SHP2WSH) {\n meaningfulScript = witnessScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n checkWitnessScript(index, redeemScript, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2WSH) {\n meaningfulScript = witnessScript;\n checkWitnessScript(index, script, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2SH) {\n meaningfulScript = redeemScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n } else {\n meaningfulScript = script;\n }\n return {\n meaningfulScript,\n type: isP2SHP2WSH\n ? 'p2sh-p2wsh'\n : isP2SH\n ? 'p2sh'\n : isP2WSH\n ? 'p2wsh'\n : 'raw',\n };\n}\nfunction checkInvalidP2WSH(script) {\n if (isP2WPKH(script) || isP2SHScript(script)) {\n throw new Error('P2WPKH or P2SH can not be contained within P2WSH');\n }\n}\nfunction pubkeyInScript(pubkey, script) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n return decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n","'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n","'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n","'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n","'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n","'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n","'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n","'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n"],"names":["Buffer","require$$0","require$$1","inherits","HashBase","ARRAY16","rotl","Hash","K","W","rotl5","rotl30","ft","Sha256","maj","sigma0","sigma1","SHA512","require$$2","require$$3","require$$4","require$$5","Transform","Base","MD5","RIPEMD160","sha","checkParameters","defaultEncoding","global","sync","_wordlists_1","createHash","pbkdf2_1","randomBytes","ZEROS","Hmac","Legacy","createHmac","basex","base58","bs58checkBase","this","minAssert","minUtils","BN","crypto","utils","assert","Point","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sum32_3","r","curve","hash","curves","KeyPair","HmacDRBG","rand","Signature","signature","cachedProperty","parseBytes","require$$6","EC","secp256k1","deterministicGenerateK","native","_Buffer","ERRORS","NATIVE","types","typeName","tfJSON","TfTypeError","TfPropertyTypeError","tfSubError","getValueTypeName","EXTRA","typeforce","ecc","bip32_1","decode","encode","OPS","pushdata","REVERSE_OPS","scriptNumber","scriptSignature","bscript","typef","networks_1","bcrypto","ALPHABET","embed_1","NETWORKS","encodingLength","varuint","bufferutils_1","transaction_1","fastMerkleRoot","typeFields_1","tools_1","convert","parser_1","utils_1","combiner_1","bip174_1","psbt","address","address_1","script","ecpair_1","crypto_1","input","output","p2wsho","p2wpkho","p2pkh","p2ms","p2pk","witnessPubKeyHash","witnessScriptHash","pubKeyHash","scriptHash","script_1","pubKey","witnessCommitment","nullData","baddress","ECPair","bip32","block_1","psbt_1","transaction_builder_1"],"mappings":"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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,EAA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AAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;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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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KA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UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA;AACA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,iBAAiB,GAAG,SAAS,CAAC;AAC9B,IAAI,QAAQ,CAAC;AACb,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAA8C,CAAC;AACjF,IAAI,SAAS,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AAC5C,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAA+C,CAAC;AAClF,IAAI,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AAC7C,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAkC,CAAC;AACrE,IAAI,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;AAChC,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAkC,CAAC;AACrE,IAAI,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;AAChC,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAmC,CAAC;AACtE,IAAI,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;AACjC,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAmC,CAAC;AACtE,IAAI,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;AACjC,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAoC,CAAC;AACvE,IAAI,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClC,IAAI,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC;AAC5B,CAAC;AACD,OAAO,GAAG,EAAE,GAAG;AACf,IAAI;AACJ,IAAI,gBAAgB,GAAG,QAAQ,GAAG,UAAmC,CAAC;AACtE,IAAI,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;AACjC,IAAI,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC;AAC5B,CAAC;AACD,OAAO,GAAG,EAAE;;;;;;;;ACjDZ,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpB;AACP;AACQ;AACE;AAC7C,IAAI,gBAAgB,GAAGE,UAAY,CAAC,QAAQ,CAAC;AAC7C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,iBAAiB,GAAG,4DAA4D;AACtF,IAAI,sDAAsD,CAAC;AAC3D,SAAS,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACtC,IAAI,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AAC9B,QAAQ,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;AAC9B,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AACD,SAAS,kBAAkB,CAAC,aAAa,EAAE;AAC3C,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB,IAAI,MAAM,IAAI,GAAGC,OAAU,CAAC,QAAQ,CAAC;AACrC,SAAS,MAAM,CAAC,aAAa,CAAC;AAC9B,SAAS,MAAM,EAAE,CAAC;AAClB,IAAI,OAAO,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AACD,SAAS,IAAI,CAAC,QAAQ,EAAE;AACxB,IAAI,OAAO,UAAU,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AACD,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAChD,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACnF,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACrF,IAAI,OAAOC,SAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC;AACD,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,SAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC5C,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3F,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7F,YAAYA,SAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC3F,gBAAgB,IAAI,GAAG;AACvB,oBAAoB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,oBAAoB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD,sBAAsB,GAAG,cAAc,CAAC;AACxC,SAAS,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC/C,IAAI,QAAQ,GAAG,QAAQ,IAAI,gBAAgB,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC1C;AACA,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,SAAS,GAAG,CAAC,IAAI,IAAI;AACrB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC;AACxB,YAAY,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAChD,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAC3D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACpD,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAClD;AACA,IAAI,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC1E,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACzC,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACzC,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,IAAI,WAAW,KAAK,YAAY;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC1C,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AACD,yBAAyB,GAAG,iBAAiB,CAAC;AAC9C,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,QAAQ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,QAAQ,GAAG,QAAQ,IAAI,gBAAgB,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;AAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;AAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAChC,QAAQ,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;AAC7C,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrD,IAAI,MAAM,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI;AACvC,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,sCAAsC;AACjE,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD,yBAAyB,GAAG,iBAAiB,CAAC;AAC9C,SAAS,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;AACnD,IAAI,QAAQ,GAAG,QAAQ,IAAI,GAAG,CAAC;AAC/B,IAAI,IAAI,QAAQ,GAAG,EAAE,KAAK,CAAC;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;AAC7C,IAAI,GAAG,GAAG,GAAG,IAAIC,SAAW,CAAC;AAC7B,IAAI,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AACD,wBAAwB,GAAG,gBAAgB,CAAC;AAC5C,SAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC9C,IAAI,IAAI;AACR,QAAQ,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,wBAAwB,GAAG,gBAAgB,CAAC;AAC5C,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,IAAI,MAAM,MAAM,GAAGH,UAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,MAAM;AACd,QAAQ,gBAAgB,GAAG,MAAM,CAAC;AAClC;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;AACnF,CAAC;AACD,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,SAAS,kBAAkB,GAAG;AAC9B,IAAI,IAAI,CAAC,gBAAgB;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,IAAI,OAAO,MAAM,CAAC,IAAI,CAACA,UAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI;AAC9D,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;AAC1C,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,OAAOA,UAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AACD,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,IAAI,YAAY,GAAGA,UAAuB,CAAC;AAC3C,iBAAiB,GAAG,YAAY,CAAC,SAAS;;;;;;;;;;;;;;AC5J1C,IAAI/B,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C;AACiC;AACjC;AACA,IAAIkC,OAAK,GAAGnC,QAAM,CAAC,KAAK,CAAC,GAAG,EAAC;AAC7B,IAAI,SAAS,GAAG,GAAE;AAClB;AACA,SAASoC,MAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACzB,EAAEb,UAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAC;AAC3B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,GAAG,GAAGvB,QAAM,CAAC,IAAI,CAAC,GAAG,EAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAG;AACjB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAG;AACjB;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AAC9B,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,EAAC;AAClB,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AACrC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAEmC,OAAK,CAAC,EAAE,SAAS,EAAC;AAChD,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAGnC,QAAM,CAAC,WAAW,CAAC,SAAS,EAAC;AACvD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAGA,QAAM,CAAC,WAAW,CAAC,SAAS,EAAC;AACvD;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,EAAC;AACrB,CAAC;AACD;AACAG,gBAAQ,CAACiC,MAAI,EAAEb,UAAI,EAAC;AACpB;AACAa,MAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACzC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;AACvB,EAAC;AACD;AACAA,MAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAACpC,QAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC;AAC9C,EAAE,OAAO,IAAI,CAAC,IAAI,CAACA,QAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAC;AACD,UAAc,GAAGoC;;ACzCjB,IAAIpC,QAAM,GAAGC,UAAsB,CAAC,OAAM;AACN;AACA;AACpC;AAC2B;AAC3B;AACA,IAAIkC,OAAK,GAAGnC,QAAM,CAAC,KAAK,CAAC,GAAG,EAAC;AAC7B;AACA,SAASoC,MAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACzB,EAAEb,UAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAC;AAC3B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,GAAG,GAAGvB,QAAM,CAAC,IAAI,CAAC,GAAG,EAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,GAAE;AACnE;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAG;AACjB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAG;AACjB,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AAC9B,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,QAAQ,GAAG,IAAIyB,SAAS,EAAE,GAAGC,MAAG,CAAC,GAAG,EAAC;AAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAE;AACnC,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AACrC,IAAI,GAAG,GAAG1B,QAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAEmC,OAAK,CAAC,EAAE,SAAS,EAAC;AAChD,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAGnC,QAAM,CAAC,WAAW,CAAC,SAAS,EAAC;AACvD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAGA,QAAM,CAAC,WAAW,CAAC,SAAS,EAAC;AACvD;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,QAAQ,GAAG,IAAIyB,SAAS,EAAE,GAAGC,MAAG,CAAC,GAAG,EAAC;AAC5D,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAC;AACzB,CAAC;AACD;AACAvB,gBAAQ,CAACiC,MAAI,EAAEb,UAAI,EAAC;AACpB;AACAa,MAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACzC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAC;AACzB,EAAC;AACD;AACAA,MAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAE;AAC7B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAIX,SAAS,EAAE,GAAGC,MAAG,CAAC,IAAI,CAAC,IAAI,EAAC;AACtE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACnD,EAAC;AACD;AACA,aAAc,GAAG,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;AAChD,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,GAAE;AACzB,EAAE,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;AAC/C,IAAI,OAAO,IAAIU,MAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE;AACrB,IAAI,OAAO,IAAIC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,IAAID,MAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3B;;;AC5DA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpB;AACA;AAC1C,SAAS,OAAO,CAAC,MAAM,EAAE;AACzB,IAAI,MAAM,UAAU,GAAGJ,OAAU,CAAC,QAAQ,CAAC;AAC3C,SAAS,MAAM,CAAC,MAAM,CAAC;AACvB,SAAS,MAAM,EAAE,CAAC;AAClB,IAAI,IAAI;AACR,QAAQ,OAAOA,OAAU,CAAC,QAAQ,CAAC;AACnC,aAAa,MAAM,CAAC,UAAU,CAAC;AAC/B,aAAa,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG,EAAE;AAChB,QAAQ,OAAOA,OAAU,CAAC,WAAW,CAAC;AACtC,aAAa,MAAM,CAAC,UAAU,CAAC;AAC/B,aAAa,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,CAAC;AACD,eAAe,GAAG,OAAO,CAAC;AAC1B,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,IAAI,OAAOM,SAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;AACpC,SAAS,MAAM,CAAC,IAAI,CAAC;AACrB,SAAS,MAAM,EAAE,CAAC;AAClB,CAAC;AACD,kBAAkB,GAAG,UAAU;;;;;;;ACxB/B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAGrC,UAAsB,CAAC,OAAM;AAC3C,SAAS,IAAI,EAAE,QAAQ,EAAE;AACzB,EAAE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,EAAE;AAC1E,EAAE,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,EAAC;AACpC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAG;AACrB,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAC;AAC9B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAC;AAC5B,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE;AAC1E,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAC;AACpB,GAAG;AACH,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAM;AAC5B,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAC;AACjC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC;AAC7C,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAC;AAC9C,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,UAAU,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAC,EAAE;AAChG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,EAAE;AAC7E,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;AAC1C;AACA,IAAI,IAAI,MAAM,GAAG,EAAC;AAClB,IAAI,IAAI,MAAM,GAAG,EAAC;AAClB,IAAI,IAAI,MAAM,GAAG,EAAC;AAClB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,OAAM;AAC5B,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACpD,MAAM,MAAM,GAAE;AACd,MAAM,MAAM,GAAE;AACd,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,EAAC;AACpD,IAAI,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,EAAC;AAClC;AACA,IAAI,OAAO,MAAM,KAAK,IAAI,EAAE;AAC5B,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAC;AAChC;AACA,MAAM,IAAI,CAAC,GAAG,EAAC;AACf,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAC;AACvC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM,EAAC;AACvC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM,EAAC;AACpC,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC5D,MAAM,MAAM,GAAG,EAAC;AAChB,MAAM,MAAM,GAAE;AACd,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,OAAM;AAC3B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,GAAG,GAAE;AACX,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAC;AACnC,IAAI,OAAO,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,EAAE;AAClE,IAAI,OAAO,GAAG;AACd,GAAG;AACH,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,EAAE;AAC9E,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACxD,IAAI,IAAI,GAAG,GAAG,EAAC;AACf;AACA,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE;AACvC;AACA,IAAI,IAAI,MAAM,GAAG,EAAC;AAClB,IAAI,IAAI,MAAM,GAAG,EAAC;AAClB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;AACnC,MAAM,MAAM,GAAE;AACd,MAAM,GAAG,GAAE;AACX,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,CAAC,MAAM,EAAC;AAC3D,IAAI,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAC;AACnC;AACA,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE;AACxB;AACA,MAAM,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAC;AAClD;AACA,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE;AACnC,MAAM,IAAI,CAAC,GAAG,EAAC;AACf,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,EAAC;AACvC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,EAAC;AACnC,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC5D,MAAM,MAAM,GAAG,EAAC;AAChB,MAAM,GAAG,GAAE;AACX,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE;AACvC;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,OAAM;AAC3B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5C,MAAM,GAAG,GAAE;AACX,KAAK;AACL,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,EAAC;AACxD,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,OAAM;AAClB,IAAI,OAAO,GAAG,KAAK,IAAI,EAAE;AACzB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAC;AAC5B,KAAK;AACL,IAAI,OAAO,GAAG;AACd,GAAG;AACH,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAC;AACrC,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,MAAM,EAAE;AACjC,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,YAAY,CAAC;AACrD,GAAG;AACH,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,MAAM,EAAE,MAAM;AAClB,GAAG;AACH,CAAC;AACD,SAAc,GAAG;;ACzHjB,IAAI,QAAQ,GAAG,6DAA4D;AAC3E;AACA,QAAc,GAAGsC,KAAK,CAAC,QAAQ;;ACA/B,IAAIvC,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C;AACA,UAAc,GAAG,UAAU,UAAU,EAAE;AACvC;AACA,EAAE,SAAS,MAAM,EAAE,OAAO,EAAE;AAC5B,IAAI,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAC;AACtC;AACA,IAAI,OAAOuC,IAAM,CAAC,MAAM,CAACxC,QAAM,CAAC,MAAM,CAAC;AACvC,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,SAAS,SAAS,EAAE,MAAM,EAAE;AAC9B,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;AACrC,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;AACnC,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,EAAC;AACzC;AACA,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACpC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACpC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACpC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM;AAC5C;AACA,IAAI,OAAO,OAAO;AAClB,GAAG;AACH;AACA;AACA,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,MAAM,GAAGwC,IAAM,CAAC,YAAY,CAAC,MAAM,EAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;AACvB;AACA,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,MAAM,GAAGA,IAAM,CAAC,MAAM,CAAC,MAAM,EAAC;AACtC,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,MAAkB,EAAC;AAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AACrD,IAAI,OAAO,OAAO;AAClB,GAAG;AACH;AACA,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,YAAY,EAAE,YAAY;AAC9B,GAAG;AACH;;AC5CA;AACA,SAAS,QAAQ,EAAE,MAAM,EAAE;AAC3B,EAAE,IAAI,GAAG,GAAGR,OAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAE;AACxD,EAAE,OAAOA,OAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAClD,CAAC;AACD;AACA,aAAc,GAAGS,MAAa,CAAC,QAAQ;;;ACXvC,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE5B;AACA;AACA,EAAE,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AACzD,GAAG;AACH;AACA;AACA;AACA,EAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;AACtC,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,IAAI,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;AAClC,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;AACtC,GAAG;AACH;AACA;AACA;AACA,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzB,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC1C,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,GAAG,MAAM;AACT,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AACpB,GAAG;AACH;AACA,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI;AACN,IAAI,MAAM,GAAGxC,MAAiB,CAAC,MAAM,CAAC;AACtC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,GAAG;AACH;AACA,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,IAAI,IAAI,GAAG,YAAY,EAAE,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3E,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3D;AACA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3B,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AACrB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO;AAChC;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACzE,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,SAAS,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;AAC1C,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK,MAAM,IAAI,MAAM,GAAG,gBAAgB,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,GAAG;AACnB,QAAQ,MAAM,GAAG,SAAS;AAC1B,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,KAAK,GAAG;AACnB,QAAQ,MAAM,GAAG,SAAS;AAC1B,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,QAAQ,CAAC;AACT,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO;AAChC;AACA;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACvE;AACA,IAAI,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;AAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;AAClB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAChC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;AAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;AAClB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;AACtC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC;AACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACd;AACA;AACA,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1B;AACA;AACA,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1B;AACA;AACA,OAAO,MAAM;AACb,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9D;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAC9C;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;AACvD,MAAM,GAAG,IAAI,EAAE,CAAC;AAChB,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE;AACrB,QAAQ,GAAG,IAAI,EAAE,CAAC;AAClB,QAAQ,CAAC,EAAE,CAAC;AACZ,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC;AACA,MAAM,CAAC,IAAI,GAAG,CAAC;AACf;AACA;AACA,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1B;AACA;AACA,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1B;AACA;AACA,OAAO,MAAM;AACb,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACtE;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;AAC9E,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AAC9B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACnD;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE;AAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,GAAG,IAAI,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACjD,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;AAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;AAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACtE,GAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,EAAE;AACN,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAC1B,IAAI,uBAAuB;AAC3B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,2BAA2B;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;AACvE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;AACtE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACrE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5D,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AACvC,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,QAAQ,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;AAC9C,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;AACpD,SAAS,MAAM;AACf,UAAU,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,QAAQ,GAAG,IAAI,CAAC,CAAC;AACjB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACvC,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE;AACxD;AACA,MAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,MAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,MAAM,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,UAAU,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtD,SAAS,MAAM;AACf,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACxB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;AACrD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;AAC/C,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACvC,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5D;AACA,MAAM,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5D,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,MAAM,MAAM,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAC9C,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D,IAAI,MAAM,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC;AAC1C,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3D,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9E,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,IAAI,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,uCAAuC,CAAC,CAAC;AAC7E,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACzD;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,IAAI,IAAI,YAAY,GAAG,MAAM,KAAK,IAAI,CAAC;AACvC,IAAI,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACnD,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,OAAO;AACP;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,QAAQ,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,OAAO;AACP;AACA,MAAM,OAAO,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,MAAM,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,GAAG,MAAM;AACT,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE;AACvB,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChB,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE;AACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE;AAClD;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;AAC5B,MAAM,CAAC,IAAI,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;AAC1B,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,EAAE,CAAC;AACV,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,EAAE,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC;AACA,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;AAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1B;AACA,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AACvD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;AAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM;AAC1B,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;AACnD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE;AAChD,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;AACpD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AACrC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACxB,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;AACA,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;AACA,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;AAC9C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACpD;AACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,IAAI,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;AAC9B;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,MAAM,WAAW,EAAE,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACjD,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;AAC5C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1B;AACA,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACtD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;AACvD,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,CAAC,CAAC;AACV;AACA;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B;AACA;AACA,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;AACA,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;AACxB,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE;AACA,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;AACA,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA;AACA,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACpC,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B,KAAK;AACL;AACA;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE;AACjB,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,KAAK;AACL;AACA;AACA,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACnD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACpB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AACrB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC;AACA;AACA,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC;AAChC,MAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrE,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,QAAQ,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;AAC9B,OAAO;AACP,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAA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AAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,I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,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,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EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAA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E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QA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Q,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,gEAAgE;AACxE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE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"} \ No newline at end of file diff --git a/packages/asgardex-bitcoin/lib/index.js b/packages/asgardex-bitcoin/lib/index.js index b639620d..d1132f06 100644 --- a/packages/asgardex-bitcoin/lib/index.js +++ b/packages/asgardex-bitcoin/lib/index.js @@ -2,12 +2,17 @@ Object.defineProperty(exports, '__esModule', { value: true }); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +var buffer = require('buffer'); +var readableStream = require('readable-stream'); +var stream = require('stream'); +var string_decoder = require('string_decoder'); -var buffer = _interopDefault(require('buffer')); -var readableStream = _interopDefault(require('readable-stream')); -var stream = _interopDefault(require('stream')); -var string_decoder = _interopDefault(require('string_decoder')); +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer); +var readableStream__default = /*#__PURE__*/_interopDefaultLegacy(readableStream); +var stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); +var string_decoder__default = /*#__PURE__*/_interopDefaultLegacy(string_decoder); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. @@ -110,7 +115,7 @@ var safeBuffer = createCommonjsModule(function (module, exports) { /*! safe-buffer. MIT License. Feross Aboukhadijeh */ /* eslint-disable node/no-deprecated-api */ -var Buffer = buffer.Buffer; +var Buffer = buffer__default['default'].Buffer; // alternative to using Object.keys for old browsers function copyProps (src, dst) { @@ -119,10 +124,10 @@ function copyProps (src, dst) { } } if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; + module.exports = buffer__default['default']; } else { // Copy properties from require('buffer') - copyProps(buffer, exports); + copyProps(buffer__default['default'], exports); exports.Buffer = SafeBuffer; } @@ -170,13 +175,13 @@ SafeBuffer.allocUnsafeSlow = function (size) { if (typeof size !== 'number') { throw new TypeError('Argument must be a number') } - return buffer.SlowBuffer(size) + return buffer__default['default'].SlowBuffer(size) }; }); var safeBuffer_1 = safeBuffer.Buffer; var Buffer$1 = safeBuffer.Buffer; -var Transform = readableStream.Transform; +var Transform = readableStream__default['default'].Transform; function throwIfNotStringOrBuffer (val, prefix) { @@ -414,7 +419,7 @@ function fnI (a, b, c, d, m, k, s) { var md5_js = MD5; -var Buffer$3 = buffer.Buffer; +var Buffer$3 = buffer__default['default'].Buffer; @@ -1377,8 +1382,8 @@ exports.sha512 = sha512; }); var Buffer$b = safeBuffer.Buffer; -var Transform$1 = stream.Transform; -var StringDecoder = string_decoder.StringDecoder; +var Transform$1 = stream__default['default'].Transform; +var StringDecoder = string_decoder__default['default'].StringDecoder; function CipherBase (hashMode) { @@ -18865,7 +18870,7 @@ var bn = createCommonjsModule(function (module) { var Buffer; try { - Buffer = buffer.Buffer; + Buffer = buffer__default['default'].Buffer; } catch (e) { } @@ -31399,9 +31404,9 @@ function reverseBuffer(buffer) { } exports.reverseBuffer = reverseBuffer; function cloneBuffer(buffer) { - const clone = Buffer.alloc(buffer.length); + const clone = Buffer.allocUnsafe(buffer.length); buffer.copy(clone); - return buffer; + return clone; } exports.cloneBuffer = cloneBuffer; /** @@ -32428,12 +32433,7 @@ function check(data) { } exports.check = check; function canAdd(currentData, newData) { - return ( - !!currentData && - !!newData && - currentData.witnessUtxo === undefined && - currentData.nonWitnessUtxo === undefined - ); + return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined; } exports.canAdd = canAdd; }); @@ -32801,12 +32801,7 @@ function check(data) { } exports.check = check; function canAdd(currentData, newData) { - return ( - !!currentData && - !!newData && - currentData.witnessUtxo === undefined && - currentData.nonWitnessUtxo === undefined - ); + return !!currentData && !!newData && currentData.witnessUtxo === undefined; } exports.canAdd = canAdd; }); @@ -33268,12 +33263,9 @@ function psbtFromKeyVals( keyVal.key, typeFields.InputTypes.NON_WITNESS_UTXO, ); - if ( - input.nonWitnessUtxo !== undefined || - input.witnessUtxo !== undefined - ) { + if (input.nonWitnessUtxo !== undefined) { throw new Error( - 'Format Error: Input has multiple [NON_]WITNESS_UTXO', + 'Format Error: Input has multiple NON_WITNESS_UTXO', ); } input.nonWitnessUtxo = converter.inputs.nonWitnessUtxo.decode(keyVal); @@ -33284,13 +33276,8 @@ function psbtFromKeyVals( keyVal.key, typeFields.InputTypes.WITNESS_UTXO, ); - if ( - input.nonWitnessUtxo !== undefined || - input.witnessUtxo !== undefined - ) { - throw new Error( - 'Format Error: Input has multiple [NON_]WITNESS_UTXO', - ); + if (input.witnessUtxo !== undefined) { + throw new Error('Format Error: Input has multiple WITNESS_UTXO'); } input.witnessUtxo = converter.inputs.witnessUtxo.decode(keyVal); break; @@ -33637,7 +33624,7 @@ function getEnumLength(myenum) { exports.getEnumLength = getEnumLength; function inputCheckUncleanFinalized(inputIndex, input) { let result = false; - if (!input.nonWitnessUtxo !== !input.witnessUtxo) { + if (input.nonWitnessUtxo || input.witnessUtxo) { const needScriptSig = !!input.redeemScript; const needWitnessScript = !!input.witnessScript; const scriptSigOK = !needScriptSig || !!input.finalScriptSig; @@ -33974,6 +33961,14 @@ class Psbt { __NON_WITNESS_UTXO_BUF_CACHE: [], __TX_IN_CACHE: {}, __TX: this.data.globalMap.unsignedTx.tx, + // Old TransactionBuilder behavior was to not confirm input values + // before signing. Even though we highly encourage people to get + // the full parent transaction to verify values, the ability to + // sign non-segwit inputs without the full transaction was often + // requested. So the only way to activate is to use @ts-ignore. + // We will disable exporting the Psbt when unsafe sign is active. + // because it is not BIP174 compliant. + __UNSAFE_SIGN_NONSEGWIT: false, }; if (this.data.inputs.length === 0) this.setVersion(2); // Make data hidden when enumerating @@ -34092,6 +34087,7 @@ class Psbt { ); } checkInputsForPartialSig(this.data.inputs, 'addInput'); + if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript); const c = this.__CACHE; this.data.addInput(inputData); const txIn = c.__TX.ins[c.__TX.ins.length - 1]; @@ -34188,6 +34184,43 @@ class Psbt { this.data.clearFinalizedInput(inputIndex); return this; } + getInputType(inputIndex) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + const script = getScriptFromUtxo(inputIndex, input, this.__CACHE); + const result = getMeaningfulScript( + script, + inputIndex, + 'input', + input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig), + input.witnessScript || + redeemFromFinalWitnessScript(input.finalScriptWitness), + ); + const type = result.type === 'raw' ? '' : result.type + '-'; + const mainType = classifyScript(result.meaningfulScript); + return type + mainType; + } + inputHasPubkey(inputIndex, pubkey) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE); + } + inputHasHDKey(inputIndex, root) { + const input = utils$1.checkForInput(this.data.inputs, inputIndex); + const derivationIsMine = bip32DerivationIsMine(root); + return ( + !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine) + ); + } + outputHasPubkey(outputIndex, pubkey) { + const output = utils$1.checkForOutput(this.data.outputs, outputIndex); + return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE); + } + outputHasHDKey(outputIndex, root) { + const output = utils$1.checkForOutput(this.data.outputs, outputIndex); + const derivationIsMine = bip32DerivationIsMine(root); + return ( + !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine) + ); + } validateSignaturesOfAllInputs() { utils$1.checkForInput(this.data.inputs, 0); // making sure we have at least one const results = range(this.data.inputs.length).map(idx => @@ -34216,6 +34249,7 @@ class Psbt { inputIndex, Object.assign({}, input, { sighashType: sig.hashType }), this.__CACHE, + true, ) : { hash: hashCache, script: scriptCache }; sighashCache = sig.hashType; @@ -34415,12 +34449,15 @@ class Psbt { }); } toBuffer() { + checkCache(this.__CACHE); return this.data.toBuffer(); } toHex() { + checkCache(this.__CACHE); return this.data.toHex(); } toBase64() { + checkCache(this.__CACHE); return this.data.toBase64(); } updateGlobal(updateData) { @@ -34428,6 +34465,7 @@ class Psbt { return this; } updateInput(inputIndex, updateData) { + if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript); this.data.updateInput(inputIndex, updateData); if (updateData.nonWitnessUtxo) { addNonWitnessTxCache( @@ -34528,6 +34566,11 @@ function canFinalize(input, script, scriptType) { return false; } } +function checkCache(cache) { + if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) { + throw new Error('Not BIP174 compliant, can not export'); + } +} function hasSigs(neededSigs, partialSig, pubkeys) { if (!partialSig) return false; let sigs; @@ -34563,6 +34606,14 @@ const isP2PK = isPaymentFactory(payments.p2pk); const isP2PKH = isPaymentFactory(payments.p2pkh); const isP2WPKH = isPaymentFactory(payments.p2wpkh); const isP2WSHScript = isPaymentFactory(payments.p2wsh); +const isP2SHScript = isPaymentFactory(payments.p2sh); +function bip32DerivationIsMine(root) { + return d => { + if (!d.masterFingerprint.equals(root.fingerprint)) return false; + if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false; + return true; + }; +} function check32Bit(num) { if ( typeof num !== 'number' || @@ -34632,15 +34683,8 @@ function checkPartialSigSighashes(input) { } }); } -function checkScriptForPubkey(pubkey, script$1, action) { - const pubkeyHash = crypto$2.hash160(pubkey); - const decompiled = script.decompile(script$1); - if (decompiled === null) throw new Error('Unknown script error'); - const hasKey = decompiled.some(element => { - if (typeof element === 'number') return false; - return element.equals(pubkey) || element.equals(pubkeyHash); - }); - if (!hasKey) { +function checkScriptForPubkey(pubkey, script, action) { + if (!pubkeyInScript(pubkey, script)) { throw new Error( `Can not ${action} for this input with the key ${pubkey.toString('hex')}`, ); @@ -34672,13 +34716,13 @@ function checkTxInputCache(cache, input) { cache.__TX_IN_CACHE[key] = 1; } function scriptCheckerFactory(payment, paymentScriptName) { - return (inputIndex, scriptPubKey, redeemScript) => { + return (inputIndex, scriptPubKey, redeemScript, ioType) => { const redeemScriptOutput = payment({ redeem: { output: redeemScript }, }).output; if (!scriptPubKey.equals(redeemScriptOutput)) { throw new Error( - `${paymentScriptName} for input #${inputIndex} doesn't match the scriptPubKey in the prevout`, + `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`, ); } }; @@ -34765,6 +34809,7 @@ function getHashAndSighashType( inputIndex, input, cache, + false, sighashTypes, ); checkScriptForPubkey(pubkey, script, 'sign'); @@ -34773,7 +34818,7 @@ function getHashAndSighashType( sighashType, }; } -function getHashForSig(inputIndex, input, cache, sighashTypes) { +function getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) { const unsignedTx = cache.__TX; const sighashType = input.sighashType || transaction.Transaction.SIGHASH_ALL; @@ -34785,7 +34830,7 @@ function getHashForSig(inputIndex, input, cache, sighashTypes) { ); } let hash; - let script; + let prevout; if (input.nonWitnessUtxo) { const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache( cache, @@ -34801,83 +34846,64 @@ function getHashForSig(inputIndex, input, cache, sighashTypes) { ); } const prevoutIndex = unsignedTx.ins[inputIndex].index; - const prevout = nonWitnessUtxoTx.outs[prevoutIndex]; - if (input.redeemScript) { - // If a redeemScript is provided, the scriptPubKey must be for that redeemScript - checkRedeemScript(inputIndex, prevout.script, input.redeemScript); - script = input.redeemScript; - } else { - script = prevout.script; - } - if (isP2WSHScript(script)) { - if (!input.witnessScript) - throw new Error('Segwit input needs witnessScript if not P2WPKH'); - checkWitnessScript(inputIndex, script, input.witnessScript); - hash = unsignedTx.hashForWitnessV0( - inputIndex, - input.witnessScript, - prevout.value, - sighashType, - ); - script = input.witnessScript; - } else if (isP2WPKH(script)) { - // P2WPKH uses the P2PKH template for prevoutScript when signing - const signingScript = payments.p2pkh({ hash: script.slice(2) }).output; - hash = unsignedTx.hashForWitnessV0( - inputIndex, - signingScript, - prevout.value, - sighashType, - ); - } else { - hash = unsignedTx.hashForSignature(inputIndex, script, sighashType); - } + prevout = nonWitnessUtxoTx.outs[prevoutIndex]; } else if (input.witnessUtxo) { - let _script; // so we don't shadow the `let script` above - if (input.redeemScript) { - // If a redeemScript is provided, the scriptPubKey must be for that redeemScript - checkRedeemScript( - inputIndex, - input.witnessUtxo.script, - input.redeemScript, - ); - _script = input.redeemScript; - } else { - _script = input.witnessUtxo.script; - } - if (isP2WPKH(_script)) { - // P2WPKH uses the P2PKH template for prevoutScript when signing - const signingScript = payments.p2pkh({ hash: _script.slice(2) }).output; - hash = unsignedTx.hashForWitnessV0( - inputIndex, - signingScript, - input.witnessUtxo.value, - sighashType, - ); - script = _script; - } else if (isP2WSHScript(_script)) { - if (!input.witnessScript) - throw new Error('Segwit input needs witnessScript if not P2WPKH'); - checkWitnessScript(inputIndex, _script, input.witnessScript); - hash = unsignedTx.hashForWitnessV0( - inputIndex, - input.witnessScript, - input.witnessUtxo.value, - sighashType, - ); - // want to make sure the script we return is the actual meaningful script - script = input.witnessScript; - } else { + prevout = input.witnessUtxo; + } else { + throw new Error('Need a Utxo input item for signing'); + } + const { meaningfulScript, type } = getMeaningfulScript( + prevout.script, + inputIndex, + 'input', + input.redeemScript, + input.witnessScript, + ); + if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) { + hash = unsignedTx.hashForWitnessV0( + inputIndex, + meaningfulScript, + prevout.value, + sighashType, + ); + } else if (isP2WPKH(meaningfulScript)) { + // P2WPKH uses the P2PKH template for prevoutScript when signing + const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) }) + .output; + hash = unsignedTx.hashForWitnessV0( + inputIndex, + signingScript, + prevout.value, + sighashType, + ); + } else { + // non-segwit + if ( + input.nonWitnessUtxo === undefined && + cache.__UNSAFE_SIGN_NONSEGWIT === false + ) throw new Error( `Input #${inputIndex} has witnessUtxo but non-segwit script: ` + - `${_script.toString('hex')}`, + `${meaningfulScript.toString('hex')}`, ); - } - } else { - throw new Error('Need a Utxo input item for signing'); + if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false) + console.warn( + 'Warning: Signing non-segwit inputs without the full parent transaction ' + + 'means there is a chance that a miner could feed you incorrect information ' + + 'to trick you into paying large fees. This behavior is the same as the old ' + + 'TransactionBuilder class when signing non-segwit scripts. You are not ' + + 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' + + 'BIP174 compliant.\n*********************\nPROCEED WITH CAUTION!\n' + + '*********************', + ); + hash = unsignedTx.hashForSignature( + inputIndex, + meaningfulScript, + sighashType, + ); } return { - script, + script: meaningfulScript, sighashType, hash, }; @@ -35129,6 +35155,129 @@ function nonWitnessUtxoTxFromCache(cache, input, inputIndex) { } return c[inputIndex]; } +function getScriptFromUtxo(inputIndex, input, cache) { + if (input.witnessUtxo !== undefined) { + return input.witnessUtxo.script; + } else if (input.nonWitnessUtxo !== undefined) { + const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache( + cache, + input, + inputIndex, + ); + return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script; + } else { + throw new Error("Can't find pubkey in input without Utxo data"); + } +} +function pubkeyInInput(pubkey, input, inputIndex, cache) { + const script = getScriptFromUtxo(inputIndex, input, cache); + const { meaningfulScript } = getMeaningfulScript( + script, + inputIndex, + 'input', + input.redeemScript, + input.witnessScript, + ); + return pubkeyInScript(pubkey, meaningfulScript); +} +function pubkeyInOutput(pubkey, output, outputIndex, cache) { + const script = cache.__TX.outs[outputIndex].script; + const { meaningfulScript } = getMeaningfulScript( + script, + outputIndex, + 'output', + output.redeemScript, + output.witnessScript, + ); + return pubkeyInScript(pubkey, meaningfulScript); +} +function redeemFromFinalScriptSig(finalScript) { + if (!finalScript) return; + const decomp = script.decompile(finalScript); + if (!decomp) return; + const lastItem = decomp[decomp.length - 1]; + if ( + !Buffer.isBuffer(lastItem) || + isPubkeyLike(lastItem) || + isSigLike(lastItem) + ) + return; + const sDecomp = script.decompile(lastItem); + if (!sDecomp) return; + return lastItem; +} +function redeemFromFinalWitnessScript(finalScript) { + if (!finalScript) return; + const decomp = scriptWitnessToWitnessStack(finalScript); + const lastItem = decomp[decomp.length - 1]; + if (isPubkeyLike(lastItem)) return; + const sDecomp = script.decompile(lastItem); + if (!sDecomp) return; + return lastItem; +} +function isPubkeyLike(buf) { + return buf.length === 33 && script.isCanonicalPubKey(buf); +} +function isSigLike(buf) { + return script.isCanonicalScriptSignature(buf); +} +function getMeaningfulScript( + script, + index, + ioType, + redeemScript, + witnessScript, +) { + const isP2SH = isP2SHScript(script); + const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript); + const isP2WSH = isP2WSHScript(script); + if (isP2SH && redeemScript === undefined) + throw new Error('scriptPubkey is P2SH but redeemScript missing'); + if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined) + throw new Error( + 'scriptPubkey or redeemScript is P2WSH but witnessScript missing', + ); + let meaningfulScript; + if (isP2SHP2WSH) { + meaningfulScript = witnessScript; + checkRedeemScript(index, script, redeemScript, ioType); + checkWitnessScript(index, redeemScript, witnessScript, ioType); + checkInvalidP2WSH(meaningfulScript); + } else if (isP2WSH) { + meaningfulScript = witnessScript; + checkWitnessScript(index, script, witnessScript, ioType); + checkInvalidP2WSH(meaningfulScript); + } else if (isP2SH) { + meaningfulScript = redeemScript; + checkRedeemScript(index, script, redeemScript, ioType); + } else { + meaningfulScript = script; + } + return { + meaningfulScript, + type: isP2SHP2WSH + ? 'p2sh-p2wsh' + : isP2SH + ? 'p2sh' + : isP2WSH + ? 'p2wsh' + : 'raw', + }; +} +function checkInvalidP2WSH(script) { + if (isP2WPKH(script) || isP2SHScript(script)) { + throw new Error('P2WPKH or P2SH can not be contained within P2WSH'); + } +} +function pubkeyInScript(pubkey, script$1) { + const pubkeyHash = crypto$2.hash160(pubkey); + const decompiled = script.decompile(script$1); + if (decompiled === null) throw new Error('Unknown script error'); + return decompiled.some(element => { + if (typeof element === 'number') return false; + return element.equals(pubkey) || element.equals(pubkeyHash); + }); +} function classifyScript(script) { if (isP2WPKH(script)) return 'witnesspubkeyhash'; if (isP2PKH(script)) return 'pubkeyhash'; diff --git a/packages/asgardex-bitcoin/lib/index.js.map b/packages/asgardex-bitcoin/lib/index.js.map index e16d9df6..92a53d96 100644 --- a/packages/asgardex-bitcoin/lib/index.js.map +++ b/packages/asgardex-bitcoin/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/inherits/inherits_browser.js","../node_modules/safe-buffer/index.js","../node_modules/hash-base/index.js","../node_modules/md5.js/index.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/cipher-base/index.js","../node_modules/create-hash/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/browser.js","../node_modules/randombytes/browser.js","../node_modules/bip39/src/_wordlists.js","../node_modules/bip39/src/index.js","../node_modules/create-hmac/legacy.js","../node_modules/create-hmac/browser.js","../node_modules/bip32/src/crypto.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/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/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/tiny-secp256k1/rfc6979.js","../node_modules/tiny-secp256k1/js.js","../node_modules/typeforce/native.js","../node_modules/typeforce/errors.js","../node_modules/typeforce/extra.js","../node_modules/typeforce/index.js","../node_modules/wif/index.js","../node_modules/bip32/src/bip32.js","../node_modules/bip32/src/index.js","../node_modules/bitcoinjs-lib/src/networks.js","../node_modules/bitcoinjs-lib/src/script_number.js","../node_modules/bitcoinjs-lib/src/types.js","../node_modules/bip66/index.js","../node_modules/bitcoinjs-lib/src/script_signature.js","../node_modules/pushdata-bitcoin/index.js","../node_modules/bitcoin-ops/map.js","../node_modules/bitcoinjs-lib/src/script.js","../node_modules/bitcoinjs-lib/src/payments/lazy.js","../node_modules/bitcoinjs-lib/src/payments/embed.js","../node_modules/bitcoinjs-lib/src/payments/p2ms.js","../node_modules/bitcoinjs-lib/src/payments/p2pk.js","../node_modules/bitcoinjs-lib/src/crypto.js","../node_modules/bitcoinjs-lib/src/payments/p2pkh.js","../node_modules/bitcoinjs-lib/src/payments/p2sh.js","../node_modules/bech32/index.js","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.js","../node_modules/bitcoinjs-lib/src/payments/p2wsh.js","../node_modules/bitcoinjs-lib/src/payments/index.js","../node_modules/bitcoinjs-lib/src/address.js","../node_modules/bitcoinjs-lib/src/ecpair.js","../node_modules/varuint-bitcoin/index.js","../node_modules/bitcoinjs-lib/src/bufferutils.js","../node_modules/bitcoinjs-lib/src/transaction.js","../node_modules/merkle-lib/fastRoot.js","../node_modules/bitcoinjs-lib/src/block.js","../node_modules/bip174/src/lib/typeFields.js","../node_modules/bip174/src/lib/converter/global/globalXpub.js","../node_modules/bip174/src/lib/converter/global/unsignedTx.js","../node_modules/bip174/src/lib/converter/input/finalScriptSig.js","../node_modules/bip174/src/lib/converter/input/finalScriptWitness.js","../node_modules/bip174/src/lib/converter/input/nonWitnessUtxo.js","../node_modules/bip174/src/lib/converter/input/partialSig.js","../node_modules/bip174/src/lib/converter/input/porCommitment.js","../node_modules/bip174/src/lib/converter/input/sighashType.js","../node_modules/bip174/src/lib/converter/varint.js","../node_modules/bip174/src/lib/converter/tools.js","../node_modules/bip174/src/lib/converter/input/witnessUtxo.js","../node_modules/bip174/src/lib/converter/shared/bip32Derivation.js","../node_modules/bip174/src/lib/converter/shared/checkPubkey.js","../node_modules/bip174/src/lib/converter/shared/redeemScript.js","../node_modules/bip174/src/lib/converter/shared/witnessScript.js","../node_modules/bip174/src/lib/converter/index.js","../node_modules/bip174/src/lib/parser/fromBuffer.js","../node_modules/bip174/src/lib/parser/toBuffer.js","../node_modules/bip174/src/lib/parser/index.js","../node_modules/bip174/src/lib/combiner/index.js","../node_modules/bip174/src/lib/utils.js","../node_modules/bip174/src/lib/psbt.js","../node_modules/bitcoinjs-lib/src/psbt.js","../node_modules/bitcoinjs-lib/src/templates/multisig/input.js","../node_modules/bitcoinjs-lib/src/templates/multisig/output.js","../node_modules/bitcoinjs-lib/src/templates/multisig/index.js","../node_modules/bitcoinjs-lib/src/templates/nulldata.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/index.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/output.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/index.js","../node_modules/bitcoinjs-lib/src/classify.js","../node_modules/bitcoinjs-lib/src/transaction_builder.js","../node_modules/bitcoinjs-lib/src/index.js"],"sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\nvar 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","'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","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 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","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction lpad(str, padString, length) {\n while (str.length < length)\n str = padString + str;\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map(x => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary([...hash]).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return new Promise((resolve, reject) => {\n try {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n pbkdf2_1.pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', (err, data) => {\n if (err)\n return reject(err);\n else\n return resolve(data);\n });\n }\n catch (error) {\n return reject(error);\n }\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = (mnemonic || '').normalize('NFKD').split(' ');\n if (words.length % 3 !== 0)\n throw new Error(INVALID_MNEMONIC);\n // convert word indices to 11 bit binary strings\n const bits = words\n .map(word => {\n const index = wordlist.indexOf(word);\n if (index === -1)\n throw new Error(INVALID_MNEMONIC);\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length > 32)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length % 4 !== 0)\n throw new Error(INVALID_ENTROPY);\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits)\n throw new Error(INVALID_CHECKSUM);\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy))\n entropy = Buffer.from(entropy, 'hex');\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length > 32)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length % 4 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n const entropyBits = bytesToBinary([...entropy]);\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map(binary => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result)\n DEFAULT_WORDLIST = result;\n else\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST)\n throw new Error('No Default Wordlist set');\n return Object.keys(_wordlists_1.wordlists).filter(lang => {\n if (lang === 'JA' || lang === 'EN')\n return false;\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","'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 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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","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","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","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 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\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 var 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 var 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 for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\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 (var j = 0; j < repr.length; j++) {\n var 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 k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\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 for (var i = 0; i < len; i++) {\n var 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 (var 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 (var 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 (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var 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 (var j = 0; j < len; j++) {\n var z = tmp[j];\n var 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 (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var 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 (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var 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 var h = this.z.redSqr();\n // J = F - 2 * H\n var 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 var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var 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 return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\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 + 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 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 (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\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(curves.hasOwnProperty(options), '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 do {\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 } while (true);\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; true; 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\n if (!this.curve._maxwellTrick) {\n var 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 var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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 var 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","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 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) {\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 // 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","var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n","var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n","var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n","// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n","var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n","var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n","'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","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.alloc(buffer.length);\n buffer.copy(clone);\n return buffer;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, 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 result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\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++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n","// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n];\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)+$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData &&\n !!newData &&\n currentData.witnessUtxo === undefined &&\n currentData.nonWitnessUtxo === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\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 Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData &&\n !!newData &&\n currentData.witnessUtxo === undefined &&\n currentData.nonWitnessUtxo === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const pubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.outputs = outputs;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (\n input.nonWitnessUtxo !== undefined ||\n input.witnessUtxo !== undefined\n ) {\n throw new Error(\n 'Format Error: Input has multiple [NON_]WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (\n input.nonWitnessUtxo !== undefined ||\n input.witnessUtxo !== undefined\n ) {\n throw new Error(\n 'Format Error: Input has multiple [NON_]WITNESS_UTXO',\n );\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n","'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (!input.nonWitnessUtxo !== !input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForInput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n return this.data.toBuffer();\n }\n toHex() {\n return this.data.toHex();\n }\n toBase64() {\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n const hasKey = decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n if (!hasKey) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for input #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let script;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n const prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n if (input.redeemScript) {\n // If a redeemScript is provided, the scriptPubKey must be for that redeemScript\n checkRedeemScript(inputIndex, prevout.script, input.redeemScript);\n script = input.redeemScript;\n } else {\n script = prevout.script;\n }\n if (isP2WSHScript(script)) {\n if (!input.witnessScript)\n throw new Error('Segwit input needs witnessScript if not P2WPKH');\n checkWitnessScript(inputIndex, script, input.witnessScript);\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n input.witnessScript,\n prevout.value,\n sighashType,\n );\n script = input.witnessScript;\n } else if (isP2WPKH(script)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: script.slice(2) }).output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n hash = unsignedTx.hashForSignature(inputIndex, script, sighashType);\n }\n } else if (input.witnessUtxo) {\n let _script; // so we don't shadow the `let script` above\n if (input.redeemScript) {\n // If a redeemScript is provided, the scriptPubKey must be for that redeemScript\n checkRedeemScript(\n inputIndex,\n input.witnessUtxo.script,\n input.redeemScript,\n );\n _script = input.redeemScript;\n } else {\n _script = input.witnessUtxo.script;\n }\n if (isP2WPKH(_script)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: _script.slice(2) }).output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n input.witnessUtxo.value,\n sighashType,\n );\n script = _script;\n } else if (isP2WSHScript(_script)) {\n if (!input.witnessScript)\n throw new Error('Segwit input needs witnessScript if not P2WPKH');\n checkWitnessScript(inputIndex, _script, input.witnessScript);\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n input.witnessScript,\n input.witnessUtxo.value,\n sighashType,\n );\n // want to make sure the script we return is the actual meaningful script\n script = input.witnessScript;\n } else {\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${_script.toString('hex')}`,\n );\n }\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n return {\n script,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n","'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n","'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n","'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n","'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n","'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n","'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n","'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n"],"names":["Buffer","require$$0","require$$1","inherits","HashBase","ARRAY16","rotl","Hash","K","W","rotl5","rotl30","ft","Sha256","maj","sigma0","sigma1","SHA512","require$$2","require$$3","require$$4","require$$5","Transform","Base","MD5","RIPEMD160","sha","checkParameters","defaultEncoding","global","sync","_wordlists_1","createHash","pbkdf2_1","randomBytes","ZEROS","Hmac","Legacy","createHmac","basex","base58","bs58checkBase","this","minAssert","minUtils","BN","crypto","utils","assert","Point","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sum32_3","r","curve","hash","curves","KeyPair","HmacDRBG","rand","Signature","signature","cachedProperty","parseBytes","require$$6","EC","secp256k1","deterministicGenerateK","native","_Buffer","ERRORS","NATIVE","types","typeName","tfJSON","TfTypeError","TfPropertyTypeError","tfSubError","getValueTypeName","EXTRA","typeforce","ecc","bip32_1","decode","encode","OPS","pushdata","REVERSE_OPS","scriptNumber","scriptSignature","bscript","typef","networks_1","bcrypto","ALPHABET","embed_1","NETWORKS","encodingLength","varuint","bufferutils_1","transaction_1","fastMerkleRoot","typeFields_1","tools_1","convert","parser_1","utils_1","combiner_1","bip174_1","psbt","address","address_1","script","ecpair_1","crypto_1","input","output","p2wsho","p2wpkho","p2pkh","p2ms","p2pk","witnessPubKeyHash","witnessScriptHash","pubKeyHash","scriptHash","script_1","pubKey","witnessCommitment","nullData","baddress","ECPair","bip32","block_1","psbt_1","transaction_builder_1"],"mappings":"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,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,CA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CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;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,EAA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CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IA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CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,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E,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC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,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EA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E;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;A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1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,gEAAgE;AACxE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/inherits/inherits_browser.js","../node_modules/safe-buffer/index.js","../node_modules/hash-base/index.js","../node_modules/md5.js/index.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/cipher-base/index.js","../node_modules/create-hash/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/browser.js","../node_modules/randombytes/browser.js","../node_modules/bip39/src/_wordlists.js","../node_modules/bip39/src/index.js","../node_modules/create-hmac/legacy.js","../node_modules/create-hmac/browser.js","../node_modules/bip32/src/crypto.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/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/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/tiny-secp256k1/rfc6979.js","../node_modules/tiny-secp256k1/js.js","../node_modules/typeforce/native.js","../node_modules/typeforce/errors.js","../node_modules/typeforce/extra.js","../node_modules/typeforce/index.js","../node_modules/wif/index.js","../node_modules/bip32/src/bip32.js","../node_modules/bip32/src/index.js","../node_modules/bitcoinjs-lib/src/networks.js","../node_modules/bitcoinjs-lib/src/script_number.js","../node_modules/bitcoinjs-lib/src/types.js","../node_modules/bip66/index.js","../node_modules/bitcoinjs-lib/src/script_signature.js","../node_modules/pushdata-bitcoin/index.js","../node_modules/bitcoin-ops/map.js","../node_modules/bitcoinjs-lib/src/script.js","../node_modules/bitcoinjs-lib/src/payments/lazy.js","../node_modules/bitcoinjs-lib/src/payments/embed.js","../node_modules/bitcoinjs-lib/src/payments/p2ms.js","../node_modules/bitcoinjs-lib/src/payments/p2pk.js","../node_modules/bitcoinjs-lib/src/crypto.js","../node_modules/bitcoinjs-lib/src/payments/p2pkh.js","../node_modules/bitcoinjs-lib/src/payments/p2sh.js","../node_modules/bech32/index.js","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.js","../node_modules/bitcoinjs-lib/src/payments/p2wsh.js","../node_modules/bitcoinjs-lib/src/payments/index.js","../node_modules/bitcoinjs-lib/src/address.js","../node_modules/bitcoinjs-lib/src/ecpair.js","../node_modules/varuint-bitcoin/index.js","../node_modules/bitcoinjs-lib/src/bufferutils.js","../node_modules/bitcoinjs-lib/src/transaction.js","../node_modules/merkle-lib/fastRoot.js","../node_modules/bitcoinjs-lib/src/block.js","../node_modules/bip174/src/lib/typeFields.js","../node_modules/bip174/src/lib/converter/global/globalXpub.js","../node_modules/bip174/src/lib/converter/global/unsignedTx.js","../node_modules/bip174/src/lib/converter/input/finalScriptSig.js","../node_modules/bip174/src/lib/converter/input/finalScriptWitness.js","../node_modules/bip174/src/lib/converter/input/nonWitnessUtxo.js","../node_modules/bip174/src/lib/converter/input/partialSig.js","../node_modules/bip174/src/lib/converter/input/porCommitment.js","../node_modules/bip174/src/lib/converter/input/sighashType.js","../node_modules/bip174/src/lib/converter/varint.js","../node_modules/bip174/src/lib/converter/tools.js","../node_modules/bip174/src/lib/converter/input/witnessUtxo.js","../node_modules/bip174/src/lib/converter/shared/bip32Derivation.js","../node_modules/bip174/src/lib/converter/shared/checkPubkey.js","../node_modules/bip174/src/lib/converter/shared/redeemScript.js","../node_modules/bip174/src/lib/converter/shared/witnessScript.js","../node_modules/bip174/src/lib/converter/index.js","../node_modules/bip174/src/lib/parser/fromBuffer.js","../node_modules/bip174/src/lib/parser/toBuffer.js","../node_modules/bip174/src/lib/parser/index.js","../node_modules/bip174/src/lib/combiner/index.js","../node_modules/bip174/src/lib/utils.js","../node_modules/bip174/src/lib/psbt.js","../node_modules/bitcoinjs-lib/src/psbt.js","../node_modules/bitcoinjs-lib/src/templates/multisig/input.js","../node_modules/bitcoinjs-lib/src/templates/multisig/output.js","../node_modules/bitcoinjs-lib/src/templates/multisig/index.js","../node_modules/bitcoinjs-lib/src/templates/nulldata.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkey/index.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/output.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/output.js","../node_modules/bitcoinjs-lib/src/templates/scripthash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/output.js","../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/index.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/index.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/input.js","../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/index.js","../node_modules/bitcoinjs-lib/src/classify.js","../node_modules/bitcoinjs-lib/src/transaction_builder.js","../node_modules/bitcoinjs-lib/src/index.js"],"sourcesContent":["if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\nvar 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","'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","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 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","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please explicitly pass a 2048 word array explicitly.';\nfunction lpad(str, padString, length) {\n while (str.length < length)\n str = padString + str;\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map(x => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary([...hash]).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return new Promise((resolve, reject) => {\n try {\n const mnemonicBuffer = Buffer.from((mnemonic || '').normalize('NFKD'), 'utf8');\n const saltBuffer = Buffer.from(salt((password || '').normalize('NFKD')), 'utf8');\n pbkdf2_1.pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', (err, data) => {\n if (err)\n return reject(err);\n else\n return resolve(data);\n });\n }\n catch (error) {\n return reject(error);\n }\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = (mnemonic || '').normalize('NFKD').split(' ');\n if (words.length % 3 !== 0)\n throw new Error(INVALID_MNEMONIC);\n // convert word indices to 11 bit binary strings\n const bits = words\n .map(word => {\n const index = wordlist.indexOf(word);\n if (index === -1)\n throw new Error(INVALID_MNEMONIC);\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length > 32)\n throw new Error(INVALID_ENTROPY);\n if (entropyBytes.length % 4 !== 0)\n throw new Error(INVALID_ENTROPY);\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits)\n throw new Error(INVALID_CHECKSUM);\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy))\n entropy = Buffer.from(entropy, 'hex');\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length > 32)\n throw new TypeError(INVALID_ENTROPY);\n if (entropy.length % 4 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n const entropyBits = bytesToBinary([...entropy]);\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map(binary => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0)\n throw new TypeError(INVALID_ENTROPY);\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result)\n DEFAULT_WORDLIST = result;\n else\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST)\n throw new Error('No Default Wordlist set');\n return Object.keys(_wordlists_1.wordlists).filter(lang => {\n if (lang === 'JA' || lang === 'EN')\n return false;\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n","'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 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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","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","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","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 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\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 var 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 var 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 for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\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 (var j = 0; j < repr.length; j++) {\n var 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 k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\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 for (var i = 0; i < len; i++) {\n var 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 (var 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 (var 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 (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var 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 (var j = 0; j < len; j++) {\n var z = tmp[j];\n var 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 (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var 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 (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var 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 var h = this.z.redSqr();\n // J = F - 2 * H\n var 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 var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var 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 return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\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 + 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 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 (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\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(curves.hasOwnProperty(options), '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 do {\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 } while (true);\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; true; 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\n if (!this.curve._maxwellTrick) {\n var 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 var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n 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 var 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","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 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) {\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 // 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","var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n","var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n","var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n","var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n","// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n","var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n","var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n","'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","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.allocUnsafe(buffer.length);\n buffer.copy(clone);\n return clone;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, 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 result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\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++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n","// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n];\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)+$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\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 Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.witnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const pubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n};\nexports.outputs = outputs;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (input.nonWitnessUtxo !== undefined) {\n throw new Error(\n 'Format Error: Input has multiple NON_WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (input.witnessUtxo !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_UTXO');\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n","'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (input.nonWitnessUtxo || input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForInput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n // Old TransactionBuilder behavior was to not confirm input values\n // before signing. Even though we highly encourage people to get\n // the full parent transaction to verify values, the ability to\n // sign non-segwit inputs without the full transaction was often\n // requested. So the only way to activate is to use @ts-ignore.\n // We will disable exporting the Psbt when unsafe sign is active.\n // because it is not BIP174 compliant.\n __UNSAFE_SIGN_NONSEGWIT: false,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript);\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n getInputType(inputIndex) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const script = getScriptFromUtxo(inputIndex, input, this.__CACHE);\n const result = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig),\n input.witnessScript ||\n redeemFromFinalWitnessScript(input.finalScriptWitness),\n );\n const type = result.type === 'raw' ? '' : result.type + '-';\n const mainType = classifyScript(result.meaningfulScript);\n return type + mainType;\n }\n inputHasPubkey(inputIndex, pubkey) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE);\n }\n inputHasHDKey(inputIndex, root) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine)\n );\n }\n outputHasPubkey(outputIndex, pubkey) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE);\n }\n outputHasHDKey(outputIndex, root) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine)\n );\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n true,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n checkCache(this.__CACHE);\n return this.data.toBuffer();\n }\n toHex() {\n checkCache(this.__CACHE);\n return this.data.toHex();\n }\n toBase64() {\n checkCache(this.__CACHE);\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript);\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction checkCache(cache) {\n if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) {\n throw new Error('Not BIP174 compliant, can not export');\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nconst isP2SHScript = isPaymentFactory(payments.p2sh);\nfunction bip32DerivationIsMine(root) {\n return d => {\n if (!d.masterFingerprint.equals(root.fingerprint)) return false;\n if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false;\n return true;\n };\n}\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n if (!pubkeyInScript(pubkey, script)) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript, ioType) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n false,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let prevout;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n } else if (input.witnessUtxo) {\n prevout = input.witnessUtxo;\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n const { meaningfulScript, type } = getMeaningfulScript(\n prevout.script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) {\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n meaningfulScript,\n prevout.value,\n sighashType,\n );\n } else if (isP2WPKH(meaningfulScript)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) })\n .output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n // non-segwit\n if (\n input.nonWitnessUtxo === undefined &&\n cache.__UNSAFE_SIGN_NONSEGWIT === false\n )\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${meaningfulScript.toString('hex')}`,\n );\n if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)\n console.warn(\n 'Warning: Signing non-segwit inputs without the full parent transaction ' +\n 'means there is a chance that a miner could feed you incorrect information ' +\n 'to trick you into paying large fees. This behavior is the same as the old ' +\n 'TransactionBuilder class when signing non-segwit scripts. You are not ' +\n 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +\n 'BIP174 compliant.\\n*********************\\nPROCEED WITH CAUTION!\\n' +\n '*********************',\n );\n hash = unsignedTx.hashForSignature(\n inputIndex,\n meaningfulScript,\n sighashType,\n );\n }\n return {\n script: meaningfulScript,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction getScriptFromUtxo(inputIndex, input, cache) {\n if (input.witnessUtxo !== undefined) {\n return input.witnessUtxo.script;\n } else if (input.nonWitnessUtxo !== undefined) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script;\n } else {\n throw new Error(\"Can't find pubkey in input without Utxo data\");\n }\n}\nfunction pubkeyInInput(pubkey, input, inputIndex, cache) {\n const script = getScriptFromUtxo(inputIndex, input, cache);\n const { meaningfulScript } = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction pubkeyInOutput(pubkey, output, outputIndex, cache) {\n const script = cache.__TX.outs[outputIndex].script;\n const { meaningfulScript } = getMeaningfulScript(\n script,\n outputIndex,\n 'output',\n output.redeemScript,\n output.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction redeemFromFinalScriptSig(finalScript) {\n if (!finalScript) return;\n const decomp = bscript.decompile(finalScript);\n if (!decomp) return;\n const lastItem = decomp[decomp.length - 1];\n if (\n !Buffer.isBuffer(lastItem) ||\n isPubkeyLike(lastItem) ||\n isSigLike(lastItem)\n )\n return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction redeemFromFinalWitnessScript(finalScript) {\n if (!finalScript) return;\n const decomp = scriptWitnessToWitnessStack(finalScript);\n const lastItem = decomp[decomp.length - 1];\n if (isPubkeyLike(lastItem)) return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction isPubkeyLike(buf) {\n return buf.length === 33 && bscript.isCanonicalPubKey(buf);\n}\nfunction isSigLike(buf) {\n return bscript.isCanonicalScriptSignature(buf);\n}\nfunction getMeaningfulScript(\n script,\n index,\n ioType,\n redeemScript,\n witnessScript,\n) {\n const isP2SH = isP2SHScript(script);\n const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript);\n const isP2WSH = isP2WSHScript(script);\n if (isP2SH && redeemScript === undefined)\n throw new Error('scriptPubkey is P2SH but redeemScript missing');\n if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined)\n throw new Error(\n 'scriptPubkey or redeemScript is P2WSH but witnessScript missing',\n );\n let meaningfulScript;\n if (isP2SHP2WSH) {\n meaningfulScript = witnessScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n checkWitnessScript(index, redeemScript, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2WSH) {\n meaningfulScript = witnessScript;\n checkWitnessScript(index, script, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2SH) {\n meaningfulScript = redeemScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n } else {\n meaningfulScript = script;\n }\n return {\n meaningfulScript,\n type: isP2SHP2WSH\n ? 'p2sh-p2wsh'\n : isP2SH\n ? 'p2sh'\n : isP2WSH\n ? 'p2wsh'\n : 'raw',\n };\n}\nfunction checkInvalidP2WSH(script) {\n if (isP2WPKH(script) || isP2SHScript(script)) {\n throw new Error('P2WPKH or P2SH can not be contained within P2WSH');\n }\n}\nfunction pubkeyInScript(pubkey, script) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n return decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n","'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n","'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n","'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n","'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n","'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n","'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n","'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n"],"names":["buffer","Buffer","require$$0","require$$1","inherits","HashBase","ARRAY16","rotl","Hash","K","W","rotl5","rotl30","ft","Sha256","maj","sigma0","sigma1","SHA512","require$$2","require$$3","require$$4","require$$5","Transform","Base","MD5","RIPEMD160","sha","checkParameters","defaultEncoding","global","sync","_wordlists_1","createHash","pbkdf2_1","randomBytes","ZEROS","Hmac","Legacy","createHmac","basex","base58","bs58checkBase","this","minAssert","minUtils","BN","crypto","utils","assert","Point","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sum32_3","r","curve","hash","curves","KeyPair","HmacDRBG","rand","Signature","signature","cachedProperty","parseBytes","require$$6","EC","secp256k1","deterministicGenerateK","native","_Buffer","ERRORS","NATIVE","types","typeName","tfJSON","TfTypeError","TfPropertyTypeError","tfSubError","getValueTypeName","EXTRA","typeforce","ecc","bip32_1","decode","encode","OPS","pushdata","REVERSE_OPS","scriptNumber","scriptSignature","bscript","typef","networks_1","bcrypto","ALPHABET","embed_1","NETWORKS","encodingLength","varuint","bufferutils_1","transaction_1","fastMerkleRoot","typeFields_1","tools_1","convert","parser_1","utils_1","combiner_1","bip174_1","psbt","address","address_1","script","ecpair_1","crypto_1","input","output","p2wsho","p2wpkho","p2pkh","p2ms","p2pk","witnessPubKeyHash","witnessScriptHash","pubKeyHash","scriptHash","script_1","pubKey","witnessCommitment","nullData","baddress","ECPair","bip32","block_1","psbt_1","transaction_builder_1"],"mappings":"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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,GAA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EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;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,EAA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EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAC;AACD;AACA,IAAIC,GAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAC;AACtB;AACA,SAAS,MAAM,IAAI;AACnB,EAAE,IAAI,CAAC,IAAI,GAAE;AACb,EAAE,IAAI,CAAC,EAAE,GAAGA,IAAC;AACb;AACA,EAAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC;AAC3B,CAAC;AACD;AACAJ,gBAAQ,CAAC,MAAM,EAAEI,IAAI,EAAC;AACtB;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACpC,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB;AACA,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACA,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD;AACA,SAASO,KAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD;AACA,SAASC,QAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AACD;AACA,SAASC,QAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7E,CAAC;AACD;AACA,SAAS,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AACD;AACA,SAAS,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;AACzB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAC3E,CAAC;AACD;AACA,SAAS,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AACD;AACA,SAAS,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;AACzB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5E,CAAC;AACD;AACA,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;AACzB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,CAAC;AACD;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAE;AACjB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAC;AACvB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAClC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAC;AAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AACvC,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC;AAC1B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAC;AAC9B,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAC/B,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAC;AACjC;AACA,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AACrB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AACzB,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAC/B,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAC;AACjC;AACA;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AAC3B,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AAC/B;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAC;AACjC;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,EAAC;AAClC,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAC;AAC1D,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO,IAAI,EAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAC;AACrD,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,EAAC;AAC3B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAC;AAClD;AACA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAG;AACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAG;AAClB,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAC;AACd,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC;AAClB;AACA,IAAI,IAAI,IAAI,GAAGF,KAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC;AAC9B,IAAI,IAAI,IAAI,GAAGA,KAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC;AAC9B;AACA,IAAI,IAAI,OAAO,GAAGC,QAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAChC,IAAI,IAAI,OAAO,GAAGA,QAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAChC,IAAI,IAAI,OAAO,GAAGC,QAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAChC,IAAI,IAAI,OAAO,GAAGA,QAAM,CAAC,EAAE,EAAE,EAAE,EAAC;AAChC;AACA;AACA,IAAI,IAAI,GAAG,GAAGR,GAAC,CAAC,CAAC,EAAC;AAClB,IAAI,IAAI,GAAG,GAAGA,GAAC,CAAC,CAAC,GAAG,CAAC,EAAC;AACtB;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC;AAC5B,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC;AAC5B;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,EAAC;AAChC,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAC;AACpD,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAC;AACzB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC;AAC9C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAC;AACzB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC;AAC9C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAC;AACzB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC;AAC9C;AACA;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,EAAC;AAClC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAC;AAC3D;AACA,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAC;AACvB,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAC;AAC1C,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,GAAE;AACX,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAC;AACxB,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAC;AAC5C,GAAG;AACH;AACA,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,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,EAAE,CAAC,IAAI,EAAC;AACzD,EAAC;AACD;AACA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACrC,EAAE,IAAI,CAAC,GAAGR,QAAM,CAAC,WAAW,CAAC,EAAE,EAAC;AAChC;AACA,EAAE,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;AACvC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAC;AAC7B,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAC;AACjC,GAAG;AACH;AACA,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AACrC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AACrC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC;AACA,EAAE,OAAO,CAAC;AACV,EAAC;AACD;AACA,UAAc,GAAG;;AChQjB,IAAIA,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C;AACA,IAAIQ,GAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAC;AACtB;AACA,SAAS,MAAM,IAAI;AACnB,EAAE,IAAI,CAAC,IAAI,GAAE;AACb,EAAE,IAAI,CAAC,EAAE,GAAGA,IAAC;AACb;AACA,EAAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC;AAC3B,CAAC;AACD;AACAJ,gBAAQ,CAAC,MAAM,EAAEc,MAAM,EAAC;AACxB;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACpC,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,WAAU;AACvB;AACA,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACrC,EAAE,IAAI,CAAC,GAAGjB,QAAM,CAAC,WAAW,CAAC,EAAE,EAAC;AAChC;AACA,EAAE,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;AACvC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAC;AAC7B,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAC;AACjC,GAAG;AACH;AACA,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AACrC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AACrC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;AACtC;AACA,EAAE,OAAO,CAAC;AACV,EAAC;AACD;AACA,UAAc,GAAG;;;ACxDjB,IAAI,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE;AACxD,EAAE,SAAS,GAAG,SAAS,CAAC,WAAW,GAAE;AACrC;AACA,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,EAAC;AACpC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,6CAA6C,CAAC;AAC5F;AACA,EAAE,OAAO,IAAI,SAAS,EAAE;AACxB,EAAC;AACD;AACA,OAAO,CAAC,GAAG,GAAGC,IAAgB;AAC9B,OAAO,CAAC,IAAI,GAAGC,KAAiB;AAChC,OAAO,CAAC,MAAM,GAAGgB,OAAmB;AACpC,OAAO,CAAC,MAAM,GAAGC,OAAmB;AACpC,OAAO,CAAC,MAAM,GAAGC,OAAmB;AACpC,OAAO,CAAC,MAAM,GAAGC;;;ACdjB,IAAIrB,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C,IAAIqB,WAAS,GAAGpB,0BAAiB,CAAC,UAAS;AAC3C,IAAI,aAAa,GAAGgB,kCAAyB,CAAC,cAAa;AACzB;AAClC;AACA,SAAS,UAAU,EAAE,QAAQ,EAAE;AAC/B,EAAEI,WAAS,CAAC,IAAI,CAAC,IAAI,EAAC;AACtB,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,QAAQ,KAAK,SAAQ;AAC9C,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,eAAc;AACxC,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAc;AACpC,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAM;AAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAI;AACtB,GAAG;AACH,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAI;AACtB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAI;AACvB,CAAC;AACDnB,gBAAQ,CAAC,UAAU,EAAEmB,WAAS,EAAC;AAC/B;AACA,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE;AACnE,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAChC,IAAI,IAAI,GAAGtB,QAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;AAClC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAChC;AACA,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAC;AAChD,GAAG;AACH;AACA,EAAE,OAAO,OAAO;AAChB,EAAC;AACD;AACA,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY,GAAE;AACpD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AAC9C,EAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAChE,EAAC;AACD;AACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AAC9C,EAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAChE,EAAC;AACD;AACA,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC1C,EAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC3D,EAAC;AACD;AACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;AAC3D,EAAE,IAAI,IAAG;AACT,EAAE,IAAI;AACN,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;AACxB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC;AACnC,KAAK;AACL,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,GAAG,GAAG,EAAC;AACX,GAAG,SAAS;AACZ,IAAI,IAAI,CAAC,GAAG,EAAC;AACb,GAAG;AACH,EAAC;AACD,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;AAC9C,EAAE,IAAI,IAAG;AACT,EAAE,IAAI;AACN,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC;AAC7B,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,GAAG,GAAG,EAAC;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,GAAG,EAAC;AACX,EAAC;AACD,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,SAAS,EAAE;AAC3D,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAIA,QAAM,CAAC,KAAK,CAAC,CAAC,EAAC;AACjD,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC;AACtD,GAAG;AACH,EAAE,OAAO,OAAO;AAChB,EAAC;AACD;AACA,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5D,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,EAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAG;AACxB,GAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACxE;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAC;AACtC,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAE;AAC9B,GAAG;AACH;AACA,EAAE,OAAO,GAAG;AACZ,EAAC;AACD;AACA,cAAc,GAAG;;AC3FjB,SAASO,MAAI,EAAE,IAAI,EAAE;AACrB,EAAEgB,UAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAC;AAC3B;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,KAAI;AACnB,CAAC;AACD;AACApB,gBAAQ,CAACI,MAAI,EAAEgB,UAAI,EAAC;AACpB;AACAhB,MAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACzC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAC;AACzB,EAAC;AACD;AACAA,MAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACpC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5B,EAAC;AACD;AACA,WAAc,GAAG,SAAS,UAAU,EAAE,GAAG,EAAE;AAC3C,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,GAAE;AACzB,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE,OAAO,IAAIiB,MAAG,EAAE;AACrC,EAAE,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE,OAAO,IAAIC,SAAS,EAAE;AACrE;AACA,EAAE,OAAO,IAAIlB,MAAI,CAACmB,MAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;;AC7BA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAC;AACnC;AACA,SAAS,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxD,IAAI,MAAM,IAAI,SAAS,CAAC,IAAI,GAAG,6BAA6B,CAAC;AAC7D,GAAG;AACH,CAAC;AACD;AACA,gBAAc,GAAG,UAAU,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;AAC/D,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAC;AACnC,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAC;AAC3B;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACtC,IAAI,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,UAAU,GAAG,CAAC,EAAE;AACtB,IAAI,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC;AACzC,GAAG;AACH;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;AAC7D,IAAI,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC;AACzC,GAAG;AACH;;AC3BA,IAAI,gBAAe;AACnB;AACA,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,EAAE,eAAe,GAAG,QAAO;AAC3B,CAAC,MAAM;AACP,EAAE,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAC;AAC1E;AACA,EAAE,eAAe,GAAG,aAAa,IAAI,CAAC,GAAG,OAAO,GAAG,SAAQ;AAC3D,CAAC;AACD,qBAAc,GAAG;;ACPjB,OAAc,GAAG,UAAU,MAAM,EAAE;AACnC,EAAE,OAAO,IAAIF,MAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC1C;;ACEA,IAAIxB,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C,IAAI,KAAK,GAAGD,QAAM,CAAC,KAAK,CAAC,GAAG,EAAC;AAC7B,IAAI,KAAK,GAAG;AACZ,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,SAAS,EAAE,EAAE;AACf,EAAC;AACD;AACA,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAClC,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,EAAC;AAC3B,EAAE,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,GAAE;AACnE;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAC;AACnB,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;AACrC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAC;AAChD,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAGA,QAAM,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAC;AACvD,EAAE,IAAI,IAAI,GAAGA,QAAM,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAC;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAI;AAC3B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,GAAGA,QAAM,CAAC,WAAW,CAAC,SAAS,GAAG,OAAO,GAAG,CAAC,EAAC;AACzD,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAC;AACnC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAK;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAI;AACnB,EAAE,IAAI,CAAC,IAAI,GAAG,KAAI;AAClB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAG;AAChB,EAAE,IAAI,CAAC,SAAS,GAAG,UAAS;AAC5B,EAAE,IAAI,CAAC,IAAI,GAAG,KAAI;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAC;AACxB,CAAC;AACD;AACA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC;AACjC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;AACzB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC;AACnC,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,EAAC;AACD;AACA,SAAS,SAAS,EAAE,GAAG,EAAE;AACzB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AAC1B,IAAI,OAAO0B,MAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACzC,GAAG;AACH,EAAE,SAAS,UAAU,EAAE,IAAI,EAAE;AAC7B,IAAI,OAAO,IAAID,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAChD,GAAG;AACH;AACA,EAAE,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE,OAAO,UAAU;AAChE,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE,OAAO,GAAG;AAC/B,EAAE,OAAO,OAAO;AAChB,CAAC;AACD;AACA,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D,EAAEE,YAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAC;AACrD;AACA,EAAE,IAAI,CAAC3B,QAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAGA,QAAM,CAAC,IAAI,CAAC,QAAQ,EAAE4B,iBAAe,EAAC;AACnF,EAAE,IAAI,CAAC5B,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAGA,QAAM,CAAC,IAAI,CAAC,IAAI,EAAE4B,iBAAe,EAAC;AACvE;AACA,EAAE,MAAM,GAAG,MAAM,IAAI,OAAM;AAC3B;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAC;AACpD;AACA,EAAE,IAAI,EAAE,GAAG5B,QAAM,CAAC,WAAW,CAAC,MAAM,EAAC;AACrC,EAAE,IAAI,MAAM,GAAGA,QAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAC;AAClD,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAC;AACtC;AACA,EAAE,IAAI,OAAO,GAAG,EAAC;AACjB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,EAAC;AAC1B,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAC;AAClC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAC;AACxC;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAC;AACxC,IAAI,IAAI,CAAC,GAAG,EAAC;AACb;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAC;AACjC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC;AACjD,KAAK;AACL;AACA,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAC;AACvB,IAAI,OAAO,IAAI,KAAI;AACnB,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA,eAAc,GAAG;;ACpGjB,IAAIA,QAAM,GAAGC,UAAsB,CAAC,OAAM;AAC1C;AACA,IAAI,SAAQ;AACZ,IAAI,MAAM,GAAG4B,cAAM,CAAC,MAAM,IAAIA,cAAM,CAAC,MAAM,CAAC,OAAM;AAClD,IAAI,SAAS,GAAG;AAChB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,OAAO,EAAE,OAAO;AAClB,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAC;AACD,IAAI,MAAM,GAAG,GAAE;AACf,SAAS,WAAW,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAIA,cAAM,CAAC,OAAO,IAAI,CAACA,cAAM,CAAC,OAAO,CAAC,OAAO,EAAE;AACjD,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1D,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,QAAQ,GAAG,QAAQ,IAAI7B,QAAM,CAAC,KAAK,CAAC,CAAC,EAAC;AACxC,EAAE,IAAI,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7D,KAAK,IAAI,CAAC,YAAY;AACtB,MAAM,OAAO,IAAI;AACjB,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY;AACzB,MAAM,OAAO,KAAK;AAClB,KAAK,EAAC;AACN,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,SAAS,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;AAClE,EAAE,OAAO,MAAM,CAAC,SAAS;AACzB,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC;AAC5D,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;AACxB,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC;AAC7B,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,UAAU,EAAE,UAAU;AAC5B,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO;AACP,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AACxB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;AACzB,IAAI,OAAOA,QAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,GAAG,CAAC;AACJ,CAAC;AACD;AACA,SAAS,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC5C,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;AAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY;AACjC,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAC;AACzB,KAAK,EAAC;AACN,GAAG,EAAE,UAAU,CAAC,EAAE;AAClB,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY;AACjC,MAAM,QAAQ,CAAC,CAAC,EAAC;AACjB,KAAK,EAAC;AACN,GAAG,EAAC;AACJ,CAAC;AACD,SAAc,GAAG,UAAU,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AACjF,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACpC,IAAI,QAAQ,GAAG,OAAM;AACrB,IAAI,MAAM,GAAG,UAAS;AACtB,GAAG;AACH;AACA,EAAE,MAAM,GAAG,MAAM,IAAI,OAAM;AAC3B,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAC;AAC5C;AACA,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO6B,cAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACrD,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY;AACxC,MAAM,IAAI,IAAG;AACb,MAAM,IAAI;AACV,QAAQ,GAAG,GAAGC,WAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAC;AAC9D,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC;AAC1B,OAAO;AACP,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAC;AACzB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAEH,YAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAC;AACrD,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACvF,EAAE,IAAI,CAAC3B,QAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAGA,QAAM,CAAC,IAAI,CAAC,QAAQ,EAAE4B,iBAAe,EAAC;AACnF,EAAE,IAAI,CAAC5B,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAGA,QAAM,CAAC,IAAI,CAAC,IAAI,EAAE4B,iBAAe,EAAC;AACvE;AACA,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;AACxD,IAAI,IAAI,IAAI,EAAE,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;AAC5E;AACA,IAAI,OAAOE,WAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AAC3D,GAAG,CAAC,EAAE,QAAQ,EAAC;AACf;;ACnGA,YAAc,GAAG7B,MAAsB;AACvC,cAAkB,GAAGC;;;;;;;;ACArB;AACA;AACA;AACA,IAAI,SAAS,GAAG,MAAK;AACrB;AACA;AACA;AACA,IAAI,UAAU,GAAG,WAAU;AAC3B;AACA,SAAS,UAAU,IAAI;AACvB,EAAE,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC;AACnI,CAAC;AACD;AACA,IAAI,MAAM,GAAGD,UAAsB,CAAC,OAAM;AAC1C,IAAI,MAAM,GAAG4B,cAAM,CAAC,MAAM,IAAIA,cAAM,CAAC,SAAQ;AAC7C;AACA,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE;AACtC,EAAE,cAAc,GAAG,YAAW;AAC9B,CAAC,MAAM;AACP,EAAE,cAAc,GAAG,WAAU;AAC7B,CAAC;AACD;AACA,SAAS,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE;AAChC;AACA,EAAE,IAAI,IAAI,GAAG,UAAU,EAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC;AAChF;AACA,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAC;AACtC;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE;AAChB,IAAI,IAAI,IAAI,GAAG,SAAS,EAAE;AAC1B;AACA,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,SAAS,EAAE;AACxE;AACA;AACA,QAAQ,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,EAAC;AAC7E,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,EAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY;AACxC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAC;AACrB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,KAAK;AACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,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AE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAA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IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,I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AAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE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E;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACz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CN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,gEAAgE;AACxE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,iEAAiE;AACzE,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,iEAAiE;AACzE,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,OAAO;AACP,MAAM;AACN,QAAQ,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"} \ No newline at end of file diff --git a/packages/asgardex-bitcoin/lib/utils.d.ts b/packages/asgardex-bitcoin/lib/utils.d.ts index 68b42d25..63f90045 100644 --- a/packages/asgardex-bitcoin/lib/utils.d.ts +++ b/packages/asgardex-bitcoin/lib/utils.d.ts @@ -16,4 +16,3 @@ export declare const compileMemo: (memo: string) => Buffer; export declare function getVaultFee(inputs: UTXO[], data: Buffer, feeRate: number): number; export declare function getNormalFee(inputs: UTXO[], feeRate: number): number; export declare function arrayAverage(array: Array): number; -export declare function filterByKeys(obj: object, filterKeys: Array): {}; diff --git a/packages/asgardex-bitcoin/package.json b/packages/asgardex-bitcoin/package.json index bcacbf33..53083d80 100644 --- a/packages/asgardex-bitcoin/package.json +++ b/packages/asgardex-bitcoin/package.json @@ -33,36 +33,35 @@ "postversion": "git push --follow-tags" }, "dependencies": { - "axios": "^0.19.2", + "axios": "^0.20.0", "bip39": "^3.0.2", - "bitcoinjs-lib": "^5.1.10", + "bitcoinjs-lib": "^5.2.0", "wif": "^2.0.6" }, "devDependencies": { - "@rollup/plugin-json": "^4.0.3", + "@rollup/plugin-json": "^4.1.0", "@types/bip39": "^3.0.0", "@types/bitcoinjs-lib": "^5.0.0", - "@types/jest": "^25.1.5", + "@types/jest": "^26.0.14", "@types/wif": "^2.0.1", - "@typescript-eslint/eslint-plugin": "^2.26.0", - "@typescript-eslint/parser": "^2.26.0", + "@typescript-eslint/eslint-plugin": "^4.1.1", + "@typescript-eslint/parser": "^4.1.1", "dotenv": "^8.2.0", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.1", - "eslint-plugin-prettier": "^3.1.2", - "husky": "^4.2.3", - "jest": "^25.2.7", - "lerna": "^3.20.2", - "lint-staged": "^10.1.1", - "prettier": "^2.0.2", - "rollup": "^2.3.2", + "eslint": "^7.9.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-prettier": "^3.1.4", + "husky": "^4.3.0", + "jest": "^26.4.2", + "lint-staged": "^10.4.0", + "prettier": "^2.1.2", + "rollup": "^2.27.1", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-typescript2": "^0.27.0", - "ts-jest": "^25.3.1", - "tslib": "^1.11.1", - "typescript": "^3.8.3" + "rollup-plugin-typescript2": "^0.27.2", + "ts-jest": "^26.3.0", + "tslib": "^2.0.1", + "typescript": "^4.0.2" }, "publishConfig": { "access": "public" diff --git a/packages/asgardex-bitcoin/src/client.ts b/packages/asgardex-bitcoin/src/client.ts index 307793df..63d9a0eb 100644 --- a/packages/asgardex-bitcoin/src/client.ts +++ b/packages/asgardex-bitcoin/src/client.ts @@ -50,7 +50,7 @@ interface BitcoinClient { getTransactions(address: string): Promise - calcFees(addressTo: string, memo?: string): Promise + calcFees(addressTo: string, memo?: string): Promise vaultTx(addressVault: string, valueOut: number, memo: string, feeRate: number): Promise @@ -79,7 +79,7 @@ class Client implements BitcoinClient { } // Sets this.phrase to be accessed later - setPhrase = (phrase?: string) => { + setPhrase = (phrase?: string): void => { if (phrase) { if (BIP39.validateMnemonic(phrase)) { this.phrase = phrase diff --git a/packages/asgardex-bitcoin/src/util.ts b/packages/asgardex-bitcoin/src/util.ts deleted file mode 100644 index 94c11aa0..00000000 --- a/packages/asgardex-bitcoin/src/util.ts +++ /dev/null @@ -1 +0,0 @@ -// will add Bitcoin convenience functions here diff --git a/packages/asgardex-bitcoin/src/utils.ts b/packages/asgardex-bitcoin/src/utils.ts index 85a491c5..51b1d575 100644 --- a/packages/asgardex-bitcoin/src/utils.ts +++ b/packages/asgardex-bitcoin/src/utils.ts @@ -22,22 +22,22 @@ export interface UTXO { witnessUtxo: Witness } -function inputBytes(input: UTXO) { +function inputBytes(input: UTXO): number { return TX_INPUT_BASE + (input.witnessUtxo.script ? input.witnessUtxo.script.length : TX_INPUT_PUBKEYHASH) } -export const compileMemo = (memo: string) => { +export const compileMemo = (memo: string): Buffer => { const data = Buffer.from(memo, 'utf8') // converts MEMO to buffer return Bitcoin.script.compile([Bitcoin.opcodes.OP_RETURN, data]) // Compile OP_RETURN script } -export function getVaultFee(inputs: UTXO[], data: Buffer, feeRate: number) { +export function getVaultFee(inputs: UTXO[], data: Buffer, feeRate: number): number { const vaultFee = (TX_EMPTY_SIZE + - inputs.reduce(function (a, x) { - return a + inputBytes(x) - }, 0) + - inputs.length + // +1 byte for each input signature + inputs.reduce(function (a, x) { + return a + inputBytes(x) + }, 0) + + inputs.length + // +1 byte for each input signature TX_OUTPUT_BASE + TX_OUTPUT_PUBKEYHASH + TX_OUTPUT_BASE + @@ -48,13 +48,13 @@ export function getVaultFee(inputs: UTXO[], data: Buffer, feeRate: number) { return vaultFee > 1000 ? vaultFee : 1000 } -export function getNormalFee(inputs: UTXO[], feeRate: number) { +export function getNormalFee(inputs: UTXO[], feeRate: number): number { const normalFee = (TX_EMPTY_SIZE + - inputs.reduce(function (a, x) { - return a + inputBytes(x) - }, 0) + - inputs.length + // +1 byte for each input signature + inputs.reduce(function (a, x) { + return a + inputBytes(x) + }, 0) + + inputs.length + // +1 byte for each input signature TX_OUTPUT_BASE + TX_OUTPUT_PUBKEYHASH + TX_OUTPUT_BASE + @@ -63,18 +63,8 @@ export function getNormalFee(inputs: UTXO[], feeRate: number) { return normalFee > 1000 ? normalFee : 1000 } -export function arrayAverage(array: Array) { +export function arrayAverage(array: Array): number { let sum = 0 array.forEach((value) => (sum += value)) return sum / array.length } - -export function filterByKeys(obj: object, filterKeys: Array) { - const filtered = {} - filterKeys.forEach((key) => { - if (obj.hasOwnProperty(key)) { - ;(filtered as any)[key] = (obj as any)[key] - } - }) - return filtered -} diff --git a/packages/asgardex-bitcoin/yarn.lock b/packages/asgardex-bitcoin/yarn.lock index 0781c7cf..dd3c7027 100644 --- a/packages/asgardex-bitcoin/yarn.lock +++ b/packages/asgardex-bitcoin/yarn.lock @@ -96,6 +96,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + "@babel/helper-replace-supers@^7.8.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" @@ -170,6 +175,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -265,79 +277,21 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@evocateur/libnpmaccess@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" - integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== - dependencies: - "@evocateur/npm-registry-fetch" "^4.0.0" - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - -"@evocateur/libnpmpublish@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" - integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== dependencies: - "@evocateur/npm-registry-fetch" "^4.0.0" - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - lodash.clonedeep "^4.5.0" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - semver "^5.5.1" - ssri "^6.0.1" - -"@evocateur/npm-registry-fetch@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" - integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" - safe-buffer "^5.1.2" - -"@evocateur/pacote@^9.6.3": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" - integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== - dependencies: - "@evocateur/npm-registry-fetch" "^4.0.0" - bluebird "^3.5.3" - cacache "^12.0.3" - chownr "^1.1.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.5.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.4.4" - npm-pick-manifest "^3.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.3" - safe-buffer "^5.2.0" - semver "^5.7.0" - ssri "^6.0.1" - tar "^4.4.10" - unique-filename "^1.1.1" - which "^1.3.1" + strip-json-comments "^3.1.1" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -355,160 +309,162 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== +"@jest/console@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.3.0.tgz#ed04063efb280c88ba87388b6f16427c0a85c856" + integrity sha512-/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.3.0" + jest-util "^26.3.0" slash "^3.0.0" -"@jest/core@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" - integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA== +"@jest/core@^26.4.2": + version "26.4.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.4.2.tgz#85d0894f31ac29b5bab07aa86806d03dd3d33edc" + integrity sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg== dependencies: - "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.1" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/console" "^26.3.0" + "@jest/reporters" "^26.4.1" + "@jest/test-result" "^26.3.0" + "@jest/transform" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^25.5.0" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-resolve-dependencies "^25.5.4" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - jest-watcher "^25.5.0" + jest-changed-files "^26.3.0" + jest-config "^26.4.2" + jest-haste-map "^26.3.0" + jest-message-util "^26.3.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.4.0" + jest-resolve-dependencies "^26.4.2" + jest-runner "^26.4.2" + jest-runtime "^26.4.2" + jest-snapshot "^26.4.2" + jest-util "^26.3.0" + jest-validate "^26.4.2" + jest-watcher "^26.3.0" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== +"@jest/environment@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.3.0.tgz#e6953ab711ae3e44754a025f838bde1a7fd236a0" + integrity sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA== dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" + "@jest/fake-timers" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + jest-mock "^26.3.0" -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== +"@jest/fake-timers@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.3.0.tgz#f515d4667a6770f60ae06ae050f4e001126c666a" + integrity sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A== dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" + "@jest/types" "^26.3.0" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.3.0" + jest-mock "^26.3.0" + jest-util "^26.3.0" -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== +"@jest/globals@^26.4.2": + version "26.4.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.4.2.tgz#73c2a862ac691d998889a241beb3dc9cada40d4a" + integrity sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow== dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" + "@jest/environment" "^26.3.0" + "@jest/types" "^26.3.0" + expect "^26.4.2" -"@jest/reporters@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" - integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== +"@jest/reporters@^26.4.1": + version "26.4.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.4.1.tgz#3b4d6faf28650f3965f8b97bc3d114077fb71795" + integrity sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.3.0" + "@jest/test-result" "^26.3.0" + "@jest/transform" "^26.3.0" + "@jest/types" "^26.3.0" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.5.1" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-haste-map "^26.3.0" + jest-resolve "^26.4.0" + jest-util "^26.3.0" + jest-worker "^26.3.0" slash "^3.0.0" source-map "^0.6.0" - string-length "^3.1.0" + string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" + v8-to-istanbul "^5.0.1" optionalDependencies: - node-notifier "^6.0.0" + node-notifier "^8.0.0" -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== +"@jest/source-map@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.3.0.tgz#0e646e519883c14c551f7b5ae4ff5f1bfe4fc3d9" + integrity sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== +"@jest/test-result@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.3.0.tgz#46cde01fa10c0aaeb7431bf71e4a20d885bc7fdb" + integrity sha512-a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg== dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/console" "^26.3.0" + "@jest/types" "^26.3.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== +"@jest/test-sequencer@^26.4.2": + version "26.4.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz#58a3760a61eec758a2ce6080201424580d97cbba" + integrity sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog== dependencies: - "@jest/test-result" "^25.5.0" + "@jest/test-result" "^26.3.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" + jest-haste-map "^26.3.0" + jest-runner "^26.4.2" + jest-runtime "^26.4.2" -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== +"@jest/transform@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55" + integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" + "@jest/types" "^26.3.0" babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" + jest-haste-map "^26.3.0" + jest-regex-util "^26.0.0" + jest-util "^26.3.0" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -523,817 +479,42 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@lerna/add@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" - integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== - dependencies: - "@evocateur/pacote" "^9.6.3" - "@lerna/bootstrap" "3.21.0" - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/npm-conf" "3.16.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - npm-package-arg "^6.1.0" - p-map "^2.1.0" - semver "^6.2.0" - -"@lerna/bootstrap@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" - integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/has-npm-version" "3.16.5" - "@lerna/npm-install" "3.16.5" - "@lerna/package-graph" "3.18.5" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.16.5" - "@lerna/run-lifecycle" "3.16.2" - "@lerna/run-topologically" "3.18.5" - "@lerna/symlink-binary" "3.17.0" - "@lerna/symlink-dependencies" "3.17.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - get-port "^4.2.0" - multimatch "^3.0.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^2.1.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - read-package-tree "^5.1.6" - semver "^6.2.0" - -"@lerna/changed@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" - integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== - dependencies: - "@lerna/collect-updates" "3.20.0" - "@lerna/command" "3.21.0" - "@lerna/listable" "3.18.5" - "@lerna/output" "3.13.0" - -"@lerna/check-working-tree@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" - integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== - dependencies: - "@lerna/collect-uncommitted" "3.16.5" - "@lerna/describe-ref" "3.16.5" - "@lerna/validation-error" "3.13.0" - -"@lerna/child-process@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" - integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== - dependencies: - chalk "^2.3.1" - execa "^1.0.0" - strong-log-transformer "^2.0.0" - -"@lerna/clean@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" - integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/prompt" "3.18.5" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.16.5" - p-map "^2.1.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - -"@lerna/cli@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" - integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== - dependencies: - "@lerna/global-options" "3.13.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^14.2.2" - -"@lerna/collect-uncommitted@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" - integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== - dependencies: - "@lerna/child-process" "3.16.5" - chalk "^2.3.1" - figgy-pudding "^3.5.1" - npmlog "^4.1.2" - -"@lerna/collect-updates@3.20.0": - version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" - integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/describe-ref" "3.16.5" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^2.0.0" - -"@lerna/command@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" - integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/package-graph" "3.18.5" - "@lerna/project" "3.21.0" - "@lerna/validation-error" "3.13.0" - "@lerna/write-log-file" "3.13.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^1.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" - -"@lerna/conventional-commits@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.18.5.tgz#08efd2e5b45acfaf3f151a53a3ec7ecade58a7bc" - integrity sha512-qcvXIEJ3qSgalxXnQ7Yxp5H9Ta5TVyai6vEor6AAEHc20WiO7UIdbLDCxBtiiHMdGdpH85dTYlsoYUwsCJu3HQ== - dependencies: - "@lerna/validation-error" "3.13.0" - conventional-changelog-angular "^5.0.3" - conventional-changelog-core "^3.1.6" - conventional-recommended-bump "^5.0.0" - fs-extra "^8.1.0" - get-stream "^4.0.0" - lodash.template "^4.5.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - pify "^4.0.1" - semver "^6.2.0" - -"@lerna/create-symlink@3.16.2": - version "3.16.2" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" - integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== - dependencies: - "@zkochan/cmd-shim" "^3.1.0" - fs-extra "^8.1.0" - npmlog "^4.1.2" - -"@lerna/create@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.21.0.tgz#e813832adf3488728b139e5a75c8b01b1372e62f" - integrity sha512-cRIopzKzE2vXJPmsiwCDMWo4Ct+KTmX3nvvkQLDoQNrrRK7w+3KQT3iiorbj1koD95RsVQA7mS2haWok9SIv0g== - dependencies: - "@evocateur/pacote" "^9.6.3" - "@lerna/child-process" "3.16.5" - "@lerna/command" "3.21.0" - "@lerna/npm-conf" "3.16.0" - "@lerna/validation-error" "3.13.0" - camelcase "^5.0.0" - dedent "^0.7.0" - fs-extra "^8.1.0" - globby "^9.2.0" - init-package-json "^1.10.3" - npm-package-arg "^6.1.0" - p-reduce "^1.0.0" - pify "^4.0.1" - semver "^6.2.0" - slash "^2.0.0" - validate-npm-package-license "^3.0.3" - validate-npm-package-name "^3.0.0" - whatwg-url "^7.0.0" - -"@lerna/describe-ref@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" - integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== - dependencies: - "@lerna/child-process" "3.16.5" - npmlog "^4.1.2" - -"@lerna/diff@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" - integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/command" "3.21.0" - "@lerna/validation-error" "3.13.0" - npmlog "^4.1.2" - -"@lerna/exec@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" - integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/profiler" "3.20.0" - "@lerna/run-topologically" "3.18.5" - "@lerna/validation-error" "3.13.0" - p-map "^2.1.0" - -"@lerna/filter-options@3.20.0": - version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" - integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== - dependencies: - "@lerna/collect-updates" "3.20.0" - "@lerna/filter-packages" "3.18.0" - dedent "^0.7.0" - figgy-pudding "^3.5.1" - npmlog "^4.1.2" - -"@lerna/filter-packages@3.18.0": - version "3.18.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" - integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== - dependencies: - "@lerna/validation-error" "3.13.0" - multimatch "^3.0.0" - npmlog "^4.1.2" - -"@lerna/get-npm-exec-opts@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" - integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== - dependencies: - npmlog "^4.1.2" - -"@lerna/get-packed@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" - integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== - dependencies: - fs-extra "^8.1.0" - ssri "^6.0.1" - tar "^4.4.8" - -"@lerna/github-client@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.16.5.tgz#2eb0235c3bf7a7e5d92d73e09b3761ab21f35c2e" - integrity sha512-rHQdn8Dv/CJrO3VouOP66zAcJzrHsm+wFuZ4uGAai2At2NkgKH+tpNhQy2H1PSC0Ezj9LxvdaHYrUzULqVK5Hw== - dependencies: - "@lerna/child-process" "3.16.5" - "@octokit/plugin-enterprise-rest" "^3.6.1" - "@octokit/rest" "^16.28.4" - git-url-parse "^11.1.2" - npmlog "^4.1.2" - -"@lerna/gitlab-client@3.15.0": - version "3.15.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" - integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== - dependencies: - node-fetch "^2.5.0" - npmlog "^4.1.2" - whatwg-url "^7.0.0" - -"@lerna/global-options@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" - integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== - -"@lerna/has-npm-version@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" - integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== - dependencies: - "@lerna/child-process" "3.16.5" - semver "^6.2.0" - -"@lerna/import@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.21.0.tgz#87b08f2a2bfeeff7357c6fd8490e638d3cd5b32d" - integrity sha512-aISkL4XD0Dqf5asDaOZWu65jgj8fWUhuQseZWuQe3UfHxav69fTS2YLIngUfencaOSZVOcVCom28YCzp61YDxw== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/command" "3.21.0" - "@lerna/prompt" "3.18.5" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - fs-extra "^8.1.0" - p-map-series "^1.0.0" - -"@lerna/info@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" - integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/output" "3.13.0" - envinfo "^7.3.1" - -"@lerna/init@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" - integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/command" "3.21.0" - fs-extra "^8.1.0" - p-map "^2.1.0" - write-json-file "^3.2.0" - -"@lerna/link@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" - integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/package-graph" "3.18.5" - "@lerna/symlink-dependencies" "3.17.0" - p-map "^2.1.0" - slash "^2.0.0" - -"@lerna/list@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" - integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/listable" "3.18.5" - "@lerna/output" "3.13.0" - -"@lerna/listable@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" - integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== - dependencies: - "@lerna/query-graph" "3.18.5" - chalk "^2.3.1" - columnify "^1.5.4" - -"@lerna/log-packed@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" - integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== - dependencies: - byte-size "^5.0.1" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" - -"@lerna/npm-conf@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" - integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== - dependencies: - config-chain "^1.1.11" - pify "^4.0.1" - -"@lerna/npm-dist-tag@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" - integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== - dependencies: - "@evocateur/npm-registry-fetch" "^4.0.0" - "@lerna/otplease" "3.18.5" - figgy-pudding "^3.5.1" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - -"@lerna/npm-install@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" - integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/get-npm-exec-opts" "3.13.0" - fs-extra "^8.1.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.2" - write-pkg "^3.1.0" - -"@lerna/npm-publish@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" - integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== - dependencies: - "@evocateur/libnpmpublish" "^1.2.2" - "@lerna/otplease" "3.18.5" - "@lerna/run-lifecycle" "3.16.2" - figgy-pudding "^3.5.1" - fs-extra "^8.1.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - pify "^4.0.1" - read-package-json "^2.0.13" - -"@lerna/npm-run-script@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" - integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== - dependencies: - "@lerna/child-process" "3.16.5" - "@lerna/get-npm-exec-opts" "3.13.0" - npmlog "^4.1.2" - -"@lerna/otplease@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" - integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== - dependencies: - "@lerna/prompt" "3.18.5" - figgy-pudding "^3.5.1" - -"@lerna/output@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" - integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== - dependencies: - npmlog "^4.1.2" - -"@lerna/pack-directory@3.16.4": - version "3.16.4" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" - integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== - dependencies: - "@lerna/get-packed" "3.16.0" - "@lerna/package" "3.16.0" - "@lerna/run-lifecycle" "3.16.2" - figgy-pudding "^3.5.1" - npm-packlist "^1.4.4" - npmlog "^4.1.2" - tar "^4.4.10" - temp-write "^3.4.0" - -"@lerna/package-graph@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" - integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== - dependencies: - "@lerna/prerelease-id-from-version" "3.16.0" - "@lerna/validation-error" "3.13.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - semver "^6.2.0" - -"@lerna/package@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" - integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== - dependencies: - load-json-file "^5.3.0" - npm-package-arg "^6.1.0" - write-pkg "^3.1.0" - -"@lerna/prerelease-id-from-version@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" - integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== - dependencies: - semver "^6.2.0" - -"@lerna/profiler@3.20.0": - version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" - integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== - dependencies: - figgy-pudding "^3.5.1" - fs-extra "^8.1.0" - npmlog "^4.1.2" - upath "^1.2.0" - -"@lerna/project@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" - integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== - dependencies: - "@lerna/package" "3.16.0" - "@lerna/validation-error" "3.13.0" - cosmiconfig "^5.1.0" - dedent "^0.7.0" - dot-prop "^4.2.0" - glob-parent "^5.0.0" - globby "^9.2.0" - load-json-file "^5.3.0" - npmlog "^4.1.2" - p-map "^2.1.0" - resolve-from "^4.0.0" - write-json-file "^3.2.0" - -"@lerna/prompt@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" - integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== - dependencies: - inquirer "^6.2.0" - npmlog "^4.1.2" - -"@lerna/publish@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.21.0.tgz#0112393125f000484c3f50caba71a547f91bd7f4" - integrity sha512-JZ+ehZB9UCQ9nqH8Ld/Yqc/If++aK/7XIubkrB9sQ5hf2GeIbmI/BrJpMgLW/e9T5bKrUBZPUvoUN3daVipA5A== - dependencies: - "@evocateur/libnpmaccess" "^3.1.2" - "@evocateur/npm-registry-fetch" "^4.0.0" - "@evocateur/pacote" "^9.6.3" - "@lerna/check-working-tree" "3.16.5" - "@lerna/child-process" "3.16.5" - "@lerna/collect-updates" "3.20.0" - "@lerna/command" "3.21.0" - "@lerna/describe-ref" "3.16.5" - "@lerna/log-packed" "3.16.0" - "@lerna/npm-conf" "3.16.0" - "@lerna/npm-dist-tag" "3.18.5" - "@lerna/npm-publish" "3.18.5" - "@lerna/otplease" "3.18.5" - "@lerna/output" "3.13.0" - "@lerna/pack-directory" "3.16.4" - "@lerna/prerelease-id-from-version" "3.16.0" - "@lerna/prompt" "3.18.5" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/run-lifecycle" "3.16.2" - "@lerna/run-topologically" "3.18.5" - "@lerna/validation-error" "3.13.0" - "@lerna/version" "3.21.0" - figgy-pudding "^3.5.1" - fs-extra "^8.1.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^2.1.0" - p-pipe "^1.2.0" - semver "^6.2.0" - -"@lerna/pulse-till-done@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" - integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== - dependencies: - npmlog "^4.1.2" - -"@lerna/query-graph@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" - integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== - dependencies: - "@lerna/package-graph" "3.18.5" - figgy-pudding "^3.5.1" - -"@lerna/resolve-symlink@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" - integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== - dependencies: - fs-extra "^8.1.0" - npmlog "^4.1.2" - read-cmd-shim "^1.0.1" - -"@lerna/rimraf-dir@3.16.5": - version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" - integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== - dependencies: - "@lerna/child-process" "3.16.5" - npmlog "^4.1.2" - path-exists "^3.0.0" - rimraf "^2.6.2" - -"@lerna/run-lifecycle@3.16.2": - version "3.16.2" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" - integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== - dependencies: - "@lerna/npm-conf" "3.16.0" - figgy-pudding "^3.5.1" - npm-lifecycle "^3.1.2" - npmlog "^4.1.2" - -"@lerna/run-topologically@3.18.5": - version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" - integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== - dependencies: - "@lerna/query-graph" "3.18.5" - figgy-pudding "^3.5.1" - p-queue "^4.0.0" - -"@lerna/run@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" - integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== - dependencies: - "@lerna/command" "3.21.0" - "@lerna/filter-options" "3.20.0" - "@lerna/npm-run-script" "3.16.5" - "@lerna/output" "3.13.0" - "@lerna/profiler" "3.20.0" - "@lerna/run-topologically" "3.18.5" - "@lerna/timer" "3.13.0" - "@lerna/validation-error" "3.13.0" - p-map "^2.1.0" - -"@lerna/symlink-binary@3.17.0": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" - integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== - dependencies: - "@lerna/create-symlink" "3.16.2" - "@lerna/package" "3.16.0" - fs-extra "^8.1.0" - p-map "^2.1.0" - -"@lerna/symlink-dependencies@3.17.0": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" - integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== - dependencies: - "@lerna/create-symlink" "3.16.2" - "@lerna/resolve-symlink" "3.16.0" - "@lerna/symlink-binary" "3.17.0" - fs-extra "^8.1.0" - p-finally "^1.0.0" - p-map "^2.1.0" - p-map-series "^1.0.0" - -"@lerna/timer@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" - integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== - -"@lerna/validation-error@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" - integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== - dependencies: - npmlog "^4.1.2" - -"@lerna/version@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.21.0.tgz#5bcc3d2de9eb8f4db18efb0d88973f9a509eccc3" - integrity sha512-nIT3u43fCNj6uSMN1dRxFnF4GhmIiOEqSTkGSjrMU+8kHKwzOqS/6X6TOzklBmCyEZOpF/fLlGqH3BZHnwLDzQ== - dependencies: - "@lerna/check-working-tree" "3.16.5" - "@lerna/child-process" "3.16.5" - "@lerna/collect-updates" "3.20.0" - "@lerna/command" "3.21.0" - "@lerna/conventional-commits" "3.18.5" - "@lerna/github-client" "3.16.5" - "@lerna/gitlab-client" "3.15.0" - "@lerna/output" "3.13.0" - "@lerna/prerelease-id-from-version" "3.16.0" - "@lerna/prompt" "3.18.5" - "@lerna/run-lifecycle" "3.16.2" - "@lerna/run-topologically" "3.18.5" - "@lerna/validation-error" "3.13.0" - chalk "^2.3.1" - dedent "^0.7.0" - load-json-file "^5.3.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^2.1.0" - p-pipe "^1.2.0" - p-reduce "^1.0.0" - p-waterfall "^1.0.0" - semver "^6.2.0" - slash "^2.0.0" - temp-write "^3.4.0" - write-json-file "^3.2.0" - -"@lerna/write-log-file@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" - integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^2.3.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@octokit/auth-token@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.1.tgz#375d79eebd03750e6a9b0299e80b8167c7c85655" - integrity sha512-NB81O5h39KfHYGtgfWr2booRxp2bWOJoqbWwbyUg2hw6h35ArWYlAST5B3XwAkbdcx13yt84hFXyFP5X0QToWA== - dependencies: - "@octokit/types" "^4.0.1" - -"@octokit/endpoint@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" - integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== - dependencies: - "@octokit/types" "^2.11.1" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" - -"@octokit/plugin-enterprise-rest@^3.6.1": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-3.6.2.tgz#74de25bef21e0182b4fa03a8678cd00a4e67e561" - integrity sha512-3wF5eueS5OHQYuAEudkpN+xVeUsg8vYEMMenEzLphUZ7PRZ8OJtDcsreL3ad9zxXmBbaFWzLmFcdob5CLyZftA== - -"@octokit/plugin-paginate-rest@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" - integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== - dependencies: - "@octokit/types" "^2.0.1" - -"@octokit/plugin-request-log@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" - integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== - -"@octokit/plugin-rest-endpoint-methods@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" - integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== - dependencies: - "@octokit/types" "^2.0.1" - deprecation "^2.3.1" - -"@octokit/request-error@^1.0.2": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" - integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== +"@jest/types@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" + integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" -"@octokit/request-error@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.1.tgz#49bd71e811daffd5bdd06ef514ca47b5039682d1" - integrity sha512-5lqBDJ9/TOehK82VvomQ6zFiZjPeSom8fLkFVLuYL3sKiIb5RB8iN/lenLkY7oBmyQcGP7FBMGiIZTO8jufaRQ== +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@octokit/types" "^4.0.1" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.2.0": - version "5.4.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.3.tgz#85b78ea4ae6e1c4ac2b02528102d4cd776145935" - integrity sha512-RtqMzF3mhqxmWoqVD84x2gdtbqn2inTBU/HPkWf5u0R5r7fBTaLPAcCBgukeI2gjTwD9ChL9Cu0MlTBs7B/tSw== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.11.1" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^5.0.0" - -"@octokit/rest@^16.28.4": - version "16.43.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b" - integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw== - dependencies: - "@octokit/auth-token" "^2.4.0" - "@octokit/plugin-paginate-rest" "^1.1.1" - "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "2.4.0" - "@octokit/request" "^5.2.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^4.0.0" + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" -"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": - version "2.16.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" - integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== - dependencies: - "@types/node" ">= 8" +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== -"@octokit/types@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-4.0.1.tgz#dd32ff2407699f3a0c909cdd24de17b45b7d7051" - integrity sha512-Ho6h7w2h9y8RRE8r656hIj1oiSbwbIHJGF5r9G5FOwS2VdDPq8QLGvsG4x6pKHpvyGK7j+43sAc2cJKMiFoIJw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@types/node" ">= 8" + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" -"@rollup/plugin-json@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.0.3.tgz#747e2c2884c5a0fa00b66c9c0f3f1012cddca534" - integrity sha512-QMUT0HZNf4CX17LMdwaslzlYHUKTYGuuk34yYIgZrNdu+pMEfqMS55gck7HEeHBKXHM4cz5Dg1OVwythDdbbuQ== +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" @@ -1346,12 +527,14 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: - any-observable "^0.3.0" + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" "@sinonjs/commons@^1.7.0": version "1.8.0" @@ -1360,6 +543,24 @@ dependencies: type-detect "4.0.8" +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.0.0": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__core@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" @@ -1412,30 +613,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - "@types/graceful-fs@^4.1.2": version "4.1.3" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" @@ -1463,10 +645,17 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^25.1.5": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@26.x", "@types/jest@^26.0.14": + version "26.0.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.14.tgz#078695f8f65cb55c5a98450d65083b2b73e5a3f3" + integrity sha512-Hz5q8Vu0D288x3iWXePSn53W7hAjP0H7EQ6QvDO9c7t46mR0lNOLlfuwQ+JkVxuhygHzlzPX+0jKdA3ZgSh+Vg== dependencies: jest-diff "^25.2.1" pretty-format "^25.2.1" @@ -1476,17 +665,7 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimist@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" - integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= - -"@types/node@*", "@types/node@>= 8": +"@types/node@*": version "14.0.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== @@ -1511,10 +690,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/prettier@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.1.tgz#be148756d5480a84cde100324c03a86ae5739fb5" + integrity sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ== "@types/resolve@0.0.8": version "0.0.8" @@ -1547,124 +726,108 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.26.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== +"@typescript-eslint/eslint-plugin@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.1.tgz#78d5b18e259b13c2f4ec41dd9105af269a161a75" + integrity sha512-Hoxyt99EA9LMmqo/5PuWWPeWeB3mKyvibfJ1Hy5SfiUpjE8Nqp+5QNd9fOkzL66+fqvIWSIE+Ett16LGMzCGnQ== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/experimental-utils" "4.1.1" + "@typescript-eslint/scope-manager" "4.1.1" + debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@typescript-eslint/experimental-utils@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.1.tgz#52ff4e37c93113eb96385a4e6d075abece1ea72d" + integrity sha512-jzYsNciHoa4Z3c1URtmeT/bamYm8Dwfw6vuN3WHIE/BXb1iC4KveAnXDErTAZtPVxTYBaYn3n2gbt6F6D2rm1A== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/scope-manager" "4.1.1" + "@typescript-eslint/types" "4.1.1" + "@typescript-eslint/typescript-estree" "4.1.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.26.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== +"@typescript-eslint/parser@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.1.1.tgz#324b4b35e314075adbc92bd8330cf3ef0c88cf3e" + integrity sha512-NLIhmicpKGfJbdXyQBz9j48PA6hq6e+SDOoXy7Ak6bq1ebGqbgG+fR1UIDAuay6OjQdot69c/URu2uLlsP8GQQ== dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" + "@typescript-eslint/scope-manager" "4.1.1" + "@typescript-eslint/types" "4.1.1" + "@typescript-eslint/typescript-estree" "4.1.1" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.1.1.tgz#bdb8526e82435f32b4ccd9dd4cec01af97b48850" + integrity sha512-0W8TTobCvIIQ2FsrYTffyZGAAFUyIbEHq5EYJb1m7Rpd005jrnOvKOo8ywCLhs/Bm17C+KsrUboBvBAARQVvyA== + dependencies: + "@typescript-eslint/types" "4.1.1" + "@typescript-eslint/visitor-keys" "4.1.1" + +"@typescript-eslint/types@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.1.1.tgz#57500c4a86b28cb47094c1a62f1177ea279a09cb" + integrity sha512-zrBiqOKYerMTllKcn+BP+i1b7LW/EbMMYytroXMxUTvFPn1smkCu0D7lSAx29fTUO4jnwV0ljSvYQtn2vNrNxA== -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@typescript-eslint/typescript-estree@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.1.tgz#2015a84d71303ecdb6f46efd807ac19a51aab490" + integrity sha512-2AUg5v0liVBsqbGxBphbJ0QbGqSRVaF5qPoTPWcxop+66vMdU1h4CCvHxTC47+Qb+Pr4l2RhXDd41JNpwcQEKw== dependencies: + "@typescript-eslint/types" "4.1.1" + "@typescript-eslint/visitor-keys" "4.1.1" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" + globby "^11.0.1" is-glob "^4.0.1" lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" -"@zkochan/cmd-shim@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" - integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== - dependencies: - is-windows "^1.0.0" - mkdirp-promise "^5.0.1" - mz "^2.5.0" - -JSONStream@^1.0.4, JSONStream@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +"@typescript-eslint/visitor-keys@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.1.tgz#bb05664bf4bea28dc120d1da94f3027d42ab0f6f" + integrity sha512-/EOOXbA2ferGLG6RmCHEQ0lTTLkOlXYDgblCmQk3tIU7mTPLm4gKhFMeeUSe+bcchTUsKeCk8xcpbop5Zr/8Rw== dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + "@typescript-eslint/types" "4.1.1" + eslint-visitor-keys "^2.0.0" -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.0, acorn@^7.1.1: +acorn@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" +acorn@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== aggregate-error@^3.0.0: version "3.0.1" @@ -1684,15 +847,25 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.4: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-colors@^3.2.1: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" @@ -1701,16 +874,6 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.11.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -1736,16 +899,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1762,24 +915,6 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1802,58 +937,16 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-differ@^2.0.3: +array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" - integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1886,11 +979,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1906,24 +994,24 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +axios@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" + integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== dependencies: - follow-redirects "1.5.10" + follow-redirects "^1.10.0" -babel-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== +babel-jest@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463" + integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g== dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/transform" "^26.3.0" + "@jest/types" "^26.3.0" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" + babel-preset-jest "^26.3.0" + chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -1938,23 +1026,25 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== +babel-plugin-jest-hoist@^26.2.0: + version "26.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd" + integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" - integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== +babel-preset-current-node-syntax@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" + integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1963,13 +1053,13 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== +babel-preset-jest@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776" + integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw== dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.2.0" + babel-preset-current-node-syntax "^0.1.3" balanced-match@^1.0.0: version "1.0.0" @@ -2008,11 +1098,6 @@ bech32@^1.1.2: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -before-after-hook@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - bindings@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -2025,6 +1110,11 @@ bip174@^1.0.1: resolved "https://registry.yarnpkg.com/bip174/-/bip174-1.0.1.tgz#858a587f9529e22ee9b0572fd884e5783696824d" integrity sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ== +bip174@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.0.1.tgz#39cf8ca99e50ce538fb762589832f4481d07c254" + integrity sha512-i3X26uKJOkDTAalYAp0Er+qGMDhrbbh2o93/xiPyAN2s25KrClSpe3VXo/7mNJoqA5qfko8rLS2l3RWZgYmjKQ== + bip32@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.5.tgz#e3808a9e97a880dbafd0f5f09ca4a1e14ee275d2" @@ -2081,13 +1171,13 @@ bitcoinjs-lib@*: varuint-bitcoin "^1.0.4" wif "^2.0.1" -bitcoinjs-lib@^5.1.10: - version "5.1.10" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-5.1.10.tgz#91ec7cde308007008b22ed9117c5f26970cbad54" - integrity sha512-CesUqtBtnYc+SOMsYN9jWQWhdohW1MpklUkF7Ukn4HiAyN6yxykG+cIJogfRt6x5xcgH87K1Q+Mnoe/B+du1Iw== +bitcoinjs-lib@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-5.2.0.tgz#caf8b5efb04274ded1b67e0706960b93afb9d332" + integrity sha512-5DcLxGUDejgNBYcieMIUfjORtUeNWl828VWLHJGVKZCb4zIS1oOySTUr0LGmcqJBQgTBz3bGbRQla4FgrdQEIQ== dependencies: bech32 "^1.1.2" - bip174 "^1.0.1" + bip174 "^2.0.1" bip32 "^2.0.4" bip66 "^1.1.0" bitcoin-ops "^1.4.0" @@ -2102,11 +1192,6 @@ bitcoinjs-lib@^5.1.10: varuint-bitcoin "^1.0.4" wif "^2.0.1" -bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" @@ -2153,13 +1238,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -2190,11 +1268,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= - buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2205,42 +1278,6 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" - integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== - -cacache@^12.0.0, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2256,71 +1293,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2343,7 +1320,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.2: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2368,15 +1345,18 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== ci-info@^2.0.0: version "2.0.0" @@ -2406,13 +1386,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -2420,7 +1393,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-truncate@2.1.0, cli-truncate@^2.1.0: +cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== @@ -2428,20 +1401,6 @@ cli-truncate@2.1.0, cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -2451,30 +1410,11 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -2512,14 +1452,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2527,29 +1459,16 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@~2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" + integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-func@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.4.tgz#6b07c4c5e8341119baf44578085bda0f4a823516" - integrity sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q== - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - compare-versions@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" @@ -2565,122 +1484,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -conventional-changelog-angular@^5.0.3: - version "5.0.10" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205" - integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-core@^3.1.6: - version "3.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" - integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== - dependencies: - conventional-changelog-writer "^4.0.6" - conventional-commits-parser "^3.0.3" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "2.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^2.0.3" - lodash "^4.2.1" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^3.0.0" - -conventional-changelog-preset-loader@^2.1.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^4.0.6: - version "4.0.16" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" - integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.6" - dateformat "^3.0.0" - handlebars "^4.7.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^7.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^3.0.0" - -conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" - integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" - integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^7.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" - -conventional-recommended-bump@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" - integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.1.1" - conventional-commits-filter "^2.0.2" - conventional-commits-parser "^3.0.3" - git-raw-commits "2.0.0" - git-semver-tags "^2.0.3" - meow "^4.0.0" - q "^1.5.1" - convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -2688,48 +1491,26 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" + yaml "^1.10.0" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" @@ -2754,7 +1535,7 @@ create-hmac@^1.1.3, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2774,7 +1555,16 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.1: +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -2784,32 +1574,13 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.0.0: +cssstyle@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= - dependencies: - number-is-nan "^1.0.0" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2817,26 +1588,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -debug@3.1.0, debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - ms "2.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -2845,13 +1604,6 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2859,24 +1611,16 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2887,7 +1631,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -2897,20 +1641,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -2938,45 +1668,27 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - diff-sequences@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== +diff-sequences@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" + integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - path-type "^3.0.0" + path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" @@ -2985,47 +1697,18 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= - dependencies: - is-obj "^1.0.0" - -dot-prop@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - is-obj "^1.0.0" + webidl-conversions "^5.0.0" dotenv@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3034,11 +1717,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -elegant-spinner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" - integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== - elliptic@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" @@ -3052,6 +1730,11 @@ elliptic@^6.4.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emittery@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" + integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -3062,14 +1745,7 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3083,75 +1759,34 @@ enquirer@^2.3.5: dependencies: ansi-colors "^3.2.1" -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -envinfo@^7.3.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" - integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== - -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" estraverse "^4.2.0" @@ -3160,17 +1795,17 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.10.1: +eslint-config-prettier@^6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== dependencies: get-stdin "^6.0.0" -eslint-plugin-prettier@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" - integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== +eslint-plugin-prettier@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" + integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== dependencies: prettier-linter-helpers "^1.0.0" @@ -3182,12 +1817,13 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-scope@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^4.1.1" eslint-utils@^2.0.0: version "2.0.0" @@ -3196,27 +1832,46 @@ eslint-utils@^2.0.0: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" + integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" @@ -3225,40 +1880,38 @@ eslint@^6.8.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.1.1" + acorn "^7.4.0" acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -3272,6 +1925,13 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -3282,6 +1942,11 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" @@ -3297,11 +1962,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" @@ -3320,26 +1980,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" - integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== +execa@^4.0.0, execa@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3369,17 +2013,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== +expect@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.2.tgz#36db120928a5a2d7d9736643032de32f24e1b2a1" + integrity sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.3.0" ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.4.2" + jest-message-util "^26.3.0" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -3401,15 +2045,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3444,28 +2079,35 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== +fast-glob@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -3473,19 +2115,7 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0, figures@^3.2.0: +figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -3530,28 +2160,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -3581,20 +2189,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" +follow-redirects@^1.10.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== for-in@^1.0.2: version "1.0.2" @@ -3622,15 +2220,7 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@8.1.0, fs-extra@^8.1.0: +fs-extra@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -3639,23 +2229,6 @@ fs-extra@8.1.0, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3666,35 +2239,11 @@ fsevents@^2.1.2, fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3715,33 +2264,12 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= - dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" - through2 "^2.0.0" - -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -3767,76 +2295,14 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-raw-commits@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" - integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" - integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== - dependencies: - meow "^4.0.0" - semver "^6.0.0" - -git-up@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== - dependencies: - is-ssh "^1.3.0" - parse-url "^5.0.0" - -git-url-parse@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" - integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== - dependencies: - git-up "^4.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= - dependencies: - ini "^1.3.2" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3860,21 +2326,19 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -3884,18 +2348,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.7.6: - version "4.7.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" - integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3909,11 +2361,6 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3924,16 +2371,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3965,13 +2402,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -3998,36 +2428,23 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4037,35 +2454,20 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -husky@^4.2.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" - integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== +husky@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" + integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== dependencies: chalk "^4.0.0" ci-info "^2.0.0" compare-versions "^3.6.0" - cosmiconfig "^6.0.0" + cosmiconfig "^7.0.0" find-versions "^3.2.0" opencollective-postinstall "^2.0.2" pkg-dir "^4.2.0" @@ -4073,39 +2475,24 @@ husky@^4.2.3: slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -import-fresh@^3.0.0, import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -4113,14 +2500,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -4134,28 +2513,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4164,78 +2526,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.2, ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - -inquirer@^6.2.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4260,11 +2560,6 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -4286,11 +2581,6 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -4309,11 +2599,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - is-docker@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" @@ -4331,23 +2616,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4363,13 +2636,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -4394,16 +2660,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4411,12 +2672,10 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-reference@^1.1.2: version "1.1.4" @@ -4425,25 +2684,11 @@ is-reference@^1.1.2: dependencies: "@types/estree" "0.0.39" -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-ssh@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== - dependencies: - protocols "^1.1.0" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4454,43 +2699,24 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^1.0.0" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^1.0.0, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -4512,11 +2738,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -4527,7 +2748,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -4563,61 +2784,59 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" - integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== +jest-changed-files@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.3.0.tgz#68fb2a7eb125f50839dab1f5a17db3607fe195b1" + integrity sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g== dependencies: - "@jest/types" "^25.5.0" - execa "^3.2.0" + "@jest/types" "^26.3.0" + execa "^4.0.0" throat "^5.0.0" -jest-cli@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" - integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw== +jest-cli@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.4.2.tgz#24afc6e4dfc25cde4c7ec4226fb7db5f157c21da" + integrity sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw== dependencies: - "@jest/core" "^25.5.4" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/core" "^26.4.2" + "@jest/test-result" "^26.3.0" + "@jest/types" "^26.3.0" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.5.4" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-config "^26.4.2" + jest-util "^26.3.0" + jest-validate "^26.4.2" prompts "^2.0.1" - realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== +jest-config@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.4.2.tgz#da0cbb7dc2c131ffe831f0f7f2a36256e6086558" + integrity sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" + "@jest/test-sequencer" "^26.4.2" + "@jest/types" "^26.3.0" + babel-jest "^26.3.0" + chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-environment-jsdom "^26.3.0" + jest-environment-node "^26.3.0" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.4.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.4.0" + jest-util "^26.3.0" + jest-validate "^26.4.2" micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" + pretty-format "^26.4.2" -jest-diff@^25.2.1, jest-diff@^25.5.0: +jest-diff@^25.2.1: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== @@ -4627,305 +2846,328 @@ jest-diff@^25.2.1, jest-diff@^25.5.0: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== - dependencies: - detect-newline "^3.0.0" - -jest-each@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== +jest-diff@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.2.tgz#a1b7b303bcc534aabdb3bd4a7caf594ac059f5aa" + integrity sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" + chalk "^4.0.0" + diff-sequences "^26.3.0" + jest-get-type "^26.3.0" + pretty-format "^26.4.2" -jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" + detect-newline "^3.0.0" -jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== +jest-each@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.4.2.tgz#bb14f7f4304f2bb2e2b81f783f989449b8b6ffae" + integrity sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA== dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" + "@jest/types" "^26.3.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.3.0" + pretty-format "^26.4.2" + +jest-environment-jsdom@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz#3b749ba0f3a78e92ba2c9ce519e16e5dd515220c" + integrity sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA== + dependencies: + "@jest/environment" "^26.3.0" + "@jest/fake-timers" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + jest-mock "^26.3.0" + jest-util "^26.3.0" + jsdom "^16.2.2" + +jest-environment-node@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.3.0.tgz#56c6cfb506d1597f94ee8d717072bda7228df849" + integrity sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw== + dependencies: + "@jest/environment" "^26.3.0" + "@jest/fake-timers" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + jest-mock "^26.3.0" + jest-util "^26.3.0" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726" + integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.3.0" "@types/graceful-fs" "^4.1.2" + "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-regex-util "^26.0.0" + jest-serializer "^26.3.0" + jest-util "^26.3.0" + jest-worker "^26.3.0" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" - which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== +jest-jasmine2@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz#18a9d5bec30904267ac5e9797570932aec1e2257" + integrity sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/environment" "^26.3.0" + "@jest/source-map" "^26.3.0" + "@jest/test-result" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.5.0" + expect "^26.4.2" is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" + jest-each "^26.4.2" + jest-matcher-utils "^26.4.2" + jest-message-util "^26.3.0" + jest-runtime "^26.4.2" + jest-snapshot "^26.4.2" + jest-util "^26.3.0" + pretty-format "^26.4.2" throat "^5.0.0" -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== +jest-leak-detector@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz#c73e2fa8757bf905f6f66fb9e0070b70fa0f573f" + integrity sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA== dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + jest-get-type "^26.3.0" + pretty-format "^26.4.2" -jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== +jest-matcher-utils@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz#fa81f3693f7cb67e5fc1537317525ef3b85f4b06" + integrity sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q== dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + jest-diff "^26.4.2" + jest-get-type "^26.3.0" + pretty-format "^26.4.2" -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== +jest-message-util@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" + integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" + "@jest/types" "^26.3.0" "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" + chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" slash "^3.0.0" - stack-utils "^1.0.1" + stack-utils "^2.0.2" -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== +jest-mock@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.3.0.tgz#ee62207c3c5ebe5f35b760e1267fee19a1cfdeba" + integrity sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.3.0" + "@types/node" "*" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" - integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw== +jest-resolve-dependencies@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz#739bdb027c14befb2fe5aabbd03f7bab355f1dc5" + integrity sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ== dependencies: - "@jest/types" "^25.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" + "@jest/types" "^26.3.0" + jest-regex-util "^26.0.0" + jest-snapshot "^26.4.2" -jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== +jest-resolve@^26.4.0: + version "26.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7" + integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg== dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" + "@jest/types" "^26.3.0" + chalk "^4.0.0" graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" + jest-pnp-resolver "^1.2.2" + jest-util "^26.3.0" read-pkg-up "^7.0.1" - realpath-native "^2.0.0" resolve "^1.17.0" slash "^3.0.0" -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== +jest-runner@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.4.2.tgz#c3ec5482c8edd31973bd3935df5a449a45b5b853" + integrity sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g== dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.3.0" + "@jest/environment" "^26.3.0" + "@jest/test-result" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-config "^26.4.2" + jest-docblock "^26.0.0" + jest-haste-map "^26.3.0" + jest-leak-detector "^26.4.2" + jest-message-util "^26.3.0" + jest-resolve "^26.4.0" + jest-runtime "^26.4.2" + jest-util "^26.3.0" + jest-worker "^26.3.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" +jest-runtime@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.4.2.tgz#94ce17890353c92e4206580c73a8f0c024c33c42" + integrity sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ== + dependencies: + "@jest/console" "^26.3.0" + "@jest/environment" "^26.3.0" + "@jest/fake-timers" "^26.3.0" + "@jest/globals" "^26.4.2" + "@jest/source-map" "^26.3.0" + "@jest/test-result" "^26.3.0" + "@jest/transform" "^26.3.0" + "@jest/types" "^26.3.0" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" + jest-config "^26.4.2" + jest-haste-map "^26.3.0" + jest-message-util "^26.3.0" + jest-mock "^26.3.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.4.0" + jest-snapshot "^26.4.2" + jest-util "^26.3.0" + jest-validate "^26.4.2" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.3.1" -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== +jest-serializer@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef" + integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow== dependencies: + "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== +jest-snapshot@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.2.tgz#87d3ac2f2bd87ea8003602fbebd8fcb9e94104f6" + integrity sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" + "@jest/types" "^26.3.0" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.4.2" graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" + jest-diff "^26.4.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.3.0" + jest-matcher-utils "^26.4.2" + jest-message-util "^26.3.0" + jest-resolve "^26.4.0" natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" + pretty-format "^26.4.2" + semver "^7.3.2" -jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== +jest-util@26.x, jest-util@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" + integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/types" "^26.3.0" + "@types/node" "*" + chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== +jest-validate@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.2.tgz#e871b0dfe97747133014dcf6445ee8018398f39c" + integrity sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ== dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" + "@jest/types" "^26.3.0" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^25.5.0" + pretty-format "^26.4.2" -jest-watcher@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== +jest-watcher@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.3.0.tgz#f8ef3068ddb8af160ef868400318dc4a898eed08" + integrity sha512-XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ== dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/test-result" "^26.3.0" + "@jest/types" "^26.3.0" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" + chalk "^4.0.0" + jest-util "^26.3.0" + string-length "^4.0.1" -jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== +jest-worker@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" + integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.2.7: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" - integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ== +jest@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.4.2.tgz#7e8bfb348ec33f5459adeaffc1a25d5752d9d312" + integrity sha512-LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw== dependencies: - "@jest/core" "^25.5.4" + "@jest/core" "^26.4.2" import-local "^3.0.2" - jest-cli "^25.5.4" + jest-cli "^26.4.2" js-tokens@^4.0.0: version "4.0.0" @@ -4945,36 +3187,36 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" +jsdom@^16.2.2: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.0.0" + ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4982,7 +3224,7 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -5002,7 +3244,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -5021,11 +3263,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5055,7 +3292,7 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -5065,36 +3302,20 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lerna@^3.20.2: - version "3.21.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.21.0.tgz#c81a0f8df45c6b7c9d3fc9fdcd0f846aca2375c6" - integrity sha512-ux8yOwQEgIXOZVUfq+T8nVzPymL19vlIoPbysOP3YA4hcjKlqQIlsjI/1ugBe6b4MF7W4iV5vS3gH9cGqBBc1A== - dependencies: - "@lerna/add" "3.21.0" - "@lerna/bootstrap" "3.21.0" - "@lerna/changed" "3.21.0" - "@lerna/clean" "3.21.0" - "@lerna/cli" "3.18.5" - "@lerna/create" "3.21.0" - "@lerna/diff" "3.21.0" - "@lerna/exec" "3.21.0" - "@lerna/import" "3.21.0" - "@lerna/info" "3.21.0" - "@lerna/init" "3.21.0" - "@lerna/link" "3.21.0" - "@lerna/list" "3.21.0" - "@lerna/publish" "3.21.0" - "@lerna/run" "3.21.0" - "@lerna/version" "3.21.0" - import-local "^2.0.0" - npmlog "^4.1.2" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -5107,19 +3328,20 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^10.1.1: - version "10.2.6" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.6.tgz#7d9658bd89dee946a859cbfc6e09566a9fb50b53" - integrity sha512-2oEBWyPZHkdyjKcIv2U6ay80Q52ZMlZZrUnfsV0WTVcgzPlt3o2t5UFy2v8ETUTsIDZ0xSJVnffWCgD3LF6xTQ== +lint-staged@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.4.0.tgz#d18628f737328e0bbbf87d183f4020930e9a984e" + integrity sha512-uaiX4U5yERUSiIEQc329vhCTDDwUcSvKdRLsNomkYLRzijk3v8V9GWm2Nz0RMVB87VcuzLvtgy6OsjoH++QHIg== dependencies: - chalk "^4.0.0" - cli-truncate "2.1.0" - commander "^5.1.0" - cosmiconfig "^6.0.0" + chalk "^4.1.0" + cli-truncate "^2.1.0" + commander "^6.0.0" + cosmiconfig "^7.0.0" debug "^4.1.1" dedent "^0.7.0" - execa "^4.0.1" - listr2 "^2.0.2" + enquirer "^2.3.6" + execa "^4.0.3" + listr2 "^2.6.0" log-symbols "^4.0.0" micromatch "^4.0.2" normalize-path "^3.0.0" @@ -5127,73 +3349,19 @@ lint-staged@^10.1.1: string-argv "0.3.1" stringify-object "^3.3.0" -listr2@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.0.4.tgz#b39100b0a227ec5659dcf76ddc516211fc168d61" - integrity sha512-oJaAcplPsa72rKW0eg4P4LbEJjhH+UO2I8uqR/I2wzHrVg16ohSfUy0SlcHS21zfYXxtsUpL8YXGHjyfWMR0cg== +listr2@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.6.2.tgz#4912eb01e1e2dd72ec37f3895a56bf2622d6f36a" + integrity sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA== dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - chalk "^4.0.0" - cli-cursor "^3.1.0" + chalk "^4.1.0" cli-truncate "^2.1.0" - elegant-spinner "^2.0.0" - enquirer "^2.3.5" figures "^3.2.0" indent-string "^4.0.0" log-update "^4.0.0" p-map "^4.0.0" - pad "^3.2.0" - rxjs "^6.5.5" + rxjs "^6.6.2" through "^2.3.8" - uuid "^7.0.2" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -load-json-file@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" - integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== - dependencies: - graceful-fs "^4.1.15" - parse-json "^4.0.0" - pify "^4.0.1" - strip-bom "^3.0.0" - type-fest "^0.3.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" locate-path@^5.0.0: version "5.0.0" @@ -5202,65 +3370,25 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.0.2, lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-symbols@^4.0.0: version "4.0.0" @@ -5279,33 +3407,6 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - magic-string@^0.25.2: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -5313,21 +3414,6 @@ magic-string@^0.25.2: dependencies: sourcemap-codec "^1.4.4" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -5340,23 +3426,6 @@ make-error@1.x: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" - integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -5369,21 +3438,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - -map-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" - integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -5400,80 +3454,22 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" - integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== - dependencies: - "@types/minimist" "^1.2.0" - arrify "^2.0.1" - camelcase "^6.0.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "^4.0.2" - normalize-package-data "^2.5.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== merkle-lib@^2.0.10: version "2.0.10" resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= -micromatch@4.x, micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5492,6 +3488,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -5504,21 +3508,11 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.44.0" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" - integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -5536,59 +3530,11 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - -minimist-options@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5597,81 +3543,28 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= - dependencies: - mkdirp "*" - -mkdirp@*: +mkdirp@1.x: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0, ms@^2.1.1: +ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multimatch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" - integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== - dependencies: - array-differ "^2.0.3" - array-union "^1.0.2" - arrify "^1.0.1" - minimatch "^3.0.4" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nan@^2.13.2: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -5699,47 +3592,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" - integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.3.0, node-fetch@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-gyp@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" - integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -5750,26 +3607,19 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== +node-notifier@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" + integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== dependencies: growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.1" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" + uuid "^8.3.0" + which "^2.0.2" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -5791,65 +3641,6 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-lifecycle@^3.1.2: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== - dependencies: - hosted-git-info "^2.7.1" - osenv "^0.1.5" - semver "^5.6.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5864,21 +3655,6 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -5889,11 +3665,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -5903,16 +3674,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -5920,24 +3681,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -5945,11 +3688,6 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -5957,13 +3695,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -5976,7 +3707,7 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -5988,31 +3719,17 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4, osenv@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" p-each-series@^2.1.0: version "2.1.0" @@ -6024,39 +3741,13 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -6064,18 +3755,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" - integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= - dependencies: - p-reduce "^1.0.0" - -p-map@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -6083,56 +3762,11 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-pipe@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" - integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= - -p-queue@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" - integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== - dependencies: - eventemitter3 "^3.1.0" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" - integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= - dependencies: - p-reduce "^1.0.0" - -pad@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" - integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== - dependencies: - wcwidth "^1.0.1" - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6140,26 +3774,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" @@ -6170,51 +3784,16 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" -parse-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - -parse-url@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== - dependencies: - is-ssh "^1.3.0" - normalize-url "^3.3.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -6240,22 +3819,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -6277,38 +3840,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.2: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -6316,13 +3852,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -6337,16 +3866,16 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6359,10 +3888,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== +prettier@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" @@ -6374,29 +3903,21 @@ pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +pretty-format@^26.4.2: + version "26.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" + integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA== + dependencies: + "@jest/types" "^26.3.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" @@ -6405,43 +3926,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== - -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -6450,15 +3939,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -6471,26 +3951,11 @@ pushdata-bitcoin@^1.0.1: dependencies: bitcoin-ops "^1.3.0" -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - randombytes@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6503,50 +3968,6 @@ react-is@^16.12.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -read-cmd-shim@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" - integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== - dependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.1.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-tree@^5.1.6: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -6556,24 +3977,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -6584,73 +3987,14 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@~1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.6.0: +readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -6660,12 +4004,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: +regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -6685,30 +4024,23 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - lodash "^4.17.15" + lodash "^4.17.19" -request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - request-promise-core "1.1.3" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -6744,13 +4076,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -6758,11 +4083,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -6778,33 +4098,13 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.15.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.17.0, resolve@^1.3.2: +resolve@1.17.0, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.17.0, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -6818,10 +4118,10 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@2.6.3: version "2.6.3" @@ -6830,13 +4130,6 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6881,16 +4174,16 @@ rollup-plugin-node-resolve@^5.2.0: resolve "^1.11.1" rollup-pluginutils "^2.8.1" -rollup-plugin-typescript2@^0.27.0: - version "0.27.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.1.tgz#4f27193408a8f040139eed3e3db7b0c7f3668200" - integrity sha512-RJl77Bbj1EunAQDC3dK/O2HWuSUX3oJbRGzyLoS5o9W4Hs1Nix3Gavqj1Lzs5Y6Ff4H2xXfmZ1WWUQCYocSbzQ== +rollup-plugin-typescript2@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.2.tgz#871a7f5d2a774f9cef50d25da868eec72acc2ed8" + integrity sha512-zarMH2F8oT/NO6p20gl/jkts+WxyzOlhOIUwUU/EDx5e6ewdDPS/flwLj5XFuijUCr64bZwqKuRVwCPdXXYefQ== dependencies: - "@rollup/pluginutils" "^3.0.8" + "@rollup/pluginutils" "^3.1.0" find-cache-dir "^3.3.1" fs-extra "8.1.0" - resolve "1.15.1" - tslib "1.11.2" + resolve "1.17.0" + tslib "2.0.1" rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1: version "2.8.2" @@ -6899,10 +4192,10 @@ rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1: dependencies: estree-walker "^0.6.1" -rollup@^2.3.2: - version "2.10.8" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.8.tgz#ae7d341096aa81b352b1eb13912d775ec1913f5c" - integrity sha512-lbowcWxla8CNBNvCVnmZnoZzugM1g9yd7fd7oc5eWIdI4wECzpIpEJLBoeD+9UITwnnt1X3b9bt7gdZHC+rRAg== +rollup@^2.27.1: + version "2.27.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.27.1.tgz#372744e1d36eba0fd942d997600c2fc2ca266305" + integrity sha512-GiWHQvnmMgBktSpY/1+nrGpwPsTw4b9P28og2uedfeq4JZ16rzAmnQ5Pm/E0/BEmDNia1ZbY7+qu3nBgNa19Hg== optionalDependencies: fsevents "~2.1.2" @@ -6911,22 +4204,15 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== +rxjs@^6.6.2: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" @@ -6935,7 +4221,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -6967,12 +4253,12 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" semver-compare@^1.0.0: version "1.0.0" @@ -6984,22 +4270,22 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.x, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -set-blocking@^2.0.0, set-blocking@~2.0.0: +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7022,13 +4308,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -7068,11 +4347,6 @@ sisteransi@^1.0.4: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -7105,16 +4379,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7145,29 +4409,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== - dependencies: - ip "1.1.5" - smart-buffer "^4.1.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -7245,20 +4486,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -7279,17 +4506,12 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.0, ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== +stack-utils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== dependencies: - figgy-pudding "^3.5.1" - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" @@ -7304,50 +4526,20 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -7365,40 +4557,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -7406,13 +4564,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -7422,21 +4573,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -7450,18 +4587,6 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -7477,38 +4602,10 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== - -strong-log-transformer@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^5.3.0: version "5.5.0" @@ -7532,7 +4629,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -7547,36 +4644,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-write@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" - integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= - dependencies: - graceful-fs "^4.1.2" - is-stream "^1.1.0" - make-dir "^1.0.0" - pify "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.0.1" - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -7594,51 +4661,17 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^2.0.0, through2@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: +through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -7654,13 +4687,6 @@ tiny-secp256k1@^1.1.1, tiny-secp256k1@^1.1.3: elliptic "^6.4.0" nan "^2.13.2" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -7720,55 +4746,36 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: - punycode "^2.1.0" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - -trim-newlines@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" - integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== - -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + punycode "^2.1.1" -ts-jest@^25.3.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.5.1.tgz#2913afd08f28385d54f2f4e828be4d261f4337c7" - integrity sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw== +ts-jest@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9" + integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q== dependencies: + "@types/jest" "26.x" bs-logger "0.x" buffer-from "1.x" fast-json-stable-stringify "2.x" + jest-util "26.x" json5 "2.x" lodash.memoize "4.x" make-error "1.x" - micromatch "4.x" - mkdirp "0.x" - semver "6.x" + mkdirp "1.x" + semver "7.x" yargs-parser "18.x" -tslib@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.2.tgz#9c79d83272c9a7aaf166f73915c9667ecdde3cc9" - integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg== +tslib@2.0.1, tslib@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== -tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== @@ -7792,6 +4799,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7809,16 +4823,6 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -7836,37 +4840,15 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - typeforce@^1.11.3, typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -typescript@^3.8.3: - version "3.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a" - integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== - -uglify-js@^3.1.4: - version "3.9.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.3.tgz#4a285d1658b8a2ebaef9e51366b3a0f7acd79ec2" - integrity sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA== - dependencies: - commander "~2.20.3" - -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +typescript@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" + integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== union-value@^1.0.0: version "1.0.1" @@ -7878,34 +4860,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universal-user-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" - integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== - dependencies: - os-name "^3.1.0" - -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -7919,11 +4873,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -7941,43 +4890,36 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - -uuid@^3.0.1, uuid@^3.3.2: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" - integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== +uuid@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" + integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== +v8-to-istanbul@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" + integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: +validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -7985,13 +4927,6 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - varuint-bitcoin@^1.0.4: version "1.1.2" resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" @@ -8008,20 +4943,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -8031,38 +4964,36 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -wcwidth@^1.0.0, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== +whatwg-url@^8.0.0: + version "8.2.2" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.2.2.tgz#85e7f9795108b53d554cec640b2e8aee2a0d4bfd" + integrity sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ== dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" @@ -8074,7 +5005,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -8088,13 +5019,6 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - wif@^2.0.1, wif@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" @@ -8102,32 +5026,11 @@ wif@^2.0.1, wif@^2.0.6: dependencies: bs58check "<3.0.0" -windows-release@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" - integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== - dependencies: - execa "^1.0.0" - -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -8142,15 +5045,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -8161,38 +5055,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-json-file@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" - integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - pify "^3.0.0" - sort-keys "^2.0.0" - write-file-atomic "^2.0.0" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-pkg@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" - integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== - dependencies: - sort-keys "^2.0.0" - write-json-file "^2.2.0" - write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -8200,42 +5062,32 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^7.0.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== +ws@^7.2.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^1.7.2: +yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@18.x, yargs-parser@^18.1.1, yargs-parser@^18.1.3: +yargs-parser@18.x, yargs-parser@^18.1.1: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -8243,31 +5095,6 @@ yargs-parser@18.x, yargs-parser@^18.1.1, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^14.2.2: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" - yargs@^15.3.1: version "15.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"