@bitgo/abstract-utxo 10.17.0 → 10.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/abstractUtxoCoin.d.ts +5 -6
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/cjs/src/abstractUtxoCoin.js +24 -5
- package/dist/cjs/src/address/fixedScript.d.ts +1 -5
- package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
- package/dist/cjs/src/address/fixedScript.js +3 -5
- package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +4 -5
- package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/NamedDescriptor.js +4 -6
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +3 -38
- package/dist/cjs/src/descriptor/builder/builder.d.ts +2 -3
- package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/builder/builder.js +1 -1
- package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/builder/parse.js +3 -3
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +2 -2
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +1 -1
- package/dist/cjs/src/descriptor/descriptorWallet.d.ts +1 -1
- package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/descriptorWallet.js +1 -1
- package/dist/cjs/src/descriptor/index.d.ts +1 -1
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/index.js +1 -1
- package/dist/cjs/src/descriptor/validatePolicy.d.ts +3 -3
- package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/cjs/src/descriptor/validatePolicy.js +3 -3
- package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -1
- package/dist/cjs/src/impl/bch/bch.js +6 -38
- package/dist/cjs/src/impl/doge/doge.d.ts +2 -1
- package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -1
- package/dist/cjs/src/impl/doge/doge.js +1 -1
- package/dist/cjs/src/impl/ltc/ltc.d.ts +0 -1
- package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -1
- package/dist/cjs/src/impl/ltc/ltc.js +3 -41
- package/dist/cjs/src/impl/ltc/tltc.d.ts +0 -1
- package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -1
- package/dist/cjs/src/impl/ltc/tltc.js +3 -40
- package/dist/cjs/src/index.d.ts +2 -0
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +3 -1
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +2 -2
- package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +3 -2
- package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
- package/dist/cjs/src/offlineVault/descriptor/transaction.js +5 -8
- package/dist/cjs/src/recovery/RecoveryProvider.d.ts +1 -3
- package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/cjs/src/recovery/RecoveryProvider.js +1 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +73 -4
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.js +163 -129
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts +5 -5
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/crossChainRecovery.js +22 -121
- package/dist/cjs/src/recovery/psbt.d.ts +8 -31
- package/dist/cjs/src/recovery/psbt.d.ts.map +1 -1
- package/dist/cjs/src/recovery/psbt.js +14 -126
- package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +3 -3
- package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/explainPsbt.js +17 -54
- package/dist/cjs/src/transaction/descriptor/index.d.ts +1 -1
- package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/index.js +1 -1
- package/dist/cjs/src/transaction/descriptor/parse.d.ts +6 -4
- package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/parse.js +24 -50
- package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +6 -7
- package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/signPsbt.js +19 -18
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +4 -4
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +10 -38
- package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/explainTransaction.js +3 -2
- package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +1 -3
- package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/SigningError.js +1 -1
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +1 -8
- package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/parseOutput.js +6 -11
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +4 -2
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +1 -1
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +1 -1
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +2 -2
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +4 -8
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +6 -5
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +42 -7
- package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/signTransaction.js +10 -10
- package/dist/cjs/src/unspent.d.ts +55 -0
- package/dist/cjs/src/unspent.d.ts.map +1 -0
- package/dist/cjs/src/unspent.js +12 -0
- package/dist/cjs/src/wasmUtil.d.ts +29 -0
- package/dist/cjs/src/wasmUtil.d.ts.map +1 -0
- package/dist/cjs/src/wasmUtil.js +87 -0
- package/dist/cjs/test/unit/address.d.ts +1 -1
- package/dist/cjs/test/unit/address.d.ts.map +1 -1
- package/dist/cjs/test/unit/address.js +107 -137
- package/dist/cjs/test/unit/bip322.js +50 -1
- package/dist/cjs/test/unit/customSigner.js +5 -4
- package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +37 -4
- package/dist/cjs/test/unit/descriptor/builder.js +10 -4
- package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +37 -4
- package/dist/cjs/test/unit/descriptor/descriptorWallet.js +40 -6
- package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -1
- package/dist/cjs/test/unit/descriptorAddress.js +3 -3
- package/dist/cjs/test/unit/explainTransaction.js +26 -3
- package/dist/cjs/test/unit/keychains.js +40 -1
- package/dist/cjs/test/unit/postProcessPrebuild.d.ts +2 -0
- package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -0
- package/dist/cjs/test/unit/postProcessPrebuild.js +62 -0
- package/dist/cjs/test/unit/prebuildAndSign.d.ts +0 -4
- package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -1
- package/dist/cjs/test/unit/prebuildAndSign.js +12 -32
- package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +82 -259
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +144 -0
- package/dist/cjs/test/unit/recovery/crossChainRecovery.js +38 -35
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +2 -0
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -0
- package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +186 -0
- package/dist/cjs/test/unit/recovery/mock.d.ts +15 -8
- package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -1
- package/dist/cjs/test/unit/recovery/mock.js +49 -77
- package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/signTransaction.js +244 -0
- package/dist/cjs/test/unit/testSpoofTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/testSpoofTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/testSpoofTransaction.js +114 -0
- package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +46 -12
- package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -1
- package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +38 -4
- package/dist/cjs/test/unit/transaction/descriptor/parse.js +22 -19
- package/dist/cjs/test/unit/transaction/descriptor/sign.js +60 -16
- package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +43 -10
- package/dist/cjs/test/unit/transaction.js +6 -225
- package/dist/cjs/test/unit/util/address.d.ts +13 -0
- package/dist/cjs/test/unit/util/address.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/address.js +15 -0
- package/dist/cjs/test/unit/util/index.d.ts +3 -0
- package/dist/cjs/test/unit/util/index.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/index.js +4 -1
- package/dist/cjs/test/unit/util/keychains.d.ts +29 -0
- package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/keychains.js +51 -1
- package/dist/cjs/test/unit/util/nockBitGo.d.ts +8 -1
- package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/nockBitGo.js +17 -1
- package/dist/cjs/test/unit/util/psbt.d.ts +19 -0
- package/dist/cjs/test/unit/util/psbt.d.ts.map +1 -0
- package/dist/cjs/test/unit/util/psbt.js +21 -0
- package/dist/cjs/test/unit/util/transaction.d.ts +8 -4
- package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/transaction.js +19 -1
- package/dist/cjs/test/unit/util/unspents.d.ts +66 -8
- package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/unspents.js +130 -15
- package/dist/cjs/test/unit/util/utxoCoins.d.ts +13 -0
- package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/utxoCoins.js +33 -2
- package/dist/cjs/test/unit/wallet.js +4 -4
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/abstractUtxoCoin.d.ts +5 -6
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/esm/abstractUtxoCoin.js +26 -7
- package/dist/esm/address/fixedScript.d.ts +1 -5
- package/dist/esm/address/fixedScript.d.ts.map +1 -1
- package/dist/esm/address/fixedScript.js +3 -5
- package/dist/esm/descriptor/NamedDescriptor.d.ts +4 -5
- package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -1
- package/dist/esm/descriptor/NamedDescriptor.js +5 -7
- package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
- package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
- package/dist/esm/descriptor/assertDescriptorWalletAddress.js +3 -5
- package/dist/esm/descriptor/builder/builder.d.ts +2 -3
- package/dist/esm/descriptor/builder/builder.d.ts.map +1 -1
- package/dist/esm/descriptor/builder/builder.js +1 -1
- package/dist/esm/descriptor/builder/parse.d.ts.map +1 -1
- package/dist/esm/descriptor/builder/parse.js +3 -3
- package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +2 -2
- package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -1
- package/dist/esm/descriptor/createWallet/createDescriptors.js +1 -1
- package/dist/esm/descriptor/descriptorWallet.d.ts +1 -1
- package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -1
- package/dist/esm/descriptor/descriptorWallet.js +1 -1
- package/dist/esm/descriptor/index.d.ts +1 -1
- package/dist/esm/descriptor/index.d.ts.map +1 -1
- package/dist/esm/descriptor/index.js +1 -1
- package/dist/esm/descriptor/validatePolicy.d.ts +3 -3
- package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/esm/descriptor/validatePolicy.js +3 -3
- package/dist/esm/impl/bch/bch.d.ts.map +1 -1
- package/dist/esm/impl/bch/bch.js +6 -5
- package/dist/esm/impl/doge/doge.d.ts +2 -1
- package/dist/esm/impl/doge/doge.d.ts.map +1 -1
- package/dist/esm/impl/doge/doge.js +1 -1
- package/dist/esm/impl/ltc/ltc.d.ts +0 -1
- package/dist/esm/impl/ltc/ltc.d.ts.map +1 -1
- package/dist/esm/impl/ltc/ltc.js +3 -8
- package/dist/esm/impl/ltc/tltc.d.ts +0 -1
- package/dist/esm/impl/ltc/tltc.d.ts.map +1 -1
- package/dist/esm/impl/ltc/tltc.js +3 -7
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +2 -2
- package/dist/esm/offlineVault/descriptor/transaction.d.ts +3 -2
- package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
- package/dist/esm/offlineVault/descriptor/transaction.js +5 -8
- package/dist/esm/recovery/RecoveryProvider.d.ts +1 -3
- package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/esm/recovery/RecoveryProvider.js +1 -1
- package/dist/esm/recovery/backupKeyRecovery.d.ts +73 -4
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/backupKeyRecovery.js +165 -100
- package/dist/esm/recovery/crossChainRecovery.d.ts +5 -5
- package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/crossChainRecovery.js +24 -90
- package/dist/esm/recovery/psbt.d.ts +8 -31
- package/dist/esm/recovery/psbt.d.ts.map +1 -1
- package/dist/esm/recovery/psbt.js +14 -91
- package/dist/esm/transaction/descriptor/explainPsbt.d.ts +3 -3
- package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/explainPsbt.js +14 -18
- package/dist/esm/transaction/descriptor/index.d.ts +1 -1
- package/dist/esm/transaction/descriptor/index.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/index.js +1 -1
- package/dist/esm/transaction/descriptor/parse.d.ts +6 -4
- package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/parse.js +22 -15
- package/dist/esm/transaction/descriptor/signPsbt.d.ts +6 -7
- package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/signPsbt.js +19 -18
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +4 -4
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/verifyTransaction.js +10 -5
- package/dist/esm/transaction/explainTransaction.d.ts +2 -1
- package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/explainTransaction.js +3 -2
- package/dist/esm/transaction/fixedScript/SigningError.d.ts +1 -3
- package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/SigningError.js +1 -1
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +2 -1
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/explainTransaction.js +1 -8
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/parseOutput.js +6 -11
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +4 -2
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +1 -1
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +1 -1
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +2 -2
- package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signPsbtWasm.js +2 -6
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts +6 -5
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signTransaction.js +10 -8
- package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/signTransaction.js +10 -10
- package/dist/esm/unspent.d.ts +55 -0
- package/dist/esm/unspent.d.ts.map +1 -0
- package/dist/esm/unspent.js +8 -0
- package/dist/esm/wasmUtil.d.ts +29 -0
- package/dist/esm/wasmUtil.d.ts.map +1 -0
- package/dist/esm/wasmUtil.js +47 -0
- package/package.json +11 -12
- package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +0 -2
- package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +0 -1
- package/dist/cjs/test/unit/impl/btc/unit/btc.js +0 -220
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +0 -4
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +0 -1
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +0 -10
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +0 -2
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +0 -1
- package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +0 -18
- package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +0 -2
- package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +0 -1
- package/dist/cjs/test/unit/impl/ltc/unit/index.js +0 -39
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import debugLib from 'debug';
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import { InvalidAddressDerivationPropertyError, UnexpectedAddressError, } from '@bitgo/sdk-core';
|
|
4
|
-
import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
|
|
5
4
|
import { fromExtendedAddressFormatToScript } from '../recipient';
|
|
6
5
|
const debug = debugLib('bitgo:v2:parseoutput');
|
|
7
6
|
export function isWalletOutput(output) {
|
|
@@ -50,9 +49,9 @@ function isMigratedAddress(wallet, currentAddress) {
|
|
|
50
49
|
* @return {boolean}
|
|
51
50
|
*/
|
|
52
51
|
async function verifyCustomChangeAddress(params) {
|
|
53
|
-
const { coin, customChangeKeys,
|
|
52
|
+
const { coin, customChangeKeys, addressDetails, currentAddress } = params;
|
|
54
53
|
try {
|
|
55
|
-
return await coin.verifyAddress(_.extend({
|
|
54
|
+
return await coin.verifyAddress(_.extend({}, addressDetails, {
|
|
56
55
|
keychains: customChangeKeys,
|
|
57
56
|
address: currentAddress,
|
|
58
57
|
}));
|
|
@@ -62,7 +61,7 @@ async function verifyCustomChangeAddress(params) {
|
|
|
62
61
|
return false;
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
|
-
async function handleVerifyAddressError({ e, currentAddress, wallet, txParams, customChangeKeys, coin, addressDetails,
|
|
64
|
+
async function handleVerifyAddressError({ e, currentAddress, wallet, txParams, customChangeKeys, coin, addressDetails, considerMigratedFromAddressInternal, }) {
|
|
66
65
|
// Todo: name server-side errors to avoid message-based checking [BG-5124]
|
|
67
66
|
const walletAddressNotFound = e.message.includes('wallet address not found');
|
|
68
67
|
const unexpectedAddress = e instanceof UnexpectedAddressError;
|
|
@@ -76,7 +75,7 @@ async function handleVerifyAddressError({ e, currentAddress, wallet, txParams, c
|
|
|
76
75
|
debug('Address %s was found on wallet but could not be reconstructed', currentAddress);
|
|
77
76
|
// attempt to verify address using custom change address keys if the wallet has that feature enabled
|
|
78
77
|
if (customChangeKeys &&
|
|
79
|
-
(await verifyCustomChangeAddress({ coin, addressDetails,
|
|
78
|
+
(await verifyCustomChangeAddress({ coin, addressDetails, currentAddress, customChangeKeys }))) {
|
|
80
79
|
// address is valid against the custom change keys. Mark address as not external
|
|
81
80
|
// and request signature verification for the custom change keys
|
|
82
81
|
debug('Address %s verified as derived from the custom change keys', currentAddress);
|
|
@@ -126,7 +125,6 @@ export async function parseOutput({ currentOutput, coin, txPrebuild, verificatio
|
|
|
126
125
|
const addressDetailsVerification = verification?.addresses?.[currentAddress] ?? {};
|
|
127
126
|
debug('Parsing address details for %s', currentAddress);
|
|
128
127
|
let currentAddressDetails = undefined;
|
|
129
|
-
let currentAddressType = undefined;
|
|
130
128
|
const RECIPIENT_THRESHOLD = 1000;
|
|
131
129
|
try {
|
|
132
130
|
// In the case of PSBTs, we can already determine the internal/external status of the output addresses
|
|
@@ -143,7 +141,6 @@ export async function parseOutput({ currentOutput, coin, txPrebuild, verificatio
|
|
|
143
141
|
// can just return the current output as is without contacting the server.
|
|
144
142
|
if (isWalletOutput(currentOutput)) {
|
|
145
143
|
const res = await coin.isWalletAddress({
|
|
146
|
-
addressType: AbstractUtxoCoin.inferAddressType({ chain: currentOutput.chain }) || undefined,
|
|
147
144
|
keychains: keychainArray,
|
|
148
145
|
address: currentAddress,
|
|
149
146
|
chain: currentOutput.chain,
|
|
@@ -185,9 +182,8 @@ export async function parseOutput({ currentOutput, coin, txPrebuild, verificatio
|
|
|
185
182
|
});
|
|
186
183
|
// verify that the address is on the wallet. verifyAddress throws if
|
|
187
184
|
// it fails to correctly rederive the address, meaning it's external
|
|
188
|
-
currentAddressType = AbstractUtxoCoin.inferAddressType(addressDetails) || undefined;
|
|
189
185
|
currentAddressDetails = addressDetails;
|
|
190
|
-
await coin.verifyAddress(_.extend({
|
|
186
|
+
await coin.verifyAddress(_.extend({}, addressDetails, {
|
|
191
187
|
keychains: keychainArray,
|
|
192
188
|
address: currentAddress,
|
|
193
189
|
}));
|
|
@@ -206,9 +202,8 @@ export async function parseOutput({ currentOutput, coin, txPrebuild, verificatio
|
|
|
206
202
|
txParams,
|
|
207
203
|
customChangeKeys: customChange && customChange.keys,
|
|
208
204
|
addressDetails: currentAddressDetails,
|
|
209
|
-
addressType: currentAddressType,
|
|
210
205
|
considerMigratedFromAddressInternal: verification.considerMigratedFromAddressInternal,
|
|
211
206
|
}));
|
|
212
207
|
}
|
|
213
208
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvcGFyc2VPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBR0wscUNBQXFDLEVBR3JDLHNCQUFzQixHQUl2QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUUvQyxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxDQUNKLE1BQWtDLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSyxNQUFrQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQ25ILENBQUM7QUFDSixDQUFDO0FBT0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsY0FBc0I7SUFDaEUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUNsRixLQUFLLENBQUMsNkVBQTZFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDckcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBVUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxNQUF3QztJQUMvRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFB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LGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2IsRUFBRSxFQUNGLGFBQWEsRUFDYixNQUFNLHdCQUF3QixDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJO1lBQ0osY0FBYztZQUNkLE1BQU07WUFDTixRQUFRO1lBQ1IsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxJQUFJO1lBQ25ELGNBQWMsRUFBRSxxQkFBcUI7WUFDckMsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixtQ0FBbUMsRUFBRSxZQUFZLENBQUMsbUNBQW1DO1NBQ3RGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWdMaWIgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEFkZHJlc3NWZXJpZmljYXRpb25EYXRhLFxuICBJUmVxdWVzdFRyYWNlcixcbiAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcixcbiAgSVdhbGxldCxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbiAgVmVyaWZpY2F0aW9uT3B0aW9ucyxcbiAgSVRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmlwbGUsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi9hYnN0cmFjdFV0eG9Db2luJztcbmltcG9ydCB7IE91dHB1dCwgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBmcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0VG9TY3JpcHQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnTGliKCdiaXRnbzp2MjpwYXJzZW91dHB1dCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNXYWxsZXRPdXRwdXQob3V0cHV0OiBPdXRwdXQpOiBvdXRwdXQgaXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQge1xuICByZXR1cm4gKFxuICAgIChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpLmNoYWluICE9PSB1bmRlZmluZWQgJiYgKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCkuaW5kZXggIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG5pbnRlcmZhY2UgSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yUmVzcG9uc2Uge1xuICBleHRlcm5hbDogYm9vbGVhbjtcbiAgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENoZWNrIGFuIGFkZHJlc3Mgd2hpY2ggZmFpbGVkIGluaXRpYWwgdmFsaWRhdGlvbiB0byBzZWUgaWYgaXQncyB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgbWlncmF0ZWQgdjEgYmNoIHdhbGxldC5cbiAqXG4gKiBUaGUgd2FsbGV0IGluIHF1ZXN0aW9uIGNvdWxkIGJlIGEgbWlncmF0ZWQgU2FmZUhEIEJDSCB3YWxsZXQsIGFuZCB0aGUgdHJhbnNhY3Rpb24gd2VcbiAqIGFyZSBjdXJyZW50bHkgcGFyc2luZyBpcyB0cnlpbmcgdG8gc3BlbmQgY2hhbmdlIGJhY2sgdG8gdGhlIHYxIHdhbGxldCBiYXNlIGFkZHJlc3MuXG4gKlxuICogSXQgZG9lcyB0aGlzIHNpbmNlIHdlIGRvbid0IGFsbG93IG5ldyBhZGRyZXNzIGNyZWF0aW9uIGZvciB0aGVzZSB3YWxsZXRzLFxuICogYW5kIGluc3RlYWQgcmV0dXJuIHRoZSBiYXNlIGFkZHJlc3MgZnJvbSB0aGUgdjEgd2FsbGV0IHdoZW4gYSBuZXcgYWRkcmVzcyBpcyByZXF1ZXN0ZWQuXG4gKiBJZiB0aGlzIG5ldyBhZGRyZXNzIGlzIHJlcXVlc3RlZCBmb3IgdGhlIHB1cnBvc2VzIG9mIHNwZW5kaW5nIGNoYW5nZSBiYWNrIHRvIHRoZSB3YWxsZXQsXG4gKiB0aGUgY2hhbmdlIHdpbGwgZ28gdG8gdGhlIHYxIHdhbGxldCBiYXNlIGFkZHJlc3MuIFRoaXMgYWRkcmVzcyAqaXMqIG9uIHRoZSB3YWxsZXQsXG4gKiBidXQgaXQgd2lsbCBzdGlsbCBjYXVzZSBhbiBlcnJvciB0byBiZSB0aHJvd24gYnkgdmVyaWZ5QWRkcmVzcywgc2luY2UgdGhlIGRlcml2YXRpb24gcGF0aFxuICogdXNlZCBmb3IgdGhpcyBhZGRyZXNzIGlzIG5vbi1zdGFuZGFyZC4gKEkgaGF2ZSBzZWVuIHRoZXNlIGFkZHJlc3NlcyBkZXJpdmVkIHVzaW5nIHBhdGhzIG0vMC8wIGFuZCBtLzEwMSxcbiAqIHdoZXJlYXMgdGhlIHYyIGFkZHJlc3NlcyBhcmUgZGVyaXZlZCB1c2luZyBwYXRoICBtLzAvMC8ke2NoYWlufS8ke2luZGV4fSkuXG4gKlxuICogVGhpcyBtZWFucyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGlzIGNhc2UgZXhwbGljaXRseSBpbiB0aGlzIGNhdGNoIGJsb2NrLCBhbmQgY2xhc3NpZnlcbiAqIHRoZXNlIHR5cGVzIG9mIG91dHB1dHMgYXMgaW50ZXJuYWwgaW5zdGVhZCBvZiBleHRlcm5hbC4gRmFpbGluZyB0byBkbyBzbyB3b3VsZCBjYXVzZSB0aGVcbiAqIHRyYW5zYWN0aW9uJ3MgaW1wbGljaXQgZXh0ZXJuYWwgb3V0cHV0cyAoaWUsIG91dHB1dHMgd2hpY2ggZ28gdG8gYWRkcmVzc2VzIG5vdCBzcGVjaWZpZWQgaW5cbiAqIHRoZSByZWNpcGllbnRzIGFycmF5KSB0byBhZGQgdXAgdG8gbW9yZSB0aGFuIHRoZSAxNTAgYmFzaXMgcG9pbnQgbGltaXQgd2hpY2ggd2UgZW5mb3JjZSBvblxuICogcGF5LWFzLXlvdS1nbyBvdXRwdXRzICh3aGljaCBzaG91bGQgYmUgdGhlIG9ubHkgaW1wbGljaXQgZXh0ZXJuYWwgb3V0cHV0cyBvbiBvdXIgdHJhbnNhY3Rpb25zKS5cbiAqXG4gKiBUaGUgMTUwIGJhc2lzIHBvaW50IGxpbWl0IGZvciBpbXBsaWNpdCBleHRlcm5hbCBzZW5kcyBpcyBlbmZvcmNlZCBpbiB2ZXJpZnlUcmFuc2FjdGlvbixcbiAqIHdoaWNoIGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGluZm9ybWF0aW9uIG9uIHRoZSB0b3RhbCBleHRlcm5hbC9pbnRlcm5hbCBzcGVuZCBhbW91bnRzXG4gKiBmb3IgYSB0cmFuc2FjdGlvbi4gVGhlIGlkZWEgaGVyZSBpcyB0byBwcm90ZWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIG1hbGljaW91c2x5IG1vZGlmaWVkXG4gKiB0byBhZGQgbW9yZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZHMgKGVnLCB0byBhbiBhdHRhY2tlci1jb250cm9sbGVkIHdhbGxldCkuXG4gKlxuICogU2VlIHZlcmlmeVRyYW5zYWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFuc2FjdGlvbiBwcmVidWlsZHMgYXJlIHZlcmlmaWVkIGJlZm9yZSBzaWduaW5nLlxuICpcbiAqIEBwYXJhbSB3YWxsZXQge1dhbGxldH0gd2FsbGV0IHdoaWNoIGlzIG1ha2luZyB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBjdXJyZW50QWRkcmVzcyB7c3RyaW5nfSBhZGRyZXNzIHRvIGNoZWNrIGZvciBleHRlcm5hbGl0eSByZWxhdGl2ZSB0byB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGlzTWlncmF0ZWRBZGRyZXNzKHdhbGxldDogSVdhbGxldCwgY3VycmVudEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXy5pc1N0cmluZyh3YWxsZXQubWlncmF0ZWRGcm9tKCkpICYmIHdhbGxldC5taWdyYXRlZEZyb20oKSA9PT0gY3VycmVudEFkZHJlc3MpIHtcbiAgICBkZWJ1ZygnZm91bmQgYWRkcmVzcyAlcyB3aGljaCB3YXMgbWlncmF0ZWQgZnJvbSB2MSB3YWxsZXQsIGFkZHJlc3MgaXMgbm90IGV4dGVybmFsJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5pbnRlcmZhY2UgVmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnMge1xuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICBjdXN0b21DaGFuZ2VLZXlzOiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zWydjdXN0b21DaGFuZ2VLZXlzJ107XG4gIGFkZHJlc3NUeXBlOiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zWydhZGRyZXNzVHlwZSddO1xuICBhZGRyZXNzRGV0YWlsczogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snYWRkcmVzc0RldGFpbHMnXTtcbiAgY3VycmVudEFkZHJlc3M6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2N1cnJlbnRBZGRyZXNzJ107XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFkZHJlc3MgaXMgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBjdXN0b20gY2hhbmdlIGtleXNcbiAqIEBwYXJhbSB7VmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnN9IHBhcmFtc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzcyhwYXJhbXM6IFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgY29pbiwgY3VzdG9tQ2hhbmdlS2V5cywgYWRkcmVzc1R5cGUsIGFkZHJlc3NEZXRhaWxzLCBjdXJyZW50QWRkcmVzcyB9ID0gcGFyYW1zO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7IGFkZHJlc3NUeXBlIH0sIGFkZHJlc3NEZXRhaWxzLCB7XG4gICAgICAgIGtleWNoYWluczogY3VzdG9tQ2hhbmdlS2V5cyxcbiAgICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICB9KVxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIHZlcmlmeSBjdXN0b20gY2hhbmdlIGFkZHJlc3MgJXMnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmludGVyZmFjZSBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zIHtcbiAgZTogRXJyb3I7XG4gIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHdhbGxldDogSVdhbGxldDtcbiAgdHhQYXJhbXM6IHtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9O1xuICBjdXN0b21DaGFuZ2VLZXlzPzogQ3VzdG9tQ2hhbmdlT3B0aW9uc1sna2V5cyddO1xuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICBhZGRyZXNzRGV0YWlscz86IGFueTtcbiAgYWRkcmVzc1R5cGU/OiBzdHJpbmc7XG4gIGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgZSxcbiAgY3VycmVudEFkZHJlc3MsXG4gIHdhbGxldCxcbiAgdHhQYXJhbXMsXG4gIGN1c3RvbUNoYW5nZUtleXMsXG4gIGNvaW4sXG4gIGFkZHJlc3NEZXRhaWxzLFxuICBhZGRyZXNzVHlwZSxcbiAgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWwsXG59OiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zKTogUHJvbWlzZTxIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JSZXNwb25zZT4ge1xuICAvLyBUb2RvOiBuYW1lIHNlcnZlci1zaWRlIGVycm9ycyB0byBhdm9pZCBtZXNzYWdlLWJhc2VkIGNoZWNraW5nIFtCRy01MTI0XVxuICBjb25zdCB3YWxsZXRBZGRyZXNzTm90Rm91bmQgPSBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhbGxldCBhZGRyZXNzIG5vdCBmb3VuZCcpO1xuICBjb25zdCB1bmV4cGVjdGVkQWRkcmVzcyA9IGUgaW5zdGFuY2VvZiBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yO1xuICBpZiAod2FsbGV0QWRkcmVzc05vdEZvdW5kIHx8IHVuZXhwZWN0ZWRBZGRyZXNzKSB7XG4gICAgaWYgKHVuZXhwZWN0ZWRBZGRyZXNzICYmICF3YWxsZXRBZGRyZXNzTm90Rm91bmQpIHtcbiAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIGEgbWlncmF0ZWQgdjEgYmNoIGFkZHJlc3MgLSBpdCBjb3VsZCBiZSBpbnRlcm5hbFxuICAgICAgY29uc3QgaXNNaWdyYXRlZCA9IGlzTWlncmF0ZWRBZGRyZXNzKHdhbGxldCwgY3VycmVudEFkZHJlc3MpO1xuICAgICAgaWYgKGlzTWlncmF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsID09PSBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnQWRkcmVzcyAlcyB3YXMgZm91bmQgb24gd2FsbGV0IGJ1dCBjb3VsZCBub3QgYmUgcmVjb25zdHJ1Y3RlZCcsIGN1cnJlbnRBZGRyZXNzKTtcblxuICAgICAgLy8gYXR0ZW1wdCB0byB2ZXJpZnkgYWRkcmVzcyB1c2luZyBjdXN0b20gY2hhbmdlIGFkZHJlc3Mga2V5cyBpZiB0aGUgd2FsbGV0IGhhcyB0aGF0IGZlYXR1cmUgZW5hYmxlZFxuICAgICAgaWYgKFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzICYmXG4gICAgICAgIChhd2FpdCB2ZXJpZnlDdXN0b21DaGFuZ2VBZGRyZXNzKHsgY29pbiwgYWRkcmVzc0RldGFpbHMsIGFkZHJlc3NUeXBlLCBjdXJyZW50QWRkcmVzcywgY3VzdG9tQ2hhbmdlS2V5cyB9KSlcbiAgICAgICkge1xuICAgICAgICAvLyBhZGRyZXNzIGlzIHZhbGlkIGFnYWluc3QgdGhlIGN1c3RvbSBjaGFuZ2Uga2V5cy4gTWFyayBhZGRyZXNzIGFzIG5vdCBleHRlcm5hbFxuICAgICAgICAvLyBhbmQgcmVxdWVzdCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZvciB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzXG4gICAgICAgIGRlYnVnKCdBZGRyZXNzICVzIHZlcmlmaWVkIGFzIGRlcml2ZWQgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzJywgY3VycmVudEFkZHJlc3MpO1xuICAgICAgICByZXR1cm4geyBleHRlcm5hbDogZmFsc2UsIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhlIGFkZHJlc3Mgd2FzIGZvdW5kLCBidXQgbm90IG9uIHRoZSB3YWxsZXQsIHdoaWNoIHNpbXBseSBtZWFucyBpdCdzIGV4dGVybmFsXG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgcHJlc3VtZWQgZXh0ZXJuYWwnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgcmV0dXJuIHsgZXh0ZXJuYWw6IHRydWUgfTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciAmJiBjdXJyZW50QWRkcmVzcyA9PT0gdHhQYXJhbXMuY2hhbmdlQWRkcmVzcykge1xuICAgIC8vIGV4cGVjdCB0byBzZWUgdGhpcyBlcnJvciB3aGVuIHBhc3NpbmcgaW4gYSBjdXN0b20gY2hhbmdlQWRkcmVzcyB3aXRoIG5vIGNoYWluIG9yIGluZGV4XG4gICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGZhbHNlIH07XG4gIH1cblxuICBjb25zb2xlLmVycm9yKCdBZGRyZXNzIGNsYXNzaWZpY2F0aW9uIGZhaWxlZCBmb3IgYWRkcmVzcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgY29uc29sZS50cmFjZShlKTtcbiAgLyoqXG4gICAqIEl0IG1pZ2h0IGJlIGEgY29tcGxldGVseSBpbnZhbGlkIGFkZHJlc3Mgb3IgYSBiYWQgdmFsaWRhdGlvbiBhdHRlbXB0IG9yIHNvbWV0aGluZyBlbHNlIGNvbXBsZXRlbHksIGluXG4gICAqIHdoaWNoIGNhc2Ugd2UgZG8gbm90IHByb2NlZWQgYW5kIHJhdGhlciByZXRocm93IHRoZSBlcnJvciwgd2hpY2ggaXMgc2FmZXIgdGhhbiBhc3N1bWluZyB0aGF0IHRoZSBhZGRyZXNzXG4gICAqIHZhbGlkYXRpb24gZmFpbGVkIHNpbXBseSBiZWNhdXNlIGl0J3MgZXh0ZXJuYWwgdG8gdGhlIHdhbGxldC5cbiAgICovXG4gIHRocm93IGU7XG59XG5cbmludGVyZmFjZSBGZXRjaEFkZHJlc3NEZXRhaWxzT3B0aW9ucyB7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG4gIGRpc2FibGVOZXR3b3JraW5nOiBib29sZWFuO1xuICBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkOiBhbnk7XG4gIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uOiBhbnk7XG4gIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHdhbGxldDogSVdhbGxldDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBZGRyZXNzRGV0YWlscyh7XG4gIHJlcUlkLFxuICBkaXNhYmxlTmV0d29ya2luZyxcbiAgYWRkcmVzc0RldGFpbHNQcmVidWlsZCxcbiAgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24sXG4gIGN1cnJlbnRBZGRyZXNzLFxuICB3YWxsZXQsXG59OiBGZXRjaEFkZHJlc3NEZXRhaWxzT3B0aW9ucykge1xuICBsZXQgYWRkcmVzc0RldGFpbHMgPSBfLmV4dGVuZCh7fSwgYWRkcmVzc0RldGFpbHNQcmVidWlsZCwgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24pO1xuICBkZWJ1ZygnTG9jYWxseSBhdmFpbGFibGUgYWRkcmVzcyAlcyBkZXRhaWxzOiAlTycsIGN1cnJlbnRBZGRyZXNzLCBhZGRyZXNzRGV0YWlscyk7XG4gIGlmIChfLmlzRW1wdHkoYWRkcmVzc0RldGFpbHMpICYmICFkaXNhYmxlTmV0d29ya2luZykge1xuICAgIGFkZHJlc3NEZXRhaWxzID0gYXdhaXQgd2FsbGV0LmdldEFkZHJlc3MoeyBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcywgcmVxSWQgfSk7XG4gICAgZGVidWcoJ0Rvd25sb2FkZWQgYWRkcmVzcyAlcyBkZXRhaWxzOiAlTycsIGN1cnJlbnRBZGRyZXNzLCBhZGRyZXNzRGV0YWlscyk7XG4gIH1cbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNoYW5nZU9wdGlvbnMge1xuICBrZXlzOiBUcmlwbGU8eyBwdWI6IHN0cmluZyB9PjtcbiAgc2lnbmF0dXJlczogVHJpcGxlPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPdXRwdXRPcHRpb25zIHtcbiAgY3VycmVudE91dHB1dDogT3V0cHV0O1xuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICB2ZXJpZmljYXRpb246IFZlcmlmaWNhdGlvbk9wdGlvbnM7XG4gIGtleWNoYWluQXJyYXk6IFRyaXBsZTx7IHB1Yjogc3RyaW5nIH0+O1xuICB3YWxsZXQ6IElXYWxsZXQ7XG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfTtcbiAgY3VzdG9tQ2hhbmdlPzogQ3VzdG9tQ2hhbmdlT3B0aW9ucztcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlT3V0cHV0KHtcbiAgY3VycmVudE91dHB1dCxcbiAgY29pbixcbiAgdHhQcmVidWlsZCxcbiAgdmVyaWZpY2F0aW9uLFxuICBrZXljaGFpbkFycmF5LFxuICB3YWxsZXQsXG4gIHR4UGFyYW1zLFxuICBjdXN0b21DaGFuZ2UsXG4gIHJlcUlkLFxufTogUGFyc2VPdXRwdXRPcHRpb25zKTogUHJvbWlzZTxPdXRwdXQ+IHtcbiAgY29uc3QgZGlzYWJsZU5ldHdvcmtpbmcgPSAhIXZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcbiAgY29uc3QgY3VycmVudEFkZHJlc3MgPSBjdXJyZW50T3V0cHV0LmFkZHJlc3M7XG5cbiAgaWYgKGN1cnJlbnRBZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSBhZGRyZXNzIGlzIHVuZGVmaW5lZCwgaXQgbWVhbnMgdGhhdCB0aGUgb3V0cHV0IGhhcyBhIG5vbi1lbmNvZGVhYmxlIHNjcmlwdFB1YmtleVxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZW4gd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBhbW91bnQgaXMgMCBhbmQgd2UgY2FuIHNraXAgdGhlIHJlc3QuXG4gICAgaWYgKGN1cnJlbnRPdXRwdXQuYW1vdW50LnRvU3RyaW5nKCkgIT09ICcwJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXRwdXQgd2l0aCB1bmRlZmluZWQgYWRkcmVzcyBtdXN0IGhhdmUgYW1vdW50IG9mIDAnKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPdXRwdXQ7XG4gIH1cblxuICAvLyBhdHRlbXB0IHRvIGdyYWIgdGhlIGFkZHJlc3MgZGV0YWlscyBmcm9tIGVpdGhlciB0aGUgcHJlYnVpbHQgdHgsIG9yIHRoZSB2ZXJpZmljYXRpb24gcGFyYW1zLlxuICAvLyBJZiBib3RoIG9mIHRoZXNlIGFyZSBlbXB0eSwgdGhlbiB3ZSB3aWxsIHRyeSB0byBnZXQgdGhlIGFkZHJlc3MgZGV0YWlscyBmcm9tIGJpdGdvIGluc3RlYWRcbiAgY29uc3QgYWRkcmVzc0RldGFpbHNQcmVidWlsZCA9IF8uZ2V0KHR4UHJlYnVpbGQsIGB0eEluZm8ud2FsbGV0QWRkcmVzc0RldGFpbHMuJHtjdXJyZW50QWRkcmVzc31gLCB7fSk7XG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uOiBBZGRyZXNzVmVyaWZpY2F0aW9uRGF0YSA9IHZlcmlmaWNhdGlvbj8uYWRkcmVzc2VzPy5bY3VycmVudEFkZHJlc3NdID8/IHt9O1xuICBkZWJ1ZygnUGFyc2luZyBhZGRyZXNzIGRldGFpbHMgZm9yICVzJywgY3VycmVudEFkZHJlc3MpO1xuICBsZXQgY3VycmVudEFkZHJlc3NEZXRhaWxzID0gdW5kZWZpbmVkO1xuICBsZXQgY3VycmVudEFkZHJlc3NUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IFJFQ0lQSUVOVF9USFJFU0hPTEQgPSAxMDAwO1xuICB0cnkge1xuICAgIC8vIEluIHRoZSBjYXNlIG9mIFBTQlRzLCB3ZSBjYW4gYWxyZWFkeSBkZXRlcm1pbmUgdGhlIGludGVybmFsL2V4dGVybmFsIHN0YXR1cyBvZiB0aGUgb3V0cHV0IGFkZHJlc3Nlc1xuICAgIC8vIGJhc2VkIG9uIHRoZSBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBQU0JULiBXZSBjYW4gc2hvcnQgY2lyY3VpdCBHRVQgdjIud2FsbGV0LmFkZHJlc3NcbiAgICAvLyBhbmQgc2F2ZSBvbiBuZXR3b3JrIHJlcXVlc3RzLiBTaW5jZSB3ZSBoYXZlIHRoZSBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIGFscmVhZHksIHdlIGNhbiBzdGlsbCB2ZXJpZnkgdGhlIGFkZHJlc3NcbiAgICBpZiAoY3VycmVudE91dHB1dC5leHRlcm5hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgYSBjdXN0b20gY2hhbmdlIHdhbGxldCwgd2UgbmVlZCB0byB2ZXJpZnkgdGhlIGFkZHJlc3MgYWdhaW5zdCB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzXG4gICAgICAvLyBhbmQgbm90IHRoZSB3YWxsZXQga2V5cy4gVGhpcyBjaGVjayBpcyBkb25lIGluIHRoZSBoYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3IgZnVuY3Rpb24gaWYgdGhpcyBlcnJvciBpcyB0aHJvd24uXG4gICAgICBpZiAoY3VzdG9tQ2hhbmdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoJ2BhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQgaXMgYW4gaW50ZXJuYWwgYWRkcmVzcywgd2UgY2FuIHNraXAgdGhlIG5ldHdvcmsgcmVxdWVzdCBhbmQganVzdCB2ZXJpZnkgdGhlIGFkZHJlc3MgbG9jYWxseSB3aXRoIHRoZVxuICAgICAgLy8gZGVyaXZhdGlvbiBpbmZvcm1hdGlvbiB3ZSBoYXZlLiBPdGhlcndpc2UsIGlmIHRoZSBhZGRyZXNzIGlzIGV4dGVybmFsLCB3aGljaCBpcyB0aGUgb25seSByZW1haW5pbmcgY2FzZSwgd2VcbiAgICAgIC8vIGNhbiBqdXN0IHJldHVybiB0aGUgY3VycmVudCBvdXRwdXQgYXMgaXMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBzZXJ2ZXIuXG4gICAgICBpZiAoaXNXYWxsZXRPdXRwdXQoY3VycmVudE91dHB1dCkpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICAgIGFkZHJlc3NUeXBlOiBBYnN0cmFjdFV0eG9Db2luLmluZmVyQWRkcmVzc1R5cGUoeyBjaGFpbjogY3VycmVudE91dHB1dC5jaGFpbiB9KSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxuICAgICAgICAgIGNoYWluOiBjdXJyZW50T3V0cHV0LmNoYWluLFxuICAgICAgICAgIGluZGV4OiBjdXJyZW50T3V0cHV0LmluZGV4LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudE91dHB1dDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9yIHRyYW5zYWN0aW9uIHdpdGggdGhlIGxlZ2FjeSB0cmFuc2FjdGlvbiBmb3JtYXQsIHRoZSBvbmx5IHdheSB0b1xuICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFkZHJlc3MgaXMga25vd24gb24gdGhlIHdhbGxldCBpcyB0byBpbml0aWF0ZSBhXG4gICAgICogbmV0d29yayByZXF1ZXN0IGFuZCBmZXRjaCBpdC4gU2hvdWxkIHRoZSByZXF1ZXN0IGZhaWwgYW5kIHJldHVybiBhIDQwNCxcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuZCB0aGVyZWZvcmUgaGFzIHRvIGJlIGNhdWdodC4gRm9yIHRoYXQgcmVhc29uLCBhZGRyZXNzXG4gICAgICogd2FsbGV0IG93bmVyc2hpcCBkZXRlY3Rpb24gaXMgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gQWRkaXRpb25hbGx5LCBvbmNlXG4gICAgICogdGhlIGFkZHJlc3MgZGV0YWlscyBhcmUgZmV0Y2hlZCBvbiB0aGUgd2FsbGV0LCBhIGxvY2FsIGFkZHJlc3MgdmFsaWRhdGlvblxuICAgICAqIGlzIHJ1biwgd2hvc2UgZXJyb3JzIGhvd2V2ZXIgYXJlIGdlbmVyYXRlZCBjbGllbnQtc2lkZSBhbmQgY2FuIHRoZXJlZm9yZVxuICAgICAqIGJlIGFuYWx5emVkIHdpdGggbW9yZSBncmFudWxhcml0eSBhbmQgdHlwZSBjaGVja2luZy5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEluIG9yZGVyIHRvIG1pbmltaXplIEFQSSByZXF1ZXN0cywgd2UgYXNzdW1lIHRoYXQgZXhwbGljaXQgcmVjaXBpZW50cyBhcmUgYWx3YXlzIGV4dGVybmFsIHdoZW4gdGhlXG4gICAgICogcmVjaXBpZW50IGxpc3QgaXMgPiAxMDAwIFRoaXMgaXMgbm90IGFsd2F5cyBhIHZhbGlkIGFzc3VtcHRpb24gYW5kIGNvdWxkIGxlYWQgZ3JlYXRlciBhcHBhcmVudCBzcGVuZCAoYnV0IG5ldmVyIGxvd2VyKVxuICAgICAqL1xuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiBSRUNJUElFTlRfVEhSRVNIT0xEKSB7XG4gICAgICBjb25zdCBpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cy5zb21lKChyZWNpcGllbnQpID0+XG4gICAgICAgIGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChyZWNpcGllbnQuYWRkcmVzcywgY29pbi5uYW1lKS5lcXVhbHMoXG4gICAgICAgICAgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KGN1cnJlbnRBZGRyZXNzLCBjb2luLm5hbWUpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRPdXRwdXQgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGF3YWl0IGZldGNoQWRkcmVzc0RldGFpbHMoe1xuICAgICAgcmVxSWQsXG4gICAgICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbixcbiAgICAgIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsXG4gICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgIGRpc2FibGVOZXR3b3JraW5nLFxuICAgICAgd2FsbGV0LFxuICAgIH0pO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoZSBhZGRyZXNzIGlzIG9uIHRoZSB3YWxsZXQuIHZlcmlmeUFkZHJlc3MgdGhyb3dzIGlmXG4gICAgLy8gaXQgZmFpbHMgdG8gY29ycmVjdGx5IHJlZGVyaXZlIHRoZSBhZGRyZXNzLCBtZWFuaW5nIGl0J3MgZXh0ZXJuYWxcbiAgICBjdXJyZW50QWRkcmVzc1R5cGUgPSBBYnN0cmFjdFV0eG9Db2luLmluZmVyQWRkcmVzc1R5cGUoYWRkcmVzc0RldGFpbHMpIHx8IHVuZGVmaW5lZDtcbiAgICBjdXJyZW50QWRkcmVzc0RldGFpbHMgPSBhZGRyZXNzRGV0YWlscztcbiAgICBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7IGFkZHJlc3NUeXBlOiBjdXJyZW50QWRkcmVzc1R5cGUgfSwgYWRkcmVzc0RldGFpbHMsIHtcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBkZWJ1ZygnQWRkcmVzcyAlcyB2ZXJpZmljYXRpb24gcGFzc2VkJywgY3VycmVudEFkZHJlc3MpO1xuXG4gICAgLy8gdmVyaWZ5IGFkZHJlc3Mgc3VjY2VlZGVkIHdpdGhvdXQgdGhyb3dpbmcsIHNvIHRoZSBhZGRyZXNzIHdhc1xuICAgIC8vIGNvcnJlY3RseSByZWRlcml2ZWQgZnJvbSB0aGUgd2FsbGV0IGtleWNoYWlucywgbWFraW5nIGl0IG5vdCBleHRlcm5hbFxuICAgIHJldHVybiBfLmV4dGVuZCh7fSwgY3VycmVudE91dHB1dCwgYWRkcmVzc0RldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpY2F0aW9uIHRocmV3IGFuIGVycm9yOicsIGN1cnJlbnRBZGRyZXNzLCBlKTtcbiAgICByZXR1cm4gXy5leHRlbmQoXG4gICAgICB7fSxcbiAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICBhd2FpdCBoYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3Ioe1xuICAgICAgICBlLFxuICAgICAgICBjb2luLFxuICAgICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5czogY3VzdG9tQ2hhbmdlICYmIGN1c3RvbUNoYW5nZS5rZXlzLFxuICAgICAgICBhZGRyZXNzRGV0YWlsczogY3VycmVudEFkZHJlc3NEZXRhaWxzLFxuICAgICAgICBhZGRyZXNzVHlwZTogY3VycmVudEFkZHJlc3NUeXBlLFxuICAgICAgICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbDogdmVyaWZpY2F0aW9uLmNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvcGFyc2VPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBR0wscUNBQXFDLEVBR3JDLHNCQUFzQixHQUl2QixNQUFNLGlCQUFpQixDQUFDO0FBSXpCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUUvQyxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxDQUNKLE1BQWtDLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSyxNQUFrQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQ25ILENBQUM7QUFDSixDQUFDO0FBT0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsY0FBc0I7SUFDaEUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUNsRixLQUFLLENBQUMsNkVBQTZFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDckcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBU0Q7Ozs7R0FJRztBQUNILEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxNQUF3QztJQUMvRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDMUUsSUFBSSxDQUFDO1FB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bnQiOlsiaW1wb3J0IGRlYnVnTGliIGZyb20gJ2RlYnVnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBBZGRyZXNzVmVyaWZpY2F0aW9uRGF0YSxcbiAgSVJlcXVlc3RUcmFjZXIsXG4gIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IsXG4gIElXYWxsZXQsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsXG4gIFZlcmlmaWNhdGlvbk9wdGlvbnMsXG4gIElUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJpcGxlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBPdXRwdXQsIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0IH0gZnJvbSAnLi4vcmVjaXBpZW50JztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6cGFyc2VvdXRwdXQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2FsbGV0T3V0cHV0KG91dHB1dDogT3V0cHV0KTogb3V0cHV0IGlzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IHtcbiAgcmV0dXJuIChcbiAgICAob3V0cHV0IGFzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0KS5jaGFpbiAhPT0gdW5kZWZpbmVkICYmIChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpLmluZGV4ICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuaW50ZXJmYWNlIEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvclJlc3BvbnNlIHtcbiAgZXh0ZXJuYWw6IGJvb2xlYW47XG4gIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDaGVjayBhbiBhZGRyZXNzIHdoaWNoIGZhaWxlZCBpbml0aWFsIHZhbGlkYXRpb24gdG8gc2VlIGlmIGl0J3MgdGhlIGJhc2UgYWRkcmVzcyBvZiBhIG1pZ3JhdGVkIHYxIGJjaCB3YWxsZXQuXG4gKlxuICogVGhlIHdhbGxldCBpbiBxdWVzdGlvbiBjb3VsZCBiZSBhIG1pZ3JhdGVkIFNhZmVIRCBCQ0ggd2FsbGV0LCBhbmQgdGhlIHRyYW5zYWN0aW9uIHdlXG4gKiBhcmUgY3VycmVudGx5IHBhcnNpbmcgaXMgdHJ5aW5nIHRvIHNwZW5kIGNoYW5nZSBiYWNrIHRvIHRoZSB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzLlxuICpcbiAqIEl0IGRvZXMgdGhpcyBzaW5jZSB3ZSBkb24ndCBhbGxvdyBuZXcgYWRkcmVzcyBjcmVhdGlvbiBmb3IgdGhlc2Ugd2FsbGV0cyxcbiAqIGFuZCBpbnN0ZWFkIHJldHVybiB0aGUgYmFzZSBhZGRyZXNzIGZyb20gdGhlIHYxIHdhbGxldCB3aGVuIGEgbmV3IGFkZHJlc3MgaXMgcmVxdWVzdGVkLlxuICogSWYgdGhpcyBuZXcgYWRkcmVzcyBpcyByZXF1ZXN0ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiBzcGVuZGluZyBjaGFuZ2UgYmFjayB0byB0aGUgd2FsbGV0LFxuICogdGhlIGNoYW5nZSB3aWxsIGdvIHRvIHRoZSB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzLiBUaGlzIGFkZHJlc3MgKmlzKiBvbiB0aGUgd2FsbGV0LFxuICogYnV0IGl0IHdpbGwgc3RpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duIGJ5IHZlcmlmeUFkZHJlc3MsIHNpbmNlIHRoZSBkZXJpdmF0aW9uIHBhdGhcbiAqIHVzZWQgZm9yIHRoaXMgYWRkcmVzcyBpcyBub24tc3RhbmRhcmQuIChJIGhhdmUgc2VlbiB0aGVzZSBhZGRyZXNzZXMgZGVyaXZlZCB1c2luZyBwYXRocyBtLzAvMCBhbmQgbS8xMDEsXG4gKiB3aGVyZWFzIHRoZSB2MiBhZGRyZXNzZXMgYXJlIGRlcml2ZWQgdXNpbmcgcGF0aCAgbS8wLzAvJHtjaGFpbn0vJHtpbmRleH0pLlxuICpcbiAqIFRoaXMgbWVhbnMgd2UgbmVlZCB0byBjaGVjayBmb3IgdGhpcyBjYXNlIGV4cGxpY2l0bHkgaW4gdGhpcyBjYXRjaCBibG9jaywgYW5kIGNsYXNzaWZ5XG4gKiB0aGVzZSB0eXBlcyBvZiBvdXRwdXRzIGFzIGludGVybmFsIGluc3RlYWQgb2YgZXh0ZXJuYWwuIEZhaWxpbmcgdG8gZG8gc28gd291bGQgY2F1c2UgdGhlXG4gKiB0cmFuc2FjdGlvbidzIGltcGxpY2l0IGV4dGVybmFsIG91dHB1dHMgKGllLCBvdXRwdXRzIHdoaWNoIGdvIHRvIGFkZHJlc3NlcyBub3Qgc3BlY2lmaWVkIGluXG4gKiB0aGUgcmVjaXBpZW50cyBhcnJheSkgdG8gYWRkIHVwIHRvIG1vcmUgdGhhbiB0aGUgMTUwIGJhc2lzIHBvaW50IGxpbWl0IHdoaWNoIHdlIGVuZm9yY2Ugb25cbiAqIHBheS1hcy15b3UtZ28gb3V0cHV0cyAod2hpY2ggc2hvdWxkIGJlIHRoZSBvbmx5IGltcGxpY2l0IGV4dGVybmFsIG91dHB1dHMgb24gb3VyIHRyYW5zYWN0aW9ucykuXG4gKlxuICogVGhlIDE1MCBiYXNpcyBwb2ludCBsaW1pdCBmb3IgaW1wbGljaXQgZXh0ZXJuYWwgc2VuZHMgaXMgZW5mb3JjZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb24sXG4gKiB3aGljaCBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvIGdldCBpbmZvcm1hdGlvbiBvbiB0aGUgdG90YWwgZXh0ZXJuYWwvaW50ZXJuYWwgc3BlbmQgYW1vdW50c1xuICogZm9yIGEgdHJhbnNhY3Rpb24uIFRoZSBpZGVhIGhlcmUgaXMgdG8gcHJvdGVjdCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBtYWxpY2lvdXNseSBtb2RpZmllZFxuICogdG8gYWRkIG1vcmUgaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmRzIChlZywgdG8gYW4gYXR0YWNrZXItY29udHJvbGxlZCB3YWxsZXQpLlxuICpcbiAqIFNlZSB2ZXJpZnlUcmFuc2FjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhbnNhY3Rpb24gcHJlYnVpbGRzIGFyZSB2ZXJpZmllZCBiZWZvcmUgc2lnbmluZy5cbiAqXG4gKiBAcGFyYW0gd2FsbGV0IHtXYWxsZXR9IHdhbGxldCB3aGljaCBpcyBtYWtpbmcgdGhlIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gY3VycmVudEFkZHJlc3Mge3N0cmluZ30gYWRkcmVzcyB0byBjaGVjayBmb3IgZXh0ZXJuYWxpdHkgcmVsYXRpdmUgdG8gdjEgd2FsbGV0IGJhc2UgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBpc01pZ3JhdGVkQWRkcmVzcyh3YWxsZXQ6IElXYWxsZXQsIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKF8uaXNTdHJpbmcod2FsbGV0Lm1pZ3JhdGVkRnJvbSgpKSAmJiB3YWxsZXQubWlncmF0ZWRGcm9tKCkgPT09IGN1cnJlbnRBZGRyZXNzKSB7XG4gICAgZGVidWcoJ2ZvdW5kIGFkZHJlc3MgJXMgd2hpY2ggd2FzIG1pZ3JhdGVkIGZyb20gdjEgd2FsbGV0LCBhZGRyZXNzIGlzIG5vdCBleHRlcm5hbCcsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zIHtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgY3VzdG9tQ2hhbmdlS2V5czogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snY3VzdG9tQ2hhbmdlS2V5cyddO1xuICBhZGRyZXNzRGV0YWlsczogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snYWRkcmVzc0RldGFpbHMnXTtcbiAgY3VycmVudEFkZHJlc3M6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2N1cnJlbnRBZGRyZXNzJ107XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFkZHJlc3MgaXMgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBjdXN0b20gY2hhbmdlIGtleXNcbiAqIEBwYXJhbSB7VmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnN9IHBhcmFtc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzcyhwYXJhbXM6IFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgY29pbiwgY3VzdG9tQ2hhbmdlS2V5cywgYWRkcmVzc0RldGFpbHMsIGN1cnJlbnRBZGRyZXNzIH0gPSBwYXJhbXM7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvaW4udmVyaWZ5QWRkcmVzcyhcbiAgICAgIF8uZXh0ZW5kKHt9LCBhZGRyZXNzRGV0YWlscywge1xuICAgICAgICBrZXljaGFpbnM6IGN1c3RvbUNoYW5nZUtleXMsXG4gICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byB2ZXJpZnkgY3VzdG9tIGNoYW5nZSBhZGRyZXNzICVzJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9ucyB7XG4gIGU6IEVycm9yO1xuICBjdXJyZW50QWRkcmVzczogc3RyaW5nO1xuICB3YWxsZXQ6IElXYWxsZXQ7XG4gIHR4UGFyYW1zOiB7XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfTtcbiAgY3VzdG9tQ2hhbmdlS2V5cz86IEN1c3RvbUNoYW5nZU9wdGlvbnNbJ2tleXMnXTtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgYWRkcmVzc0RldGFpbHM/OiBhbnk7XG4gIGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgZSxcbiAgY3VycmVudEFkZHJlc3MsXG4gIHdhbGxldCxcbiAgdHhQYXJhbXMsXG4gIGN1c3RvbUNoYW5nZUtleXMsXG4gIGNvaW4sXG4gIGFkZHJlc3NEZXRhaWxzLFxuICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbCxcbn06IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnMpOiBQcm9taXNlPEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvclJlc3BvbnNlPiB7XG4gIC8vIFRvZG86IG5hbWUgc2VydmVyLXNpZGUgZXJyb3JzIHRvIGF2b2lkIG1lc3NhZ2UtYmFzZWQgY2hlY2tpbmcgW0JHLTUxMjRdXG4gIGNvbnN0IHdhbGxldEFkZHJlc3NOb3RGb3VuZCA9IGUubWVzc2FnZS5pbmNsdWRlcygnd2FsbGV0IGFkZHJlc3Mgbm90IGZvdW5kJyk7XG4gIGNvbnN0IHVuZXhwZWN0ZWRBZGRyZXNzID0gZSBpbnN0YW5jZW9mIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3I7XG4gIGlmICh3YWxsZXRBZGRyZXNzTm90Rm91bmQgfHwgdW5leHBlY3RlZEFkZHJlc3MpIHtcbiAgICBpZiAodW5leHBlY3RlZEFkZHJlc3MgJiYgIXdhbGxldEFkZHJlc3NOb3RGb3VuZCkge1xuICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgYSBtaWdyYXRlZCB2MSBiY2ggYWRkcmVzcyAtIGl0IGNvdWxkIGJlIGludGVybmFsXG4gICAgICBjb25zdCBpc01pZ3JhdGVkID0gaXNNaWdyYXRlZEFkZHJlc3Mod2FsbGV0LCBjdXJyZW50QWRkcmVzcyk7XG4gICAgICBpZiAoaXNNaWdyYXRlZCkge1xuICAgICAgICByZXR1cm4geyBleHRlcm5hbDogY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWwgPT09IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKCdBZGRyZXNzICVzIHdhcyBmb3VuZCBvbiB3YWxsZXQgYnV0IGNvdWxkIG5vdCBiZSByZWNvbnN0cnVjdGVkJywgY3VycmVudEFkZHJlc3MpO1xuXG4gICAgICAvLyBhdHRlbXB0IHRvIHZlcmlmeSBhZGRyZXNzIHVzaW5nIGN1c3RvbSBjaGFuZ2UgYWRkcmVzcyBrZXlzIGlmIHRoZSB3YWxsZXQgaGFzIHRoYXQgZmVhdHVyZSBlbmFibGVkXG4gICAgICBpZiAoXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMgJiZcbiAgICAgICAgKGF3YWl0IHZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3MoeyBjb2luLCBhZGRyZXNzRGV0YWlscywgY3VycmVudEFkZHJlc3MsIGN1c3RvbUNoYW5nZUtleXMgfSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gYWRkcmVzcyBpcyB2YWxpZCBhZ2FpbnN0IHRoZSBjdXN0b20gY2hhbmdlIGtleXMuIE1hcmsgYWRkcmVzcyBhcyBub3QgZXh0ZXJuYWxcbiAgICAgICAgLy8gYW5kIHJlcXVlc3Qgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmb3IgdGhlIGN1c3RvbSBjaGFuZ2Uga2V5c1xuICAgICAgICBkZWJ1ZygnQWRkcmVzcyAlcyB2ZXJpZmllZCBhcyBkZXJpdmVkIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Uga2V5cycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGZhbHNlLCBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbjogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoZSBhZGRyZXNzIHdhcyBmb3VuZCwgYnV0IG5vdCBvbiB0aGUgd2FsbGV0LCB3aGljaCBzaW1wbHkgbWVhbnMgaXQncyBleHRlcm5hbFxuICAgIGRlYnVnKCdBZGRyZXNzICVzIHByZXN1bWVkIGV4dGVybmFsJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiB7IGV4dGVybmFsOiB0cnVlIH07XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IgJiYgY3VycmVudEFkZHJlc3MgPT09IHR4UGFyYW1zLmNoYW5nZUFkZHJlc3MpIHtcbiAgICAvLyBleHBlY3QgdG8gc2VlIHRoaXMgZXJyb3Igd2hlbiBwYXNzaW5nIGluIGEgY3VzdG9tIGNoYW5nZUFkZHJlc3Mgd2l0aCBubyBjaGFpbiBvciBpbmRleFxuICAgIHJldHVybiB7IGV4dGVybmFsOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc29sZS5lcnJvcignQWRkcmVzcyBjbGFzc2lmaWNhdGlvbiBmYWlsZWQgZm9yIGFkZHJlc3MnLCBjdXJyZW50QWRkcmVzcyk7XG4gIGNvbnNvbGUudHJhY2UoZSk7XG4gIC8qKlxuICAgKiBJdCBtaWdodCBiZSBhIGNvbXBsZXRlbHkgaW52YWxpZCBhZGRyZXNzIG9yIGEgYmFkIHZhbGlkYXRpb24gYXR0ZW1wdCBvciBzb21ldGhpbmcgZWxzZSBjb21wbGV0ZWx5LCBpblxuICAgKiB3aGljaCBjYXNlIHdlIGRvIG5vdCBwcm9jZWVkIGFuZCByYXRoZXIgcmV0aHJvdyB0aGUgZXJyb3IsIHdoaWNoIGlzIHNhZmVyIHRoYW4gYXNzdW1pbmcgdGhhdCB0aGUgYWRkcmVzc1xuICAgKiB2YWxpZGF0aW9uIGZhaWxlZCBzaW1wbHkgYmVjYXVzZSBpdCdzIGV4dGVybmFsIHRvIHRoZSB3YWxsZXQuXG4gICAqL1xuICB0aHJvdyBlO1xufVxuXG5pbnRlcmZhY2UgRmV0Y2hBZGRyZXNzRGV0YWlsc09wdGlvbnMge1xuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyO1xuICBkaXNhYmxlTmV0d29ya2luZzogYm9vbGVhbjtcbiAgYWRkcmVzc0RldGFpbHNQcmVidWlsZDogYW55O1xuICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbjogYW55O1xuICBjdXJyZW50QWRkcmVzczogc3RyaW5nO1xuICB3YWxsZXQ6IElXYWxsZXQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWRkcmVzc0RldGFpbHMoe1xuICByZXFJZCxcbiAgZGlzYWJsZU5ldHdvcmtpbmcsXG4gIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsXG4gIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uLFxuICBjdXJyZW50QWRkcmVzcyxcbiAgd2FsbGV0LFxufTogRmV0Y2hBZGRyZXNzRGV0YWlsc09wdGlvbnMpIHtcbiAgbGV0IGFkZHJlc3NEZXRhaWxzID0gXy5leHRlbmQoe30sIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uKTtcbiAgZGVidWcoJ0xvY2FsbHkgYXZhaWxhYmxlIGFkZHJlc3MgJXMgZGV0YWlsczogJU8nLCBjdXJyZW50QWRkcmVzcywgYWRkcmVzc0RldGFpbHMpO1xuICBpZiAoXy5pc0VtcHR5KGFkZHJlc3NEZXRhaWxzKSAmJiAhZGlzYWJsZU5ldHdvcmtpbmcpIHtcbiAgICBhZGRyZXNzRGV0YWlscyA9IGF3YWl0IHdhbGxldC5nZXRBZGRyZXNzKHsgYWRkcmVzczogY3VycmVudEFkZHJlc3MsIHJlcUlkIH0pO1xuICAgIGRlYnVnKCdEb3dubG9hZGVkIGFkZHJlc3MgJXMgZGV0YWlsczogJU8nLCBjdXJyZW50QWRkcmVzcywgYWRkcmVzc0RldGFpbHMpO1xuICB9XG4gIHJldHVybiBhZGRyZXNzRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21DaGFuZ2VPcHRpb25zIHtcbiAga2V5czogVHJpcGxlPHsgcHViOiBzdHJpbmcgfT47XG4gIHNpZ25hdHVyZXM6IFRyaXBsZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlT3V0cHV0T3B0aW9ucyB7XG4gIGN1cnJlbnRPdXRwdXQ6IE91dHB1dDtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25PcHRpb25zO1xuICBrZXljaGFpbkFycmF5OiBUcmlwbGU8eyBwdWI6IHN0cmluZyB9PjtcbiAgd2FsbGV0OiBJV2FsbGV0O1xuICB0eFBhcmFtczoge1xuICAgIHJlY2lwaWVudHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGNoYW5nZUFkZHJlc3M/OiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbUNoYW5nZT86IEN1c3RvbUNoYW5nZU9wdGlvbnM7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU91dHB1dCh7XG4gIGN1cnJlbnRPdXRwdXQsXG4gIGNvaW4sXG4gIHR4UHJlYnVpbGQsXG4gIHZlcmlmaWNhdGlvbixcbiAga2V5Y2hhaW5BcnJheSxcbiAgd2FsbGV0LFxuICB0eFBhcmFtcyxcbiAgY3VzdG9tQ2hhbmdlLFxuICByZXFJZCxcbn06IFBhcnNlT3V0cHV0T3B0aW9ucyk6IFByb21pc2U8T3V0cHV0PiB7XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG4gIGNvbnN0IGN1cnJlbnRBZGRyZXNzID0gY3VycmVudE91dHB1dC5hZGRyZXNzO1xuXG4gIGlmIChjdXJyZW50QWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGUgYWRkcmVzcyBpcyB1bmRlZmluZWQsIGl0IG1lYW5zIHRoYXQgdGhlIG91dHB1dCBoYXMgYSBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlcbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgYW1vdW50IGlzIDAgYW5kIHdlIGNhbiBza2lwIHRoZSByZXN0LlxuICAgIGlmIChjdXJyZW50T3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3V0cHV0IHdpdGggdW5kZWZpbmVkIGFkZHJlc3MgbXVzdCBoYXZlIGFtb3VudCBvZiAwJyk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3V0cHV0O1xuICB9XG5cbiAgLy8gYXR0ZW1wdCB0byBncmFiIHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBlaXRoZXIgdGhlIHByZWJ1aWx0IHR4LCBvciB0aGUgdmVyaWZpY2F0aW9uIHBhcmFtcy5cbiAgLy8gSWYgYm90aCBvZiB0aGVzZSBhcmUgZW1wdHksIHRoZW4gd2Ugd2lsbCB0cnkgdG8gZ2V0IHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBiaXRnbyBpbnN0ZWFkXG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQgPSBfLmdldCh0eFByZWJ1aWxkLCBgdHhJbmZvLndhbGxldEFkZHJlc3NEZXRhaWxzLiR7Y3VycmVudEFkZHJlc3N9YCwge30pO1xuICBjb25zdCBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbjogQWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEgPSB2ZXJpZmljYXRpb24/LmFkZHJlc3Nlcz8uW2N1cnJlbnRBZGRyZXNzXSA/PyB7fTtcbiAgZGVidWcoJ1BhcnNpbmcgYWRkcmVzcyBkZXRhaWxzIGZvciAlcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgbGV0IGN1cnJlbnRBZGRyZXNzRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgY29uc3QgUkVDSVBJRU5UX1RIUkVTSE9MRCA9IDEwMDA7XG4gIHRyeSB7XG4gICAgLy8gSW4gdGhlIGNhc2Ugb2YgUFNCVHMsIHdlIGNhbiBhbHJlYWR5IGRldGVybWluZSB0aGUgaW50ZXJuYWwvZXh0ZXJuYWwgc3RhdHVzIG9mIHRoZSBvdXRwdXQgYWRkcmVzc2VzXG4gICAgLy8gYmFzZWQgb24gdGhlIGRlcml2YXRpb24gaW5mb3JtYXRpb24gYmVpbmcgaW5jbHVkZWQgaW4gdGhlIFBTQlQuIFdlIGNhbiBzaG9ydCBjaXJjdWl0IEdFVCB2Mi53YWxsZXQuYWRkcmVzc1xuICAgIC8vIGFuZCBzYXZlIG9uIG5ldHdvcmsgcmVxdWVzdHMuIFNpbmNlIHdlIGhhdmUgdGhlIGRlcml2YXRpb24gaW5mb3JtYXRpb24gYWxyZWFkeSwgd2UgY2FuIHN0aWxsIHZlcmlmeSB0aGUgYWRkcmVzc1xuICAgIGlmIChjdXJyZW50T3V0cHV0LmV4dGVybmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgd2UgaGF2ZSBhIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0LCB3ZSBuZWVkIHRvIHZlcmlmeSB0aGUgYWRkcmVzcyBhZ2FpbnN0IHRoZSBjdXN0b20gY2hhbmdlIGtleXNcbiAgICAgIC8vIGFuZCBub3QgdGhlIHdhbGxldCBrZXlzLiBUaGlzIGNoZWNrIGlzIGRvbmUgaW4gdGhlIGhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvciBmdW5jdGlvbiBpZiB0aGlzIGVycm9yIGlzIHRocm93bi5cbiAgICAgIGlmIChjdXN0b21DaGFuZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcignYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCBpcyBhbiBpbnRlcm5hbCBhZGRyZXNzLCB3ZSBjYW4gc2tpcCB0aGUgbmV0d29yayByZXF1ZXN0IGFuZCBqdXN0IHZlcmlmeSB0aGUgYWRkcmVzcyBsb2NhbGx5IHdpdGggdGhlXG4gICAgICAvLyBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIHdlIGhhdmUuIE90aGVyd2lzZSwgaWYgdGhlIGFkZHJlc3MgaXMgZXh0ZXJuYWwsIHdoaWNoIGlzIHRoZSBvbmx5IHJlbWFpbmluZyBjYXNlLCB3ZVxuICAgICAgLy8gY2FuIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IG91dHB1dCBhcyBpcyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHNlcnZlci5cbiAgICAgIGlmIChpc1dhbGxldE91dHB1dChjdXJyZW50T3V0cHV0KSkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxuICAgICAgICAgIGNoYWluOiBjdXJyZW50T3V0cHV0LmNoYWluLFxuICAgICAgICAgIGluZGV4OiBjdXJyZW50T3V0cHV0LmluZGV4LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudE91dHB1dDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9yIHRyYW5zYWN0aW9uIHdpdGggdGhlIGxlZ2FjeSB0cmFuc2FjdGlvbiBmb3JtYXQsIHRoZSBvbmx5IHdheSB0b1xuICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFkZHJlc3MgaXMga25vd24gb24gdGhlIHdhbGxldCBpcyB0byBpbml0aWF0ZSBhXG4gICAgICogbmV0d29yayByZXF1ZXN0IGFuZCBmZXRjaCBpdC4gU2hvdWxkIHRoZSByZXF1ZXN0IGZhaWwgYW5kIHJldHVybiBhIDQwNCxcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuZCB0aGVyZWZvcmUgaGFzIHRvIGJlIGNhdWdodC4gRm9yIHRoYXQgcmVhc29uLCBhZGRyZXNzXG4gICAgICogd2FsbGV0IG93bmVyc2hpcCBkZXRlY3Rpb24gaXMgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gQWRkaXRpb25hbGx5LCBvbmNlXG4gICAgICogdGhlIGFkZHJlc3MgZGV0YWlscyBhcmUgZmV0Y2hlZCBvbiB0aGUgd2FsbGV0LCBhIGxvY2FsIGFkZHJlc3MgdmFsaWRhdGlvblxuICAgICAqIGlzIHJ1biwgd2hvc2UgZXJyb3JzIGhvd2V2ZXIgYXJlIGdlbmVyYXRlZCBjbGllbnQtc2lkZSBhbmQgY2FuIHRoZXJlZm9yZVxuICAgICAqIGJlIGFuYWx5emVkIHdpdGggbW9yZSBncmFudWxhcml0eSBhbmQgdHlwZSBjaGVja2luZy5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEluIG9yZGVyIHRvIG1pbmltaXplIEFQSSByZXF1ZXN0cywgd2UgYXNzdW1lIHRoYXQgZXhwbGljaXQgcmVjaXBpZW50cyBhcmUgYWx3YXlzIGV4dGVybmFsIHdoZW4gdGhlXG4gICAgICogcmVjaXBpZW50IGxpc3QgaXMgPiAxMDAwIFRoaXMgaXMgbm90IGFsd2F5cyBhIHZhbGlkIGFzc3VtcHRpb24gYW5kIGNvdWxkIGxlYWQgZ3JlYXRlciBhcHBhcmVudCBzcGVuZCAoYnV0IG5ldmVyIGxvd2VyKVxuICAgICAqL1xuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiBSRUNJUElFTlRfVEhSRVNIT0xEKSB7XG4gICAgICBjb25zdCBpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cy5zb21lKChyZWNpcGllbnQpID0+XG4gICAgICAgIGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChyZWNpcGllbnQuYWRkcmVzcywgY29pbi5uYW1lKS5lcXVhbHMoXG4gICAgICAgICAgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KGN1cnJlbnRBZGRyZXNzLCBjb2luLm5hbWUpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRPdXRwdXQgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGF3YWl0IGZldGNoQWRkcmVzc0RldGFpbHMoe1xuICAgICAgcmVxSWQsXG4gICAgICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbixcbiAgICAgIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsXG4gICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgIGRpc2FibGVOZXR3b3JraW5nLFxuICAgICAgd2FsbGV0LFxuICAgIH0pO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoZSBhZGRyZXNzIGlzIG9uIHRoZSB3YWxsZXQuIHZlcmlmeUFkZHJlc3MgdGhyb3dzIGlmXG4gICAgLy8gaXQgZmFpbHMgdG8gY29ycmVjdGx5IHJlZGVyaXZlIHRoZSBhZGRyZXNzLCBtZWFuaW5nIGl0J3MgZXh0ZXJuYWxcbiAgICBjdXJyZW50QWRkcmVzc0RldGFpbHMgPSBhZGRyZXNzRGV0YWlscztcbiAgICBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7fSwgYWRkcmVzc0RldGFpbHMsIHtcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBkZWJ1ZygnQWRkcmVzcyAlcyB2ZXJpZmljYXRpb24gcGFzc2VkJywgY3VycmVudEFkZHJlc3MpO1xuXG4gICAgLy8gdmVyaWZ5IGFkZHJlc3Mgc3VjY2VlZGVkIHdpdGhvdXQgdGhyb3dpbmcsIHNvIHRoZSBhZGRyZXNzIHdhc1xuICAgIC8vIGNvcnJlY3RseSByZWRlcml2ZWQgZnJvbSB0aGUgd2FsbGV0IGtleWNoYWlucywgbWFraW5nIGl0IG5vdCBleHRlcm5hbFxuICAgIHJldHVybiBfLmV4dGVuZCh7fSwgY3VycmVudE91dHB1dCwgYWRkcmVzc0RldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpY2F0aW9uIHRocmV3IGFuIGVycm9yOicsIGN1cnJlbnRBZGRyZXNzLCBlKTtcbiAgICByZXR1cm4gXy5leHRlbmQoXG4gICAgICB7fSxcbiAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICBhd2FpdCBoYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3Ioe1xuICAgICAgICBlLFxuICAgICAgICBjb2luLFxuICAgICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5czogY3VzdG9tQ2hhbmdlICYmIGN1c3RvbUNoYW5nZS5rZXlzLFxuICAgICAgICBhZGRyZXNzRGV0YWlsczogY3VycmVudEFkZHJlc3NEZXRhaWxzLFxuICAgICAgICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbDogdmVyaWZpY2F0aW9uLmNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
2
|
import { BIP32Interface } from '@bitgo/secp256k1';
|
|
3
3
|
import { UtxoCoinName } from '../../names';
|
|
4
|
-
type Unspent
|
|
4
|
+
import type { Unspent } from '../../unspent';
|
|
5
5
|
type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
|
|
6
6
|
/**
|
|
7
7
|
* Sign all inputs of a wallet transaction and verify signatures after signing.
|
|
@@ -23,7 +23,7 @@ export declare function signLegacyTransaction<TNumber extends number | bigint>(t
|
|
|
23
23
|
isLastSignature: boolean;
|
|
24
24
|
signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
|
|
25
25
|
txInfo: {
|
|
26
|
-
unspents?:
|
|
26
|
+
unspents?: Unspent<TNumber>[];
|
|
27
27
|
} | undefined;
|
|
28
28
|
pubs: string[] | undefined;
|
|
29
29
|
cosignerPub: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAS,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAS,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,eAAe,CAAC;AAS5D,KAAK,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC5E,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,EACnG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAC5B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC/D,QAAQ,EAAE,YAAY,EACtB,EACE,eAAe,EACf,yBAAyB,GAC1B,EAAE;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CA0ExC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAC1C,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACtD,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CA4BxC"}
|
|
@@ -68,8 +68,10 @@ export function signAndVerifyWalletTransaction(transaction, unspents, walletSign
|
|
|
68
68
|
if (!isWalletUnspent(unspent)) {
|
|
69
69
|
return InputSigningError.expectedWalletUnspent(inputIndex, null, unspent);
|
|
70
70
|
}
|
|
71
|
+
const walletUnspent = unspent;
|
|
71
72
|
try {
|
|
72
|
-
const publicKey = walletSigner.deriveForChainAndIndex(
|
|
73
|
+
const publicKey = walletSigner.deriveForChainAndIndex(walletUnspent.chain, walletUnspent.index).signer
|
|
74
|
+
.publicKey;
|
|
73
75
|
if (!utxolib.bitgo.verifySignatureWithPublicKey(signedTransaction, inputIndex, prevOutputs, publicKey)) {
|
|
74
76
|
return new InputSigningError(inputIndex, null, unspent, new Error(`invalid signature`));
|
|
75
77
|
}
|
|
@@ -110,4 +112,4 @@ export function signLegacyTransaction(tx, signerKeychain, coinName, params) {
|
|
|
110
112
|
isLastSignature: params.isLastSignature,
|
|
111
113
|
});
|
|
112
114
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkxlZ2FjeVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25MZWdhY3lUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBSTdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFNMUU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFdBQW1HLEVBQ25HLFFBQTRCLEVBQzVCLFlBQStELEVBQy9ELFFBQXNCLEVBQ3RCLEVBQ0UsZUFBZSxFQUNmLHlCQUF5QixHQUkxQjtJQUVELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUEwQixDQUFDO0lBQ3ZELElBQUkseUJBQXlCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUMseUJBQXlCLEdBQUcsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFFBQVEs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RSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUEyQixDQUFDO0lBQzVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFpQixTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEgsT0FBTyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRTtRQUN4RixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FBMkMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgYmlwMzIgfSBmcm9tICdAYml0Z28vc2VjcDI1NmsxJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IGlzVHJpcGxlLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IGRlYnVnTGliIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzIH0gZnJvbSAnLi9yZXBsYXlQcm90ZWN0aW9uJztcbmltcG9ydCB7IElucHV0U2lnbmluZ0Vycm9yLCBUcmFuc2FjdGlvblNpZ25pbmdFcnJvciB9IGZyb20gJy4vU2lnbmluZ0Vycm9yJztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6dXR4bycpO1xuXG5jb25zdCB7IGlzV2FsbGV0VW5zcGVudCwgc2lnbklucHV0V2l0aFVuc3BlbnQsIHRvT3V0cHV0IH0gPSB1dHhvbGliLmJpdGdvO1xuXG50eXBlIFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj47XG5cbnR5cGUgUm9vdFdhbGxldEtleXMgPSB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzO1xuXG4vKipcbiAqIFNpZ24gYWxsIGlucHV0cyBvZiBhIHdhbGxldCB0cmFuc2FjdGlvbiBhbmQgdmVyaWZ5IHNpZ25hdHVyZXMgYWZ0ZXIgc2lnbmluZy5cbiAqIENvbGxlY3RzIGFuZCBsb2dzIHNpZ25pbmcgZXJyb3JzIGFuZCB2ZXJpZmljYXRpb24gZXJyb3JzLCB0aHJvd3MgZXJyb3IgaW4gdGhlIGVuZCBpZiBhbnkgb2YgdGhlbVxuICogZmFpbGVkLlxuICpcbiAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIHdhbGxldCB0cmFuc2FjdGlvbiAoYnVpbGRlcikgdG8gYmUgc2lnbmVkXG4gKiBAcGFyYW0gdW5zcGVudHMgLSB0cmFuc2FjdGlvbiB1bnNwZW50c1xuICogQHBhcmFtIHdhbGxldFNpZ25lciAtIHNpZ25pbmcgcGFyYW1ldGVyc1xuICogQHBhcmFtIGNvaW5OYW1lIC0gY29pbiBuYW1lIGZvciBuZXR3b3JrLXNwZWNpZmljIGxvZ2ljXG4gKiBAcGFyYW0gaXNMYXN0U2lnbmF0dXJlIC0gUmV0dXJucyBmdWxsLXNpZ25lZCB0cmFuc2FjdGlvbiB3aGVuIHRydWUuIEJ1aWxkcyBoYWxmLXNpZ25lZCB3aGVuIGZhbHNlLlxuICogQHBhcmFtIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMgLSBMaXN0IG9mIHJlcGxheSBwcm90ZWN0aW9uIGFkZHJlc3NlcyB0byBza2lwIHNpZ25pbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHJhbnNhY3Rpb246IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHwgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+LFxuICB1bnNwZW50czogVW5zcGVudDxUTnVtYmVyPltdLFxuICB3YWxsZXRTaWduZXI6IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4sXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIHtcbiAgICBpc0xhc3RTaWduYXR1cmUsXG4gICAgcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyxcbiAgfToge1xuICAgIGlzTGFzdFNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzPzogc3RyaW5nW107XG4gIH1cbik6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgY29uc3QgbmV0d29yayA9IHRyYW5zYWN0aW9uLm5ldHdvcmsgYXMgdXR4b2xpYi5OZXR3b3JrO1xuICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyA9IGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbk5hbWUpO1xuICB9XG4gIGNvbnN0IHByZXZPdXRwdXRzID0gdW5zcGVudHMubWFwKCh1KSA9PiB0b091dHB1dCh1LCBuZXR3b3JrKSk7XG5cbiAgbGV0IHR4QnVpbGRlcjogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+O1xuICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgIHR4QnVpbGRlciA9IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRnJvbVRyYW5zYWN0aW9uPFROdW1iZXI+KHRyYW5zYWN0aW9uLCBwcmV2T3V0cHV0cyk7XG4gICAgaWYgKHRyYW5zYWN0aW9uLmlucy5sZW5ndGggIT09IHVuc3BlbnRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0cmFuc2FjdGlvbiBpbnB1dHMgbXVzdCBtYXRjaCB1bnNwZW50c2ApO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uQnVpbGRlcikge1xuICAgIHR4QnVpbGRlciA9IHRyYW5zYWN0aW9uO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwYXNzIFV0eG9UcmFuc2FjdGlvbiBvciBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyYCk7XG4gIH1cblxuICBjb25zdCBzaWduRXJyb3JzOiBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPltdID0gdW5zcGVudHNcbiAgICAubWFwKCh1bnNwZW50OiBVbnNwZW50PFROdW1iZXI+LCBpbnB1dEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChyZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLmluY2x1ZGVzKHVuc3BlbnQuYWRkcmVzcykpIHtcbiAgICAgICAgZGVidWcoJ1NraXBwaW5nIHNpZ25hdHVyZSBmb3IgaW5wdXQgJWQgb2YgJWQgKFJQIGlucHV0PyknLCBpbnB1dEluZGV4ICsgMSwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1dhbGxldFVuc3BlbnQ8VE51bWJlcj4odW5zcGVudCkpIHtcbiAgICAgICAgcmV0dXJuIElucHV0U2lnbmluZ0Vycm9yLmV4cGVjdGVkV2FsbGV0VW5zcGVudDxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50KTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHNpZ25JbnB1dFdpdGhVbnNwZW50PFROdW1iZXI+KHR4QnVpbGRlciwgaW5wdXRJbmRleCwgdW5zcGVudCwgd2FsbGV0U2lnbmVyKTtcbiAgICAgICAgZGVidWcoJ1N1Y2Nlc3NmdWxseSBzaWduZWQgaW5wdXQgJWQgb2YgJWQnLCBpbnB1dEluZGV4ICsgMSwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKGUpOiBlIGlzIElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBpc0xhc3RTaWduYXR1cmUgPyB0eEJ1aWxkZXIuYnVpbGQoKSA6IHR4QnVpbGRlci5idWlsZEluY29tcGxldGUoKTtcblxuICBjb25zdCB2ZXJpZnlFcnJvcnM6IElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+W10gPSBzaWduZWRUcmFuc2FjdGlvbi5pbnNcbiAgICAubWFwKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgICAgY29uc3QgdW5zcGVudCA9IHVuc3BlbnRzW2lucHV0SW5kZXhdIGFzIFVuc3BlbnQ8VE51bWJlcj47XG4gICAgICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcy5pbmNsdWRlcyh1bnNwZW50LmFkZHJlc3MpKSB7XG4gICAgICAgIGRlYnVnKFxuICAgICAgICAgICdTa2lwcGluZyBpbnB1dCBzaWduYXR1cmUgJWQgb2YgJWQgKHVuc3BlbnQgZnJvbSByZXBsYXkgcHJvdGVjdGlvbiBhZGRyZXNzIHdoaWNoIGlzIHBsYXRmb3JtIHNpZ25lZCBvbmx5KScsXG4gICAgICAgICAgaW5wdXRJbmRleCArIDEsXG4gICAgICAgICAgdW5zcGVudHMubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNXYWxsZXRVbnNwZW50PFROdW1iZXI+KHVuc3BlbnQpKSB7XG4gICAgICAgIHJldHVybiBJbnB1dFNpZ25pbmdFcnJvci5leHBlY3RlZFdhbGxldFVuc3BlbnQ8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSB3YWxsZXRTaWduZXIuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleCh1bnNwZW50LmNoYWluLCB1bnNwZW50LmluZGV4KS5zaWduZXIucHVibGljS2V5O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXV0eG9saWIuYml0Z28udmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleTxUTnVtYmVyPihzaWduZWRUcmFuc2FjdGlvbiwgaW5wdXRJbmRleCwgcHJldk91dHB1dHMsIHB1YmxpY0tleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBuZXcgRXJyb3IoYGludmFsaWQgc2lnbmF0dXJlYCkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlYnVnKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICAgICAgICByZXR1cm4gbmV3IElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+KGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQsIGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcigoZSk6IGUgaXMgSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj4gPT4gZSAhPT0gdW5kZWZpbmVkKTtcblxuICBpZiAoc2lnbkVycm9ycy5sZW5ndGggfHwgdmVyaWZ5RXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUcmFuc2FjdGlvblNpZ25pbmdFcnJvcihzaWduRXJyb3JzLCB2ZXJpZnlFcnJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbkxlZ2FjeVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSB8IHVuZGVmaW5lZCxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgcGFyYW1zOiB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHNpZ25pbmdTdGVwOiAnc2lnbmVyTm9uY2UnIHwgJ2Nvc2lnbmVyTm9uY2UnIHwgJ3NpZ25lclNpZ25hdHVyZScgfCB1bmRlZmluZWQ7XG4gICAgdHhJbmZvOiB7IHVuc3BlbnRzPzogdXR4b2xpYi5iaXRnby5VbnNwZW50PFROdW1iZXI+W10gfSB8IHVuZGVmaW5lZDtcbiAgICBwdWJzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBjb3NpZ25lclB1Yjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4pOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gIHN3aXRjaCAocGFyYW1zLnNpZ25pbmdTdGVwKSB7XG4gICAgY2FzZSAnc2lnbmVyTm9uY2UnOlxuICAgIGNhc2UgJ2Nvc2lnbmVyTm9uY2UnOlxuICAgICAgLyoqXG4gICAgICAgKiBJbiBjZXJ0YWluIGNhc2VzLCB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSBub3Qga25vdyB3aGV0aGVyIHRoZSB0eEhleCBjb250YWlucyBhIHBzYnQgd2l0aCB0YXByb290IGtleSBwYXRoIHNwZW5kIGlucHV0KHMpLlxuICAgICAgICogSW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvciwgbm8tb3AgYW5kIHJldHVybiB0aGUgdHhIZXguIFNvIHRoYXQgdGhlIGNhbGxlciBjYW4gY2FsbCB0aGlzIG1ldGhvZCBpbiB0aGUgc2FtZSBzZXF1ZW5jZS5cbiAgICAgICAqL1xuICAgICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgaWYgKHR4Lmlucy5sZW5ndGggIT09IHBhcmFtcy50eEluZm8/LnVuc3BlbnRzPy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2xlbmd0aCBvZiB1bnNwZW50cyBhcnJheSBzaG91bGQgZXF1YWwgdG8gdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbiBpbnB1dHMnKTtcbiAgfVxuXG4gIGlmICghcGFyYW1zLnB1YnMgfHwgIWlzVHJpcGxlKHBhcmFtcy5wdWJzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIHhwdWIgYXJyYXlgKTtcbiAgfVxuXG4gIGNvbnN0IGtleWNoYWlucyA9IHBhcmFtcy5wdWJzLm1hcCgocHViKSA9PiBiaXAzMi5mcm9tQmFzZTU4KHB1YikpIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG4gIGNvbnN0IGNvc2lnbmVyUHViID0gcGFyYW1zLmNvc2lnbmVyUHViID8/IHBhcmFtcy5wdWJzWzJdO1xuICBjb25zdCBjb3NpZ25lcktleWNoYWluID0gYmlwMzIuZnJvbUJhc2U1OChjb3NpZ25lclB1Yik7XG5cbiAgYXNzZXJ0KHNpZ25lcktleWNoYWluKTtcbiAgY29uc3Qgd2FsbGV0U2lnbmVyID0gbmV3IGJpdGdvLldhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+KGtleWNoYWlucywgc2lnbmVyS2V5Y2hhaW4sIGNvc2lnbmVyS2V5Y2hhaW4pO1xuICByZXR1cm4gc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uKHR4LCBwYXJhbXMudHhJbmZvLnVuc3BlbnRzLCB3YWxsZXRTaWduZXIsIGNvaW5OYW1lLCB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBwYXJhbXMuaXNMYXN0U2lnbmF0dXJlLFxuICB9KSBhcyB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcbn1cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkxlZ2FjeVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25MZWdhY3lUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBSzdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFJMUU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFdBQW1HLEVBQ25HLFFBQTRCLEVBQzVCLFlBQStELEVBQy9ELFFBQXNCLEVBQ3RCLEVBQ0UsZUFBZSxFQUNmLHlCQUF5QixHQUkxQjtJQUVELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUEwQixDQUFDO0lBQ3ZELElBQUkseUJBQXlCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUMseUJBQXlCLEdBQUcsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFFBQVEs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LENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBMkIsQ0FBQztJQUM1RixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXZELE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBaUIsU0FBUyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hILE9BQU8sOEJBQThCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUU7UUFDeEYsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQTJDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UsIGJpcDMyIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBkZWJ1Z0xpYiBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcbmltcG9ydCB0eXBlIHsgVW5zcGVudCwgV2FsbGV0VW5zcGVudCB9IGZyb20gJy4uLy4uL3Vuc3BlbnQnO1xuXG5pbXBvcnQgeyBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzIH0gZnJvbSAnLi9yZXBsYXlQcm90ZWN0aW9uJztcbmltcG9ydCB7IElucHV0U2lnbmluZ0Vycm9yLCBUcmFuc2FjdGlvblNpZ25pbmdFcnJvciB9IGZyb20gJy4vU2lnbmluZ0Vycm9yJztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6dXR4bycpO1xuXG5jb25zdCB7IGlzV2FsbGV0VW5zcGVudCwgc2lnbklucHV0V2l0aFVuc3BlbnQsIHRvT3V0cHV0IH0gPSB1dHhvbGliLmJpdGdvO1xuXG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSB3YWxsZXQgdHJhbnNhY3Rpb24gYW5kIHZlcmlmeSBzaWduYXR1cmVzIGFmdGVyIHNpZ25pbmcuXG4gKiBDb2xsZWN0cyBhbmQgbG9ncyBzaWduaW5nIGVycm9ycyBhbmQgdmVyaWZpY2F0aW9uIGVycm9ycywgdGhyb3dzIGVycm9yIGluIHRoZSBlbmQgaWYgYW55IG9mIHRoZW1cbiAqIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSB3YWxsZXQgdHJhbnNhY3Rpb24gKGJ1aWxkZXIpIHRvIGJlIHNpZ25lZFxuICogQHBhcmFtIHVuc3BlbnRzIC0gdHJhbnNhY3Rpb24gdW5zcGVudHNcbiAqIEBwYXJhbSB3YWxsZXRTaWduZXIgLSBzaWduaW5nIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBjb2luTmFtZSAtIGNvaW4gbmFtZSBmb3IgbmV0d29yay1zcGVjaWZpYyBsb2dpY1xuICogQHBhcmFtIGlzTGFzdFNpZ25hdHVyZSAtIFJldHVybnMgZnVsbC1zaWduZWQgdHJhbnNhY3Rpb24gd2hlbiB0cnVlLiBCdWlsZHMgaGFsZi1zaWduZWQgd2hlbiBmYWxzZS5cbiAqIEBwYXJhbSByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzIC0gTGlzdCBvZiByZXBsYXkgcHJvdGVjdGlvbiBhZGRyZXNzZXMgdG8gc2tpcCBzaWduaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQW5kVmVyaWZ5V2FsbGV0VHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHRyYW5zYWN0aW9uOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB8IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPixcbiAgdW5zcGVudHM6IFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgd2FsbGV0U2lnbmVyOiB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICB7XG4gICAgaXNMYXN0U2lnbmF0dXJlLFxuICAgIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMsXG4gIH06IHtcbiAgICBpc0xhc3RTaWduYXR1cmU6IGJvb2xlYW47XG4gICAgcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcz86IHN0cmluZ1tdO1xuICB9XG4pOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gIGNvbnN0IG5ldHdvcmsgPSB0cmFuc2FjdGlvbi5uZXR3b3JrIGFzIHV0eG9saWIuTmV0d29yaztcbiAgaWYgKHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMgPSBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKGNvaW5OYW1lKTtcbiAgfVxuICBjb25zdCBwcmV2T3V0cHV0cyA9IHVuc3BlbnRzLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgbmV0d29yaykpO1xuXG4gIGxldCB0eEJ1aWxkZXI6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPjtcbiAgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICB0eEJ1aWxkZXIgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPih0cmFuc2FjdGlvbiwgcHJldk91dHB1dHMpO1xuICAgIGlmICh0cmFuc2FjdGlvbi5pbnMubGVuZ3RoICE9PSB1bnNwZW50cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHJhbnNhY3Rpb24gaW5wdXRzIG11c3QgbWF0Y2ggdW5zcGVudHNgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIpIHtcbiAgICB0eEJ1aWxkZXIgPSB0cmFuc2FjdGlvbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcGFzcyBVdHhvVHJhbnNhY3Rpb24gb3IgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcmApO1xuICB9XG5cbiAgY29uc3Qgc2lnbkVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj5bXSA9IHVuc3BlbnRzXG4gICAgLm1hcCgodW5zcGVudDogVW5zcGVudDxUTnVtYmVyPiwgaW5wdXRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcy5pbmNsdWRlcyh1bnNwZW50LmFkZHJlc3MpKSB7XG4gICAgICAgIGRlYnVnKCdTa2lwcGluZyBzaWduYXR1cmUgZm9yIGlucHV0ICVkIG9mICVkIChSUCBpbnB1dD8pJywgaW5wdXRJbmRleCArIDEsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNXYWxsZXRVbnNwZW50PFROdW1iZXI+KHVuc3BlbnQpKSB7XG4gICAgICAgIHJldHVybiBJbnB1dFNpZ25pbmdFcnJvci5leHBlY3RlZFdhbGxldFVuc3BlbnQ8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBzaWduSW5wdXRXaXRoVW5zcGVudDxUTnVtYmVyPih0eEJ1aWxkZXIsIGlucHV0SW5kZXgsIHVuc3BlbnQgYXMgV2FsbGV0VW5zcGVudDxUTnVtYmVyPiwgd2FsbGV0U2lnbmVyKTtcbiAgICAgICAgZGVidWcoJ1N1Y2Nlc3NmdWxseSBzaWduZWQgaW5wdXQgJWQgb2YgJWQnLCBpbnB1dEluZGV4ICsgMSwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKGUpOiBlIGlzIElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBpc0xhc3RTaWduYXR1cmUgPyB0eEJ1aWxkZXIuYnVpbGQoKSA6IHR4QnVpbGRlci5idWlsZEluY29tcGxldGUoKTtcblxuICBjb25zdCB2ZXJpZnlFcnJvcnM6IElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+W10gPSBzaWduZWRUcmFuc2FjdGlvbi5pbnNcbiAgICAubWFwKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgICAgY29uc3QgdW5zcGVudCA9IHVuc3BlbnRzW2lucHV0SW5kZXhdIGFzIFVuc3BlbnQ8VE51bWJlcj47XG4gICAgICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcy5pbmNsdWRlcyh1bnNwZW50LmFkZHJlc3MpKSB7XG4gICAgICAgIGRlYnVnKFxuICAgICAgICAgICdTa2lwcGluZyBpbnB1dCBzaWduYXR1cmUgJWQgb2YgJWQgKHVuc3BlbnQgZnJvbSByZXBsYXkgcHJvdGVjdGlvbiBhZGRyZXNzIHdoaWNoIGlzIHBsYXRmb3JtIHNpZ25lZCBvbmx5KScsXG4gICAgICAgICAgaW5wdXRJbmRleCArIDEsXG4gICAgICAgICAgdW5zcGVudHMubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNXYWxsZXRVbnNwZW50PFROdW1iZXI+KHVuc3BlbnQpKSB7XG4gICAgICAgIHJldHVybiBJbnB1dFNpZ25pbmdFcnJvci5leHBlY3RlZFdhbGxldFVuc3BlbnQ8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCB3YWxsZXRVbnNwZW50ID0gdW5zcGVudCBhcyBXYWxsZXRVbnNwZW50PFROdW1iZXI+O1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHVibGljS2V5ID0gd2FsbGV0U2lnbmVyLmRlcml2ZUZvckNoYWluQW5kSW5kZXgod2FsbGV0VW5zcGVudC5jaGFpbiwgd2FsbGV0VW5zcGVudC5pbmRleCkuc2lnbmVyXG4gICAgICAgICAgLnB1YmxpY0tleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF1dHhvbGliLmJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXk8VE51bWJlcj4oc2lnbmVkVHJhbnNhY3Rpb24sIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzLCBwdWJsaWNLZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3IoaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgbmV3IEVycm9yKGBpbnZhbGlkIHNpZ25hdHVyZWApKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZygnSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKGUpOiBlIGlzIElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgaWYgKHNpZ25FcnJvcnMubGVuZ3RoIHx8IHZlcmlmeUVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3Ioc2lnbkVycm9ycywgdmVyaWZ5RXJyb3JzKTtcbiAgfVxuXG4gIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25MZWdhY3lUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQsXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIHBhcmFtczoge1xuICAgIGlzTGFzdFNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBzaWduaW5nU3RlcDogJ3NpZ25lck5vbmNlJyB8ICdjb3NpZ25lck5vbmNlJyB8ICdzaWduZXJTaWduYXR1cmUnIHwgdW5kZWZpbmVkO1xuICAgIHR4SW5mbzogeyB1bnNwZW50cz86IFVuc3BlbnQ8VE51bWJlcj5bXSB9IHwgdW5kZWZpbmVkO1xuICAgIHB1YnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNvc2lnbmVyUHViOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbik6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICBjYXNlICdzaWduZXJOb25jZSc6XG4gICAgY2FzZSAnY29zaWduZXJOb25jZSc6XG4gICAgICAvKipcbiAgICAgICAqIEluIGNlcnRhaW4gY2FzZXMsIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IG5vdCBrbm93IHdoZXRoZXIgdGhlIHR4SGV4IGNvbnRhaW5zIGEgcHNidCB3aXRoIHRhcHJvb3Qga2V5IHBhdGggc3BlbmQgaW5wdXQocykuXG4gICAgICAgKiBJbnN0ZWFkIG9mIHRocm93aW5nIGVycm9yLCBuby1vcCBhbmQgcmV0dXJuIHRoZSB0eEhleC4gU28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBzYW1lIHNlcXVlbmNlLlxuICAgICAgICovXG4gICAgICByZXR1cm4gdHg7XG4gIH1cblxuICBpZiAodHguaW5zLmxlbmd0aCAhPT0gcGFyYW1zLnR4SW5mbz8udW5zcGVudHM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbGVuZ3RoIG9mIHVuc3BlbnRzIGFycmF5IHNob3VsZCBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGlucHV0cycpO1xuICB9XG5cbiAgaWYgKCFwYXJhbXMucHVicyB8fCAhaXNUcmlwbGUocGFyYW1zLnB1YnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgeHB1YiBhcnJheWApO1xuICB9XG5cbiAgY29uc3Qga2V5Y2hhaW5zID0gcGFyYW1zLnB1YnMubWFwKChwdWIpID0+IGJpcDMyLmZyb21CYXNlNTgocHViKSkgYXMgVHJpcGxlPEJJUDMySW50ZXJmYWNlPjtcbiAgY29uc3QgY29zaWduZXJQdWIgPSBwYXJhbXMuY29zaWduZXJQdWIgPz8gcGFyYW1zLnB1YnNbMl07XG4gIGNvbnN0IGNvc2lnbmVyS2V5Y2hhaW4gPSBiaXAzMi5mcm9tQmFzZTU4KGNvc2lnbmVyUHViKTtcblxuICBhc3NlcnQoc2lnbmVyS2V5Y2hhaW4pO1xuICBjb25zdCB3YWxsZXRTaWduZXIgPSBuZXcgYml0Z28uV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4oa2V5Y2hhaW5zLCBzaWduZXJLZXljaGFpbiwgY29zaWduZXJLZXljaGFpbik7XG4gIHJldHVybiBzaWduQW5kVmVyaWZ5V2FsbGV0VHJhbnNhY3Rpb24odHgsIHBhcmFtcy50eEluZm8udW5zcGVudHMsIHdhbGxldFNpZ25lciwgY29pbk5hbWUsIHtcbiAgICBpc0xhc3RTaWduYXR1cmU6IHBhcmFtcy5pc0xhc3RTaWduYXR1cmUsXG4gIH0pIGFzIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+O1xufVxuIl19
|
|
@@ -13,7 +13,7 @@ export type PsbtParsedScriptType = 'p2sh' | 'p2wsh' | 'p2shP2wsh' | 'p2shP2pk' |
|
|
|
13
13
|
* @param psbt
|
|
14
14
|
* @param signerKeychain
|
|
15
15
|
*/
|
|
16
|
-
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain:
|
|
16
|
+
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface): utxolib.bitgo.UtxoPsbt;
|
|
17
17
|
export declare function signPsbtWithMusig2ParticipantUtxolib(coin: Musig2Participant<utxolib.bitgo.UtxoPsbt>, tx: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface | undefined, params: {
|
|
18
18
|
signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
|
|
19
19
|
walletId: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signPsbtUtxolib.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signPsbtUtxolib.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,wBAAwB,GAExB,YAAY,GACZ,sBAAsB,GACtB,mBAAmB,CAAC;AAExB;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"signPsbtUtxolib.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signPsbtUtxolib.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,wBAAwB,GAExB,YAAY,GACZ,sBAAsB,GACtB,mBAAmB,CAAC;AAExB;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAwDxB;AAYD,wBAAsB,oCAAoC,CACxD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC/C,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC1B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,MAAM,EAAE;IACN,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GACA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CA6CjC"}
|
|
@@ -114,4 +114,4 @@ export async function signPsbtWithMusig2ParticipantUtxolib(coin, tx, signerKeych
|
|
|
114
114
|
assert(signerKeychain);
|
|
115
115
|
return signAndVerifyPsbt(tx, signerKeychain);
|
|
116
116
|
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnRVdHhvbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25Qc2J0VXR4b2xpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQWN4Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUE0QixFQUM1QixjQUFzQztJQUV0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQy9CLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUMvQixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBRS9DLE1BQU0sVUFBVSxHQUFnQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDN0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUNqQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFD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QU0sQ0FBQztRQUNOLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssZUFBZTtnQkFDbEI7OzttQkFHRztnQkFDSCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8saUJBQWlCLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgZGVidWdMaWIgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgeyBJbnB1dFNpZ25pbmdFcnJvciwgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3IgfSBmcm9tICcuL1NpZ25pbmdFcnJvcic7XG5pbXBvcnQgeyBNdXNpZzJQYXJ0aWNpcGFudCB9IGZyb20gJy4vbXVzaWcyJztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6dXR4bycpO1xuXG5leHBvcnQgdHlwZSBQc2J0UGFyc2VkU2NyaXB0VHlwZSA9XG4gIHwgJ3Ayc2gnXG4gIHwgJ3Ayd3NoJ1xuICB8ICdwMnNoUDJ3c2gnXG4gIHwgJ3Ayc2hQMnBrJ1xuICB8ICd0YXByb290S2V5UGF0aFNwZW5kJ1xuICB8ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJ1xuICAvLyB3YXNtLXV0eG8gdHlwZXNcbiAgfCAncDJ0ckxlZ2FjeSdcbiAgfCAncDJ0ck11c2lnMlNjcmlwdFBhdGgnXG4gIHwgJ3AydHJNdXNpZzJLZXlQYXRoJztcblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSBwc2J0IGFuZCB2ZXJpZnkgc2lnbmF0dXJlcyBhZnRlciBzaWduaW5nLlxuICogQ29sbGVjdHMgYW5kIGxvZ3Mgc2lnbmluZyBlcnJvcnMgYW5kIHZlcmlmaWNhdGlvbiBlcnJvcnMsIHRocm93cyBlcnJvciBpbiB0aGUgZW5kIGlmIGFueSBvZiB0aGVtXG4gKiBmYWlsZWQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBtaXJyb3JzIHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbiwgYnV0IGlzIHVzZWQgZm9yIHNpZ25pbmcgUFNCVHMgaW5zdGVhZCBvZlxuICogdXNpbmcgVHJhbnNhY3Rpb25CdWlsZGVyXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEBwYXJhbSBzaWduZXJLZXljaGFpblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVBzYnQoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiB1dHhvbGliLkJJUDMySW50ZXJmYWNlXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgY29uc3QgdHhJbnB1dHMgPSBwc2J0LnR4SW5wdXRzO1xuICBjb25zdCBvdXRwdXRJZHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHNjcmlwdFR5cGVzOiBQc2J0UGFyc2VkU2NyaXB0VHlwZVtdID0gW107XG5cbiAgY29uc3Qgc2lnbkVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PltdID0gcHNidC5kYXRhLmlucHV0c1xuICAgIC5tYXAoKGlucHV0LCBpbnB1dEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dElkID0gdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQodHhJbnB1dHNbaW5wdXRJbmRleF0pKTtcbiAgICAgIG91dHB1dElkcy5wdXNoKG91dHB1dElkKTtcblxuICAgICAgY29uc3QgeyBzY3JpcHRUeXBlIH0gPSB1dHhvbGliLmJpdGdvLnBhcnNlUHNidElucHV0KGlucHV0KTtcbiAgICAgIHNjcmlwdFR5cGVzLnB1c2goc2NyaXB0VHlwZSk7XG5cbiAgICAgIGlmIChzY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgICAgIGRlYnVnKCdTa2lwcGluZyBzaWduYXR1cmUgZm9yIGlucHV0ICVkIG9mICVkIChSUCBpbnB1dD8pJywgaW5wdXRJbmRleCArIDEsIHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBwc2J0LnNpZ25JbnB1dEhEKGlucHV0SW5kZXgsIHNpZ25lcktleWNoYWluKTtcbiAgICAgICAgZGVidWcoJ1N1Y2Nlc3NmdWxseSBzaWduZWQgaW5wdXQgJWQgb2YgJWQnLCBpbnB1dEluZGV4ICsgMSwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gbmV3IElucHV0U2lnbmluZ0Vycm9yPGJpZ2ludD4oaW5wdXRJbmRleCwgc2NyaXB0VHlwZSwgeyBpZDogb3V0cHV0SWQgfSwgZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKChlKTogZSBpcyBJbnB1dFNpZ25pbmdFcnJvcjxiaWdpbnQ+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgdmVyaWZ5RXJyb3JzOiBJbnB1dFNpZ25pbmdFcnJvcjxiaWdpbnQ+W10gPSBwc2J0LmRhdGEuaW5wdXRzXG4gICAgLm1hcCgoaW5wdXQsIGlucHV0SW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlc1tpbnB1dEluZGV4XTtcbiAgICAgIGlmIChzY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgICAgIGRlYnVnKFxuICAgICAgICAgICdTa2lwcGluZyBpbnB1dCBzaWduYXR1cmUgJWQgb2YgJWQgKHVuc3BlbnQgZnJvbSByZXBsYXkgcHJvdGVjdGlvbiBhZGRyZXNzIHdoaWNoIGlzIHBsYXRmb3JtIHNpZ25lZCBvbmx5KScsXG4gICAgICAgICAgaW5wdXRJbmRleCArIDEsXG4gICAgICAgICAgcHNidC5kYXRhLmlucHV0cy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRwdXRJZCA9IG91dHB1dElkc1tpbnB1dEluZGV4XTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaW5wdXRJbmRleCwgc2lnbmVyS2V5Y2hhaW4pKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcihpbnB1dEluZGV4LCBzY3JpcHRUeXBlLCB7IGlkOiBvdXRwdXRJZCB9LCBuZXcgRXJyb3IoYGludmFsaWQgc2lnbmF0dXJlYCkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlYnVnKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICAgICAgICByZXR1cm4gbmV3IElucHV0U2lnbmluZ0Vycm9yPGJpZ2ludD4oaW5wdXRJbmRleCwgc2NyaXB0VHlwZSwgeyBpZDogb3V0cHV0SWQgfSwgZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKChlKTogZSBpcyBJbnB1dFNpZ25pbmdFcnJvcjxiaWdpbnQ+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgaWYgKHNpZ25FcnJvcnMubGVuZ3RoIHx8IHZlcmlmeUVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3Ioc2lnbkVycm9ycywgdmVyaWZ5RXJyb3JzKTtcbiAgfVxuXG4gIHJldHVybiBwc2J0O1xufVxuXG4vKipcbiAqIEtleSBWYWx1ZTogVW5zaWduZWQgdHggaWQgPT4gUFNCVFxuICogSXQgaXMgdXNlZCB0byBjYWNoZSBQU0JUcyB3aXRoIHRhcHJvb3Qga2V5IHBhdGggKE11U2lnMikgaW5wdXRzIGR1cmluZyBleHRlcm5hbCBleHByZXNzIHNpZ25lciBpcyBhY3RpdmF0ZWQuXG4gKiBSZWFzb246IE11U2lnMiBzaWduZXIgc2VjdXJlIG5vbmNlIGlzIGNhY2hlZCBpbiB0aGUgVXR4b1BzYnQgb2JqZWN0LiBJdCB3aWxsIGJlIHJlcXVpcmVkIGR1cmluZyB0aGUgc2lnbmluZyBzdGVwLlxuICogRm9yIG1vcmUgaW5mbywgY2hlY2sgU2lnblRyYW5zYWN0aW9uT3B0aW9ucy5zaWduaW5nU3RlcFxuICpcbiAqIFRPRE8gQlRDLTI3NjogVGhpcyBjYWNoZSBtYXkgbmVlZCB0byBiZSBkb25lIHdpdGggTFJVIGxpa2UgbWVtb3J5IHNhZmUgY2FjaGluZyBpZiBtZW1vcnkgaXNzdWVzIGNvbWVzIHVwLlxuICovXG5jb25zdCBQU0JUX0NBQ0hFID0gbmV3IE1hcDxzdHJpbmcsIHV0eG9saWIuYml0Z28uVXR4b1BzYnQ+KCk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudFV0eG9saWIoXG4gIGNvaW46IE11c2lnMlBhcnRpY2lwYW50PHV0eG9saWIuYml0Z28uVXR4b1BzYnQ+LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IEJJUDMySW50ZXJmYWNlIHwgdW5kZWZpbmVkLFxuICBwYXJhbXM6IHtcbiAgICBzaWduaW5nU3RlcDogJ3NpZ25lck5vbmNlJyB8ICdjb3NpZ25lck5vbmNlJyB8ICdzaWduZXJTaWduYXR1cmUnIHwgdW5kZWZpbmVkO1xuICAgIHdhbGxldElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbik6IFByb21pc2U8dXR4b2xpYi5iaXRnby5VdHhvUHNidD4ge1xuICBpZiAoYml0Z28uaXNUcmFuc2FjdGlvbldpdGhLZXlQYXRoU3BlbmRJbnB1dCh0eCkpIHtcbiAgICBzd2l0Y2ggKHBhcmFtcy5zaWduaW5nU3RlcCkge1xuICAgICAgY2FzZSAnc2lnbmVyTm9uY2UnOlxuICAgICAgICBhc3NlcnQoc2lnbmVyS2V5Y2hhaW4pO1xuICAgICAgICB0eC5zZXRBbGxJbnB1dHNNdXNpZzJOb25jZUhEKHNpZ25lcktleWNoYWluKTtcbiAgICAgICAgUFNCVF9DQUNIRS5zZXQodHguZ2V0VW5zaWduZWRUeCgpLmdldElkKCksIHR4KTtcbiAgICAgICAgcmV0dXJuIHR4O1xuICAgICAgY2FzZSAnY29zaWduZXJOb25jZSc6XG4gICAgICAgIGFzc2VydChwYXJhbXMud2FsbGV0SWQsICd3YWxsZXRJZCBpcyByZXF1aXJlZCBmb3IgTXVTaWcyIGJpdGdvIG5vbmNlJyk7XG4gICAgICAgIHJldHVybiBhd2FpdCBjb2luLmdldE11c2lnMk5vbmNlcyh0eCwgcGFyYW1zLndhbGxldElkKTtcbiAgICAgIGNhc2UgJ3NpZ25lclNpZ25hdHVyZSc6XG4gICAgICAgIGNvbnN0IHR4SWQgPSB0eC5nZXRVbnNpZ25lZFR4KCkuZ2V0SWQoKTtcbiAgICAgICAgY29uc3QgcHNidCA9IFBTQlRfQ0FDSEUuZ2V0KHR4SWQpO1xuICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgcHNidCxcbiAgICAgICAgICBgUHNidCBpcyBtaXNzaW5nIGZyb20gdHhDYWNoZSAoY2FjaGUgc2l6ZSAke1BTQlRfQ0FDSEUuc2l6ZX0pLlxuICAgICAgICAgICAgVGhpcyBtYXkgYmUgZHVlIHRvIHRoZSByZXF1ZXN0IGJlaW5nIHJvdXRlZCB0byBhIGRpZmZlcmVudCBCaXRHby1FeHByZXNzIGluc3RhbmNlIHRoYXQgZm9yIHNpZ25pbmcgc3RlcCAnc2lnbmVyTm9uY2UnLmBcbiAgICAgICAgKTtcbiAgICAgICAgUFNCVF9DQUNIRS5kZWxldGUodHhJZCk7XG4gICAgICAgIHR4ID0gcHNidC5jb21iaW5lKHR4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB0aGlzIGluc3RhbmNlIGlzIG5vdCBhbiBleHRlcm5hbCBzaWduZXJcbiAgICAgICAgYXNzZXJ0KHBhcmFtcy53YWxsZXRJZCwgJ3dhbGxldElkIGlzIHJlcXVpcmVkIGZvciBNdVNpZzIgYml0Z28gbm9uY2UnKTtcbiAgICAgICAgYXNzZXJ0KHNpZ25lcktleWNoYWluKTtcbiAgICAgICAgdHguc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChzaWduZXJLZXljaGFpbik7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29pbi5nZXRNdXNpZzJOb25jZXModHgsIHBhcmFtcy53YWxsZXRJZCk7XG4gICAgICAgIHR4ID0gdHguY29tYmluZShyZXNwb25zZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHBhcmFtcy5zaWduaW5nU3RlcCkge1xuICAgICAgY2FzZSAnc2lnbmVyTm9uY2UnOlxuICAgICAgY2FzZSAnY29zaWduZXJOb25jZSc6XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbiBjZXJ0YWluIGNhc2VzLCB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSBub3Qga25vdyB3aGV0aGVyIHRoZSB0eEhleCBjb250YWlucyBhIHBzYnQgd2l0aCB0YXByb290IGtleSBwYXRoIHNwZW5kIGlucHV0KHMpLlxuICAgICAgICAgKiBJbnN0ZWFkIG9mIHRocm93aW5nIGVycm9yLCBuby1vcCBhbmQgcmV0dXJuIHRoZSB0eEhleC4gU28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBzYW1lIHNlcXVlbmNlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHR4O1xuICAgIH1cbiAgfVxuXG4gIGFzc2VydChzaWduZXJLZXljaGFpbik7XG4gIHJldHVybiBzaWduQW5kVmVyaWZ5UHNidCh0eCwgc2lnbmVyS2V5Y2hhaW4pO1xufVxuIl19
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnRVdHhvbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25Qc2J0VXR4b2xpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQWN4Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUE0QixFQUM1QixjQUE4QjtJQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQy9CLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUMvQixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBRS9DLE1BQU0sVUFBVSxHQUFnQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDN0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUNqQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFD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QU0sQ0FBQztRQUNOLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssZUFBZTtnQkFDbEI7OzttQkFHRztnQkFDSCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8saUJBQWlCLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgZGVidWdMaWIgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgeyBJbnB1dFNpZ25pbmdFcnJvciwgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3IgfSBmcm9tICcuL1NpZ25pbmdFcnJvcic7XG5pbXBvcnQgeyBNdXNpZzJQYXJ0aWNpcGFudCB9IGZyb20gJy4vbXVzaWcyJztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6dXR4bycpO1xuXG5leHBvcnQgdHlwZSBQc2J0UGFyc2VkU2NyaXB0VHlwZSA9XG4gIHwgJ3Ayc2gnXG4gIHwgJ3Ayd3NoJ1xuICB8ICdwMnNoUDJ3c2gnXG4gIHwgJ3Ayc2hQMnBrJ1xuICB8ICd0YXByb290S2V5UGF0aFNwZW5kJ1xuICB8ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJ1xuICAvLyB3YXNtLXV0eG8gdHlwZXNcbiAgfCAncDJ0ckxlZ2FjeSdcbiAgfCAncDJ0ck11c2lnMlNjcmlwdFBhdGgnXG4gIHwgJ3AydHJNdXNpZzJLZXlQYXRoJztcblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSBwc2J0IGFuZCB2ZXJpZnkgc2lnbmF0dXJlcyBhZnRlciBzaWduaW5nLlxuICogQ29sbGVjdHMgYW5kIGxvZ3Mgc2lnbmluZyBlcnJvcnMgYW5kIHZlcmlmaWNhdGlvbiBlcnJvcnMsIHRocm93cyBlcnJvciBpbiB0aGUgZW5kIGlmIGFueSBvZiB0aGVtXG4gKiBmYWlsZWQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBtaXJyb3JzIHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbiwgYnV0IGlzIHVzZWQgZm9yIHNpZ25pbmcgUFNCVHMgaW5zdGVhZCBvZlxuICogdXNpbmcgVHJhbnNhY3Rpb25CdWlsZGVyXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEBwYXJhbSBzaWduZXJLZXljaGFpblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVBzYnQoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGNvbnN0IHR4SW5wdXRzID0gcHNidC50eElucHV0cztcbiAgY29uc3Qgb3V0cHV0SWRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzY3JpcHRUeXBlczogUHNidFBhcnNlZFNjcmlwdFR5cGVbXSA9IFtdO1xuXG4gIGNvbnN0IHNpZ25FcnJvcnM6IElucHV0U2lnbmluZ0Vycm9yPGJpZ2ludD5bXSA9IHBzYnQuZGF0YS5pbnB1dHNcbiAgICAubWFwKChpbnB1dCwgaW5wdXRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXRJZCA9IHV0eG9saWIuYml0Z28uZm9ybWF0T3V0cHV0SWQodXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHR4SW5wdXRzW2lucHV0SW5kZXhdKSk7XG4gICAgICBvdXRwdXRJZHMucHVzaChvdXRwdXRJZCk7XG5cbiAgICAgIGNvbnN0IHsgc2NyaXB0VHlwZSB9ID0gdXR4b2xpYi5iaXRnby5wYXJzZVBzYnRJbnB1dChpbnB1dCk7XG4gICAgICBzY3JpcHRUeXBlcy5wdXNoKHNjcmlwdFR5cGUpO1xuXG4gICAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgICBkZWJ1ZygnU2tpcHBpbmcgc2lnbmF0dXJlIGZvciBpbnB1dCAlZCBvZiAlZCAoUlAgaW5wdXQ/KScsIGlucHV0SW5kZXggKyAxLCBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcHNidC5zaWduSW5wdXRIRChpbnB1dEluZGV4LCBzaWduZXJLZXljaGFpbik7XG4gICAgICAgIGRlYnVnKCdTdWNjZXNzZnVsbHkgc2lnbmVkIGlucHV0ICVkIG9mICVkJywgaW5wdXRJbmRleCArIDEsIHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxiaWdpbnQ+KGlucHV0SW5kZXgsIHNjcmlwdFR5cGUsIHsgaWQ6IG91dHB1dElkIH0sIGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcigoZSk6IGUgaXMgSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PiA9PiBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHZlcmlmeUVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PltdID0gcHNidC5kYXRhLmlucHV0c1xuICAgIC5tYXAoKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZXNbaW5wdXRJbmRleF07XG4gICAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICAnU2tpcHBpbmcgaW5wdXQgc2lnbmF0dXJlICVkIG9mICVkICh1bnNwZW50IGZyb20gcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzcyB3aGljaCBpcyBwbGF0Zm9ybSBzaWduZWQgb25seSknLFxuICAgICAgICAgIGlucHV0SW5kZXggKyAxLFxuICAgICAgICAgIHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3V0cHV0SWQgPSBvdXRwdXRJZHNbaW5wdXRJbmRleF07XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIXBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dEhEKGlucHV0SW5kZXgsIHNpZ25lcktleWNoYWluKSkge1xuICAgICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3IoaW5wdXRJbmRleCwgc2NyaXB0VHlwZSwgeyBpZDogb3V0cHV0SWQgfSwgbmV3IEVycm9yKGBpbnZhbGlkIHNpZ25hdHVyZWApKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZygnSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxiaWdpbnQ+KGlucHV0SW5kZXgsIHNjcmlwdFR5cGUsIHsgaWQ6IG91dHB1dElkIH0sIGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcigoZSk6IGUgaXMgSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PiA9PiBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGlmIChzaWduRXJyb3JzLmxlbmd0aCB8fCB2ZXJpZnlFcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFRyYW5zYWN0aW9uU2lnbmluZ0Vycm9yKHNpZ25FcnJvcnMsIHZlcmlmeUVycm9ycyk7XG4gIH1cblxuICByZXR1cm4gcHNidDtcbn1cblxuLyoqXG4gKiBLZXkgVmFsdWU6IFVuc2lnbmVkIHR4IGlkID0+IFBTQlRcbiAqIEl0IGlzIHVzZWQgdG8gY2FjaGUgUFNCVHMgd2l0aCB0YXByb290IGtleSBwYXRoIChNdVNpZzIpIGlucHV0cyBkdXJpbmcgZXh0ZXJuYWwgZXhwcmVzcyBzaWduZXIgaXMgYWN0aXZhdGVkLlxuICogUmVhc29uOiBNdVNpZzIgc2lnbmVyIHNlY3VyZSBub25jZSBpcyBjYWNoZWQgaW4gdGhlIFV0eG9Qc2J0IG9iamVjdC4gSXQgd2lsbCBiZSByZXF1aXJlZCBkdXJpbmcgdGhlIHNpZ25pbmcgc3RlcC5cbiAqIEZvciBtb3JlIGluZm8sIGNoZWNrIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMuc2lnbmluZ1N0ZXBcbiAqXG4gKiBUT0RPIEJUQy0yNzY6IFRoaXMgY2FjaGUgbWF5IG5lZWQgdG8gYmUgZG9uZSB3aXRoIExSVSBsaWtlIG1lbW9yeSBzYWZlIGNhY2hpbmcgaWYgbWVtb3J5IGlzc3VlcyBjb21lcyB1cC5cbiAqL1xuY29uc3QgUFNCVF9DQUNIRSA9IG5ldyBNYXA8c3RyaW5nLCB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0PigpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRVdHhvbGliKFxuICBjb2luOiBNdXNpZzJQYXJ0aWNpcGFudDx1dHhvbGliLmJpdGdvLlV0eG9Qc2J0PixcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSB8IHVuZGVmaW5lZCxcbiAgcGFyYW1zOiB7XG4gICAgc2lnbmluZ1N0ZXA6ICdzaWduZXJOb25jZScgfCAnY29zaWduZXJOb25jZScgfCAnc2lnbmVyU2lnbmF0dXJlJyB8IHVuZGVmaW5lZDtcbiAgICB3YWxsZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4pOiBQcm9taXNlPHV0eG9saWIuYml0Z28uVXR4b1BzYnQ+IHtcbiAgaWYgKGJpdGdvLmlzVHJhbnNhY3Rpb25XaXRoS2V5UGF0aFNwZW5kSW5wdXQodHgpKSB7XG4gICAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICAgICAgYXNzZXJ0KHNpZ25lcktleWNoYWluKTtcbiAgICAgICAgdHguc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChzaWduZXJLZXljaGFpbik7XG4gICAgICAgIFBTQlRfQ0FDSEUuc2V0KHR4LmdldFVuc2lnbmVkVHgoKS5nZXRJZCgpLCB0eCk7XG4gICAgICAgIHJldHVybiB0eDtcbiAgICAgIGNhc2UgJ2Nvc2lnbmVyTm9uY2UnOlxuICAgICAgICBhc3NlcnQocGFyYW1zLndhbGxldElkLCAnd2FsbGV0SWQgaXMgcmVxdWlyZWQgZm9yIE11U2lnMiBiaXRnbyBub25jZScpO1xuICAgICAgICByZXR1cm4gYXdhaXQgY29pbi5nZXRNdXNpZzJOb25jZXModHgsIHBhcmFtcy53YWxsZXRJZCk7XG4gICAgICBjYXNlICdzaWduZXJTaWduYXR1cmUnOlxuICAgICAgICBjb25zdCB0eElkID0gdHguZ2V0VW5zaWduZWRUeCgpLmdldElkKCk7XG4gICAgICAgIGNvbnN0IHBzYnQgPSBQU0JUX0NBQ0hFLmdldCh0eElkKTtcbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIHBzYnQsXG4gICAgICAgICAgYFBzYnQgaXMgbWlzc2luZyBmcm9tIHR4Q2FjaGUgKGNhY2hlIHNpemUgJHtQU0JUX0NBQ0hFLnNpemV9KS5cbiAgICAgICAgICAgIFRoaXMgbWF5IGJlIGR1ZSB0byB0aGUgcmVxdWVzdCBiZWluZyByb3V0ZWQgdG8gYSBkaWZmZXJlbnQgQml0R28tRXhwcmVzcyBpbnN0YW5jZSB0aGF0IGZvciBzaWduaW5nIHN0ZXAgJ3NpZ25lck5vbmNlJy5gXG4gICAgICAgICk7XG4gICAgICAgIFBTQlRfQ0FDSEUuZGVsZXRlKHR4SWQpO1xuICAgICAgICB0eCA9IHBzYnQuY29tYmluZSh0eCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gdGhpcyBpbnN0YW5jZSBpcyBub3QgYW4gZXh0ZXJuYWwgc2lnbmVyXG4gICAgICAgIGFzc2VydChwYXJhbXMud2FsbGV0SWQsICd3YWxsZXRJZCBpcyByZXF1aXJlZCBmb3IgTXVTaWcyIGJpdGdvIG5vbmNlJyk7XG4gICAgICAgIGFzc2VydChzaWduZXJLZXljaGFpbik7XG4gICAgICAgIHR4LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQoc2lnbmVyS2V5Y2hhaW4pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvaW4uZ2V0TXVzaWcyTm9uY2VzKHR4LCBwYXJhbXMud2FsbGV0SWQpO1xuICAgICAgICB0eCA9IHR4LmNvbWJpbmUocmVzcG9uc2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICAgIGNhc2UgJ2Nvc2lnbmVyTm9uY2UnOlxuICAgICAgICAvKipcbiAgICAgICAgICogSW4gY2VydGFpbiBjYXNlcywgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgbm90IGtub3cgd2hldGhlciB0aGUgdHhIZXggY29udGFpbnMgYSBwc2J0IHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzcGVuZCBpbnB1dChzKS5cbiAgICAgICAgICogSW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvciwgbm8tb3AgYW5kIHJldHVybiB0aGUgdHhIZXguIFNvIHRoYXQgdGhlIGNhbGxlciBjYW4gY2FsbCB0aGlzIG1ldGhvZCBpbiB0aGUgc2FtZSBzZXF1ZW5jZS5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiB0eDtcbiAgICB9XG4gIH1cblxuICBhc3NlcnQoc2lnbmVyS2V5Y2hhaW4pO1xuICByZXR1cm4gc2lnbkFuZFZlcmlmeVBzYnQodHgsIHNpZ25lcktleWNoYWluKTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BIP32Interface } from '@bitgo/utxo-lib';
|
|
2
|
-
import { ECPair, fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
2
|
+
import { BIP32, ECPair, fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
3
3
|
import { Musig2Participant } from './musig2';
|
|
4
4
|
export type ReplayProtectionKeys = {
|
|
5
5
|
publicKeys: (Uint8Array | ECPair)[];
|
|
@@ -9,7 +9,7 @@ export type ReplayProtectionKeys = {
|
|
|
9
9
|
* Uses bulk signing for performance (signs all matching inputs in one pass).
|
|
10
10
|
* Collects and logs signing errors and verification errors, throws error in the end if any of them failed.
|
|
11
11
|
*/
|
|
12
|
-
export declare function signAndVerifyPsbtWasm(tx: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): fixedScriptWallet.BitGoPsbt;
|
|
12
|
+
export declare function signAndVerifyPsbtWasm(tx: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface | BIP32, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): fixedScriptWallet.BitGoPsbt;
|
|
13
13
|
export declare function signPsbtWithMusig2ParticipantWasm(coin: Musig2Participant<fixedScriptWallet.BitGoPsbt>, tx: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface | undefined, rootWalletKeys: fixedScriptWallet.RootWalletKeys, params: {
|
|
14
14
|
replayProtection: ReplayProtectionKeys;
|
|
15
15
|
signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signPsbtWasm.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signPsbtWasm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"signPsbtWasm.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signPsbtWasm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;CACrC,CAAC;AAmBF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAC/B,cAAc,EAAE,cAAc,GAAG,KAAK,EACtC,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,GACrC,iBAAiB,CAAC,SAAS,CAqC7B;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACpD,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAC/B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,MAAM,EAAE;IACN,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GACA,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAiDtC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from 'assert';
|
|
2
|
-
import {
|
|
2
|
+
import { toWasmBIP32 } from '../../wasmUtil';
|
|
3
3
|
import { BulkSigningError, InputSigningError, TransactionSigningError } from './SigningError';
|
|
4
4
|
/**
|
|
5
5
|
* Key Value: Unsigned tx id => PSBT
|
|
@@ -49,10 +49,6 @@ export function signAndVerifyPsbtWasm(tx, signerKeychain, rootWalletKeys, replay
|
|
|
49
49
|
}
|
|
50
50
|
return tx;
|
|
51
51
|
}
|
|
52
|
-
function toWasmBIP32(key) {
|
|
53
|
-
// Convert using base58 string to ensure private key is properly transferred
|
|
54
|
-
return BIP32.fromBase58(key.toBase58());
|
|
55
|
-
}
|
|
56
52
|
export async function signPsbtWithMusig2ParticipantWasm(coin, tx, signerKeychain, rootWalletKeys, params) {
|
|
57
53
|
const wasmSigner = signerKeychain ? toWasmBIP32(signerKeychain) : undefined;
|
|
58
54
|
if (hasKeyPathSpendInput(tx, rootWalletKeys, params.replayProtection)) {
|
|
@@ -99,4 +95,4 @@ export async function signPsbtWithMusig2ParticipantWasm(coin, tx, signerKeychain
|
|
|
99
95
|
assert(signerKeychain);
|
|
100
96
|
return signAndVerifyPsbtWasm(tx, signerKeychain, rootWalletKeys, params.replayProtection);
|
|
101
97
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnRXYXNtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25Qc2J0V2FzbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLEtBQUssRUFBNkIsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU85Rjs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUF1QyxDQUFDO0FBRXZFLFNBQVMsb0JBQW9CLENBQzNCLEVBQStCLEVBQy9CLGNBQWdELEVBQ2hELGdCQUFzQztJQUV0QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbkYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxFQUErQixFQUMvQixjQUE4QixFQUM5QixjQUFnRCxFQUNoRCxnQkFBc0M7SUFFdEMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRS9DLG9GQUFvRjtJQUNwRixJQUFJLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx5RkFBeUY7SUFDekYsTUFBTSxNQUFN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QztnQkFDRixlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixVQUFVLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25DLEVBQUUsR0FBRyxVQUFVLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixDQUFDO1lBQ0Q7Z0JBQ0UsMENBQTBDO2dCQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakMsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssZUFBZTtnQkFDbEI7OzttQkFHRztnQkFDSCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8scUJBQXFCLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgQklQMzIsIEVDUGFpciwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgQnVsa1NpZ25pbmdFcnJvciwgSW5wdXRTaWduaW5nRXJyb3IsIFRyYW5zYWN0aW9uU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi9TaWduaW5nRXJyb3InO1xuaW1wb3J0IHsgTXVzaWcyUGFydGljaXBhbnQgfSBmcm9tICcuL211c2lnMic7XG5cbmV4cG9ydCB0eXBlIFJlcGxheVByb3RlY3Rpb25LZXlzID0ge1xuICBwdWJsaWNLZXlzOiAoVWludDhBcnJheSB8IEVDUGFpcilbXTtcbn07XG5cbi8qKlxuICogS2V5IFZhbHVlOiBVbnNpZ25lZCB0eCBpZCA9PiBQU0JUXG4gKiBJdCBpcyB1c2VkIHRvIGNhY2hlIFBTQlRzIHdpdGggdGFwcm9vdCBrZXkgcGF0aCAoTXVTaWcyKSBpbnB1dHMgZHVyaW5nIGV4dGVybmFsIGV4cHJlc3Mgc2lnbmVyIGlzIGFjdGl2YXRlZC5cbiAqIFJlYXNvbjogTXVTaWcyIHNpZ25lciBzZWN1cmUgbm9uY2UgaXMgY2FjaGVkIGluIHRoZSBCaXRHb1BzYnQgb2JqZWN0LiBJdCB3aWxsIGJlIHJlcXVpcmVkIGR1cmluZyB0aGUgc2lnbmluZyBzdGVwLlxuICogRm9yIG1vcmUgaW5mbywgY2hlY2sgU2lnblRyYW5zYWN0aW9uT3B0aW9ucy5zaWduaW5nU3RlcFxuICovXG5jb25zdCBQU0JUX0NBQ0hFX1dBU00gPSBuZXcgTWFwPHN0cmluZywgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PigpO1xuXG5mdW5jdGlvbiBoYXNLZXlQYXRoU3BlbmRJbnB1dChcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICByZXBsYXlQcm90ZWN0aW9uOiBSZXBsYXlQcm90ZWN0aW9uS2V5c1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcnNlZCA9IHR4LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyhyb290V2FsbGV0S2V5cywgcmVwbGF5UHJvdGVjdGlvbik7XG4gIHJldHVybiBwYXJzZWQuaW5wdXRzLnNvbWUoKGlucHV0KSA9PiBpbnB1dC5zY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMktleVBhdGgnKTtcbn1cblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSBQU0JUIGFuZCB2ZXJpZnkgc2lnbmF0dXJlcyBhZnRlciBzaWduaW5nLlxuICogVXNlcyBidWxrIHNpZ25pbmcgZm9yIHBlcmZvcm1hbmNlIChzaWducyBhbGwgbWF0Y2hpbmcgaW5wdXRzIGluIG9uZSBwYXNzKS5cbiAqIENvbGxlY3RzIGFuZCBsb2dzIHNpZ25pbmcgZXJyb3JzIGFuZCB2ZXJpZmljYXRpb24gZXJyb3JzLCB0aHJvd3MgZXJyb3IgaW4gdGhlIGVuZCBpZiBhbnkgb2YgdGhlbSBmYWlsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQW5kVmVyaWZ5UHNidFdhc20oXG4gIHR4OiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSxcbiAgcm9vdFdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICByZXBsYXlQcm90ZWN0aW9uOiBSZXBsYXlQcm90ZWN0aW9uS2V5c1xuKTogZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0IHtcbiAgY29uc3Qgd2FzbVNpZ25lciA9IHRvV2FzbUJJUDMyKHNpZ25lcktleWNoYWluKTtcblxuICAvLyBCdWxrIHNpZ24gYWxsIHdhbGxldCBpbnB1dHMgKEVDRFNBICsgTXVTaWcyKSAtIG11Y2ggZmFzdGVyIHRoYW4gcGVyLWlucHV0IHNpZ25pbmdcbiAgdHJ5IHtcbiAgICB0eC5zaWduKHdhc21TaWduZXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEJ1bGtTaWduaW5nRXJyb3IoZSk7XG4gIH1cblxuICAvLyBWZXJpZnkgc2lnbmF0dXJlcyBmb3IgYWxsIHNpZ25lZCBpbnB1dHMgKHN0aWxsIHBlci1pbnB1dCBmb3IgZ3JhbnVsYXIgZXJyb3IgcmVwb3J0aW5nKVxuICBjb25zdCBwYXJzZWQgPSB0eC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMocm9vdFdhbGxldEtleXMsIHJlcGxheVByb3RlY3Rpb24pO1xuICBjb25zdCB2ZXJpZnlFcnJvcnM6IElucHV0U2lnbmluZ0Vycm9yPGJpZ2ludD5bXSA9IFtdO1xuXG4gIHBhcnNlZC5pbnB1dHMuZm9yRWFjaCgoaW5wdXQsIGlucHV0SW5kZXgpID0+IHtcbiAgICBpZiAoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgLy8gU2tpcCByZXBsYXkgcHJvdGVjdGlvbiBpbnB1dHMgLSB0aGV5IGFyZSBwbGF0Zm9ybSBzaWduZWQgb25seVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dElkID0gYCR7aW5wdXQucHJldmlvdXNPdXRwdXQudHhpZH06JHtpbnB1dC5wcmV2aW91c091dHB1dC52b3V0fWA7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdHgudmVyaWZ5U2lnbmF0dXJlKGlucHV0SW5kZXgsIHdhc21TaWduZXIpKSB7XG4gICAgICAgIHZlcmlmeUVycm9ycy5wdXNoKFxuICAgICAgICAgIG5ldyBJbnB1dFNpZ25pbmdFcnJvcihpbnB1dEluZGV4LCBpbnB1dC5zY3JpcHRUeXBlLCB7IGlkOiBvdXRwdXRJZCB9LCBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnbmF0dXJlJykpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmVyaWZ5RXJyb3JzLnB1c2gobmV3IElucHV0U2lnbmluZ0Vycm9yPGJpZ2ludD4oaW5wdXRJbmRleCwgaW5wdXQuc2NyaXB0VHlwZSwgeyBpZDogb3V0cHV0SWQgfSwgZSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHZlcmlmeUVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3IoW10sIHZlcmlmeUVycm9ycyk7XG4gIH1cblxuICByZXR1cm4gdHg7XG59XG5cbmZ1bmN0aW9uIHRvV2FzbUJJUDMyKGtleTogQklQMzJJbnRlcmZhY2UpOiBCSVAzMiB7XG4gIC8vIENvbnZlcnQgdXNpbmcgYmFzZTU4IHN0cmluZyB0byBlbnN1cmUgcHJpdmF0ZSBrZXkgaXMgcHJvcGVybHkgdHJhbnNmZXJyZWRcbiAgcmV0dXJuIEJJUDMyLmZyb21CYXNlNTgoa2V5LnRvQmFzZTU4KCkpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtKFxuICBjb2luOiBNdXNpZzJQYXJ0aWNpcGFudDxmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQ+LFxuICB0eDogZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQsXG4gIHJvb3RXYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyxcbiAgcGFyYW1zOiB7XG4gICAgcmVwbGF5UHJvdGVjdGlvbjogUmVwbGF5UHJvdGVjdGlvbktleXM7XG4gICAgc2lnbmluZ1N0ZXA6ICdzaWduZXJOb25jZScgfCAnY29zaWduZXJOb25jZScgfCAnc2lnbmVyU2lnbmF0dXJlJyB8IHVuZGVmaW5lZDtcbiAgICB3YWxsZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4pOiBQcm9taXNlPGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidD4ge1xuICBjb25zdCB3YXNtU2lnbmVyID0gc2lnbmVyS2V5Y2hhaW4gPyB0b1dhc21CSVAzMihzaWduZXJLZXljaGFpbikgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGhhc0tleVBhdGhTcGVuZElucHV0KHR4LCByb290V2FsbGV0S2V5cywgcGFyYW1zLnJlcGxheVByb3RlY3Rpb24pKSB7XG4gICAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICAgICAgYXNzZXJ0KHdhc21TaWduZXIpO1xuICAgICAgICB0eC5nZW5lcmF0ZU11c2lnMk5vbmNlcyh3YXNtU2lnbmVyKTtcbiAgICAgICAgUFNCVF9DQUNIRV9XQVNNLnNldCh0eC51bnNpZ25lZFR4aWQoKSwgdHgpO1xuICAgICAgICByZXR1cm4gdHg7XG4gICAgICBjYXNlICdjb3NpZ25lck5vbmNlJzpcbiAgICAgICAgYXNzZXJ0KHBhcmFtcy53YWxsZXRJZCwgJ3dhbGxldElkIGlzIHJlcXVpcmVkIGZvciBNdVNpZzIgYml0Z28gbm9uY2UnKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNvaW4uZ2V0TXVzaWcyTm9uY2VzKHR4LCBwYXJhbXMud2FsbGV0SWQpO1xuICAgICAgY2FzZSAnc2lnbmVyU2lnbmF0dXJlJzoge1xuICAgICAgICBjb25zdCB0eElkID0gdHgudW5zaWduZWRUeGlkKCk7XG4gICAgICAgIGNvbnN0IGNhY2hlZFBzYnQgPSBQU0JUX0NBQ0hFX1dBU00uZ2V0KHR4SWQpO1xuICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgY2FjaGVkUHNidCxcbiAgICAgICAgICBgUHNidCBpcyBtaXNzaW5nIGZyb20gdHhDYWNoZSAoY2FjaGUgc2l6ZSAke1BTQlRfQ0FDSEVfV0FTTS5zaXplfSkuXG4gICAgICAgICAgICBUaGlzIG1heSBiZSBkdWUgdG8gdGhlIHJlcXVlc3QgYmVpbmcgcm91dGVkIHRvIGEgZGlmZmVyZW50IEJpdEdvLUV4cHJlc3MgaW5zdGFuY2UgdGhhdCBmb3Igc2lnbmluZyBzdGVwICdzaWduZXJOb25jZScuYFxuICAgICAgICApO1xuICAgICAgICBQU0JUX0NBQ0hFX1dBU00uZGVsZXRlKHR4SWQpO1xuICAgICAgICBjYWNoZWRQc2J0LmNvbWJpbmVNdXNpZzJOb25jZXModHgpO1xuICAgICAgICB0eCA9IGNhY2hlZFBzYnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gdGhpcyBpbnN0YW5jZSBpcyBub3QgYW4gZXh0ZXJuYWwgc2lnbmVyXG4gICAgICAgIGFzc2VydChwYXJhbXMud2FsbGV0SWQsICd3YWxsZXRJZCBpcyByZXF1aXJlZCBmb3IgTXVTaWcyIGJpdGdvIG5vbmNlJyk7XG4gICAgICAgIGFzc2VydCh3YXNtU2lnbmVyKTtcbiAgICAgICAgdHguZ2VuZXJhdGVNdXNpZzJOb25jZXMod2FzbVNpZ25lcik7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29pbi5nZXRNdXNpZzJOb25jZXModHgsIHBhcmFtcy53YWxsZXRJZCk7XG4gICAgICAgIHR4LmNvbWJpbmVNdXNpZzJOb25jZXMocmVzcG9uc2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICAgIGNhc2UgJ2Nvc2lnbmVyTm9uY2UnOlxuICAgICAgICAvKipcbiAgICAgICAgICogSW4gY2VydGFpbiBjYXNlcywgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgbm90IGtub3cgd2hldGhlciB0aGUgdHhIZXggY29udGFpbnMgYSBwc2J0IHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzcGVuZCBpbnB1dChzKS5cbiAgICAgICAgICogSW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvciwgbm8tb3AgYW5kIHJldHVybiB0aGUgdHhIZXguIFNvIHRoYXQgdGhlIGNhbGxlciBjYW4gY2FsbCB0aGlzIG1ldGhvZCBpbiB0aGUgc2FtZSBzZXF1ZW5jZS5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiB0eDtcbiAgICB9XG4gIH1cblxuICBhc3NlcnQoc2lnbmVyS2V5Y2hhaW4pO1xuICByZXR1cm4gc2lnbkFuZFZlcmlmeVBzYnRXYXNtKHR4LCBzaWduZXJLZXljaGFpbiwgcm9vdFdhbGxldEtleXMsIHBhcmFtcy5yZXBsYXlQcm90ZWN0aW9uKTtcbn1cbiJdfQ==
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnRXYXNtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25Qc2J0V2FzbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFLNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzlGOzs7OztHQUtHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7QUFFdkUsU0FBUyxvQkFBb0IsQ0FDM0IsRUFBK0IsRUFDL0IsY0FBZ0QsRUFDaEQsZ0JBQXNDO0lBRXRDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEVBQStCLEVBQy9CLGNBQXNDLEVBQ3RDLGNBQWdELEVBQ2hELGdCQUFzQztJQUV0QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFL0Msb0ZBQW9GO0lBQ3BGLElBQUksQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHlGQUF5RjtJQUN6RixNQUFNLE1BQU0s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QztnQkFDaEIsTUFBTTtZQUNSLENBQUM7WUFDRDtnQkFDRSwwQ0FBMEM7Z0JBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLDZDQUE2QyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsS0FBSyxhQUFhLENBQUM7WUFDbkIsS0FBSyxlQUFlO2dCQUNsQjs7O21CQUdHO2dCQUNILE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkIsT0FBTyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM1RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMiwgRUNQYWlyLCBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyB0b1dhc21CSVAzMiB9IGZyb20gJy4uLy4uL3dhc21VdGlsJztcblxuaW1wb3J0IHsgQnVsa1NpZ25pbmdFcnJvciwgSW5wdXRTaWduaW5nRXJyb3IsIFRyYW5zYWN0aW9uU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi9TaWduaW5nRXJyb3InO1xuaW1wb3J0IHsgTXVzaWcyUGFydGljaXBhbnQgfSBmcm9tICcuL211c2lnMic7XG5cbmV4cG9ydCB0eXBlIFJlcGxheVByb3RlY3Rpb25LZXlzID0ge1xuICBwdWJsaWNLZXlzOiAoVWludDhBcnJheSB8IEVDUGFpcilbXTtcbn07XG5cbi8qKlxuICogS2V5IFZhbHVlOiBVbnNpZ25lZCB0eCBpZCA9PiBQU0JUXG4gKiBJdCBpcyB1c2VkIHRvIGNhY2hlIFBTQlRzIHdpdGggdGFwcm9vdCBrZXkgcGF0aCAoTXVTaWcyKSBpbnB1dHMgZHVyaW5nIGV4dGVybmFsIGV4cHJlc3Mgc2lnbmVyIGlzIGFjdGl2YXRlZC5cbiAqIFJlYXNvbjogTXVTaWcyIHNpZ25lciBzZWN1cmUgbm9uY2UgaXMgY2FjaGVkIGluIHRoZSBCaXRHb1BzYnQgb2JqZWN0LiBJdCB3aWxsIGJlIHJlcXVpcmVkIGR1cmluZyB0aGUgc2lnbmluZyBzdGVwLlxuICogRm9yIG1vcmUgaW5mbywgY2hlY2sgU2lnblRyYW5zYWN0aW9uT3B0aW9ucy5zaWduaW5nU3RlcFxuICovXG5jb25zdCBQU0JUX0NBQ0hFX1dBU00gPSBuZXcgTWFwPHN0cmluZywgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PigpO1xuXG5mdW5jdGlvbiBoYXNLZXlQYXRoU3BlbmRJbnB1dChcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICByZXBsYXlQcm90ZWN0aW9uOiBSZXBsYXlQcm90ZWN0aW9uS2V5c1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcnNlZCA9IHR4LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyhyb290V2FsbGV0S2V5cywgcmVwbGF5UHJvdGVjdGlvbik7XG4gIHJldHVybiBwYXJzZWQuaW5wdXRzLnNvbWUoKGlucHV0KSA9PiBpbnB1dC5zY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMktleVBhdGgnKTtcbn1cblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSBQU0JUIGFuZCB2ZXJpZnkgc2lnbmF0dXJlcyBhZnRlciBzaWduaW5nLlxuICogVXNlcyBidWxrIHNpZ25pbmcgZm9yIHBlcmZvcm1hbmNlIChzaWducyBhbGwgbWF0Y2hpbmcgaW5wdXRzIGluIG9uZSBwYXNzKS5cbiAqIENvbGxlY3RzIGFuZCBsb2dzIHNpZ25pbmcgZXJyb3JzIGFuZCB2ZXJpZmljYXRpb24gZXJyb3JzLCB0aHJvd3MgZXJyb3IgaW4gdGhlIGVuZCBpZiBhbnkgb2YgdGhlbSBmYWlsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQW5kVmVyaWZ5UHNidFdhc20oXG4gIHR4OiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSB8IEJJUDMyLFxuICByb290V2FsbGV0S2V5czogZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMsXG4gIHJlcGxheVByb3RlY3Rpb246IFJlcGxheVByb3RlY3Rpb25LZXlzXG4pOiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQge1xuICBjb25zdCB3YXNtU2lnbmVyID0gdG9XYXNtQklQMzIoc2lnbmVyS2V5Y2hhaW4pO1xuXG4gIC8vIEJ1bGsgc2lnbiBhbGwgd2FsbGV0IGlucHV0cyAoRUNEU0EgKyBNdVNpZzIpIC0gbXVjaCBmYXN0ZXIgdGhhbiBwZXItaW5wdXQgc2lnbmluZ1xuICB0cnkge1xuICAgIHR4LnNpZ24od2FzbVNpZ25lcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgQnVsa1NpZ25pbmdFcnJvcihlKTtcbiAgfVxuXG4gIC8vIFZlcmlmeSBzaWduYXR1cmVzIGZvciBhbGwgc2lnbmVkIGlucHV0cyAoc3RpbGwgcGVyLWlucHV0IGZvciBncmFudWxhciBlcnJvciByZXBvcnRpbmcpXG4gIGNvbnN0IHBhcnNlZCA9IHR4LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyhyb290V2FsbGV0S2V5cywgcmVwbGF5UHJvdGVjdGlvbik7XG4gIGNvbnN0IHZlcmlmeUVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PltdID0gW107XG5cbiAgcGFyc2VkLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgIGlmIChpbnB1dC5zY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgICAvLyBTa2lwIHJlcGxheSBwcm90ZWN0aW9uIGlucHV0cyAtIHRoZXkgYXJlIHBsYXRmb3JtIHNpZ25lZCBvbmx5XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0SWQgPSBgJHtpbnB1dC5wcmV2aW91c091dHB1dC50eGlkfToke2lucHV0LnByZXZpb3VzT3V0cHV0LnZvdXR9YDtcbiAgICB0cnkge1xuICAgICAgaWYgKCF0eC52ZXJpZnlTaWduYXR1cmUoaW5wdXRJbmRleCwgd2FzbVNpZ25lcikpIHtcbiAgICAgICAgdmVyaWZ5RXJyb3JzLnB1c2goXG4gICAgICAgICAgbmV3IElucHV0U2lnbmluZ0Vycm9yKGlucHV0SW5kZXgsIGlucHV0LnNjcmlwdFR5cGUsIHsgaWQ6IG91dHB1dElkIH0sIG5ldyBFcnJvcignaW52YWxpZCBzaWduYXR1cmUnKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB2ZXJpZnlFcnJvcnMucHVzaChuZXcgSW5wdXRTaWduaW5nRXJyb3I8YmlnaW50PihpbnB1dEluZGV4LCBpbnB1dC5zY3JpcHRUeXBlLCB7IGlkOiBvdXRwdXRJZCB9LCBlKSk7XG4gICAgfVxuICB9KTtcblxuICBpZiAodmVyaWZ5RXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUcmFuc2FjdGlvblNpZ25pbmdFcnJvcihbXSwgdmVyaWZ5RXJyb3JzKTtcbiAgfVxuXG4gIHJldHVybiB0eDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50V2FzbShcbiAgY29pbjogTXVzaWcyUGFydGljaXBhbnQ8Zml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PixcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IEJJUDMySW50ZXJmYWNlIHwgdW5kZWZpbmVkLFxuICByb290V2FsbGV0S2V5czogZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMsXG4gIHBhcmFtczoge1xuICAgIHJlcGxheVByb3RlY3Rpb246IFJlcGxheVByb3RlY3Rpb25LZXlzO1xuICAgIHNpZ25pbmdTdGVwOiAnc2lnbmVyTm9uY2UnIHwgJ2Nvc2lnbmVyTm9uY2UnIHwgJ3NpZ25lclNpZ25hdHVyZScgfCB1bmRlZmluZWQ7XG4gICAgd2FsbGV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxuKTogUHJvbWlzZTxmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQ+IHtcbiAgY29uc3Qgd2FzbVNpZ25lciA9IHNpZ25lcktleWNoYWluID8gdG9XYXNtQklQMzIoc2lnbmVyS2V5Y2hhaW4pIDogdW5kZWZpbmVkO1xuXG4gIGlmIChoYXNLZXlQYXRoU3BlbmRJbnB1dCh0eCwgcm9vdFdhbGxldEtleXMsIHBhcmFtcy5yZXBsYXlQcm90ZWN0aW9uKSkge1xuICAgIHN3aXRjaCAocGFyYW1zLnNpZ25pbmdTdGVwKSB7XG4gICAgICBjYXNlICdzaWduZXJOb25jZSc6XG4gICAgICAgIGFzc2VydCh3YXNtU2lnbmVyKTtcbiAgICAgICAgdHguZ2VuZXJhdGVNdXNpZzJOb25jZXMod2FzbVNpZ25lcik7XG4gICAgICAgIFBTQlRfQ0FDSEVfV0FTTS5zZXQodHgudW5zaWduZWRUeGlkKCksIHR4KTtcbiAgICAgICAgcmV0dXJuIHR4O1xuICAgICAgY2FzZSAnY29zaWduZXJOb25jZSc6XG4gICAgICAgIGFzc2VydChwYXJhbXMud2FsbGV0SWQsICd3YWxsZXRJZCBpcyByZXF1aXJlZCBmb3IgTXVTaWcyIGJpdGdvIG5vbmNlJyk7XG4gICAgICAgIHJldHVybiBhd2FpdCBjb2luLmdldE11c2lnMk5vbmNlcyh0eCwgcGFyYW1zLndhbGxldElkKTtcbiAgICAgIGNhc2UgJ3NpZ25lclNpZ25hdHVyZSc6IHtcbiAgICAgICAgY29uc3QgdHhJZCA9IHR4LnVuc2lnbmVkVHhpZCgpO1xuICAgICAgICBjb25zdCBjYWNoZWRQc2J0ID0gUFNCVF9DQUNIRV9XQVNNLmdldCh0eElkKTtcbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIGNhY2hlZFBzYnQsXG4gICAgICAgICAgYFBzYnQgaXMgbWlzc2luZyBmcm9tIHR4Q2FjaGUgKGNhY2hlIHNpemUgJHtQU0JUX0NBQ0hFX1dBU00uc2l6ZX0pLlxuICAgICAgICAgICAgVGhpcyBtYXkgYmUgZHVlIHRvIHRoZSByZXF1ZXN0IGJlaW5nIHJvdXRlZCB0byBhIGRpZmZlcmVudCBCaXRHby1FeHByZXNzIGluc3RhbmNlIHRoYXQgZm9yIHNpZ25pbmcgc3RlcCAnc2lnbmVyTm9uY2UnLmBcbiAgICAgICAgKTtcbiAgICAgICAgUFNCVF9DQUNIRV9XQVNNLmRlbGV0ZSh0eElkKTtcbiAgICAgICAgY2FjaGVkUHNidC5jb21iaW5lTXVzaWcyTm9uY2VzKHR4KTtcbiAgICAgICAgdHggPSBjYWNoZWRQc2J0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIHRoaXMgaW5zdGFuY2UgaXMgbm90IGFuIGV4dGVybmFsIHNpZ25lclxuICAgICAgICBhc3NlcnQocGFyYW1zLndhbGxldElkLCAnd2FsbGV0SWQgaXMgcmVxdWlyZWQgZm9yIE11U2lnMiBiaXRnbyBub25jZScpO1xuICAgICAgICBhc3NlcnQod2FzbVNpZ25lcik7XG4gICAgICAgIHR4LmdlbmVyYXRlTXVzaWcyTm9uY2VzKHdhc21TaWduZXIpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvaW4uZ2V0TXVzaWcyTm9uY2VzKHR4LCBwYXJhbXMud2FsbGV0SWQpO1xuICAgICAgICB0eC5jb21iaW5lTXVzaWcyTm9uY2VzKHJlc3BvbnNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAocGFyYW1zLnNpZ25pbmdTdGVwKSB7XG4gICAgICBjYXNlICdzaWduZXJOb25jZSc6XG4gICAgICBjYXNlICdjb3NpZ25lck5vbmNlJzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluIGNlcnRhaW4gY2FzZXMsIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IG5vdCBrbm93IHdoZXRoZXIgdGhlIHR4SGV4IGNvbnRhaW5zIGEgcHNidCB3aXRoIHRhcHJvb3Qga2V5IHBhdGggc3BlbmQgaW5wdXQocykuXG4gICAgICAgICAqIEluc3RlYWQgb2YgdGhyb3dpbmcgZXJyb3IsIG5vLW9wIGFuZCByZXR1cm4gdGhlIHR4SGV4LiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIHNhbWUgc2VxdWVuY2UuXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gdHg7XG4gICAgfVxuICB9XG5cbiAgYXNzZXJ0KHNpZ25lcktleWNoYWluKTtcbiAgcmV0dXJuIHNpZ25BbmRWZXJpZnlQc2J0V2FzbSh0eCwgc2lnbmVyS2V5Y2hhaW4sIHJvb3RXYWxsZXRLZXlzLCBwYXJhbXMucmVwbGF5UHJvdGVjdGlvbik7XG59XG4iXX0=
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { BIP32Interface } from '@bitgo/secp256k1';
|
|
2
2
|
import * as utxolib from '@bitgo/utxo-lib';
|
|
3
|
-
import { fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
3
|
+
import { BIP32, fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
4
4
|
import { UtxoCoinName } from '../../names';
|
|
5
|
+
import type { Unspent } from '../../unspent';
|
|
5
6
|
import { Musig2Participant } from './musig2';
|
|
6
7
|
import { ReplayProtectionKeys } from './signPsbtWasm';
|
|
7
8
|
/**
|
|
8
9
|
* Sign and verify a PSBT using either utxolib or wasm-utxo depending on the PSBT type.
|
|
9
10
|
*/
|
|
10
|
-
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys | undefined, replayProtection: ReplayProtectionKeys | undefined): utxolib.bitgo.UtxoPsbt;
|
|
11
|
-
export declare function signAndVerifyPsbt(psbt: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): fixedScriptWallet.BitGoPsbt;
|
|
12
|
-
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt;
|
|
11
|
+
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface | BIP32, rootWalletKeys: fixedScriptWallet.RootWalletKeys | undefined, replayProtection: ReplayProtectionKeys | undefined): utxolib.bitgo.UtxoPsbt;
|
|
12
|
+
export declare function signAndVerifyPsbt(psbt: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface | BIP32, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): fixedScriptWallet.BitGoPsbt;
|
|
13
|
+
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface | BIP32, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt;
|
|
13
14
|
export declare function signTransaction<T extends utxolib.bitgo.UtxoPsbt | utxolib.bitgo.UtxoTransaction<bigint | number> | fixedScriptWallet.BitGoPsbt>(coin: Musig2Participant<utxolib.bitgo.UtxoPsbt> | Musig2Participant<fixedScriptWallet.BitGoPsbt>, tx: T, signerKeychain: BIP32Interface | undefined, coinName: UtxoCoinName, params: {
|
|
14
15
|
walletId: string | undefined;
|
|
15
16
|
txInfo: {
|
|
16
|
-
unspents?:
|
|
17
|
+
unspents?: Unspent<bigint | number>[];
|
|
17
18
|
} | undefined;
|
|
18
19
|
isLastSignature: boolean;
|
|
19
20
|
signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAA4D,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGhH;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,cAAc,EAAE,cAAc,GAAG,KAAK,EACtC,cAAc,EAAE,iBAAiB,CAAC,cAAc,GAAG,SAAS,EAC5D,gBAAgB,EAAE,oBAAoB,GAAG,SAAS,GACjD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,CAAC,SAAS,EACjC,cAAc,EAAE,cAAc,GAAG,KAAK,EACtC,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,GACrC,iBAAiB,CAAC,SAAS,CAAC;AAC/B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAC1D,cAAc,EAAE,cAAc,GAAG,KAAK,EACtC,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAkBxD,wBAAsB,eAAe,CACnC,CAAC,SAAS,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,iBAAiB,CAAC,SAAS,EAE/G,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAChG,EAAE,EAAE,CAAC,EACL,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,iBAAiB;IACjB,kCAAkC,EAAE,OAAO,CAAC;IAC5C,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,OAAO,CACR,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAC/G,CAqDA"}
|