@bitgo-beta/abstract-utxo 1.6.1-alpha.456 → 1.6.1-alpha.458
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 +4 -1
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/cjs/src/abstractUtxoCoin.js +14 -11
- package/dist/cjs/src/address/fixedScript.d.ts +4 -4
- package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
- package/dist/cjs/src/address/fixedScript.js +13 -11
- 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 +4 -2
- package/dist/cjs/src/names.d.ts +2 -0
- package/dist/cjs/src/names.d.ts.map +1 -1
- package/dist/cjs/src/names.js +9 -1
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +2 -1
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
- package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +3 -5
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +2 -1
- package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -1
- package/dist/cjs/src/offlineVault/TransactionExplanation.js +3 -4
- 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 +6 -3
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.js +8 -7
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts +3 -2
- package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/crossChainRecovery.js +7 -6
- package/dist/cjs/src/recovery/psbt.d.ts +3 -2
- package/dist/cjs/src/recovery/psbt.d.ts.map +1 -1
- package/dist/cjs/src/recovery/psbt.js +5 -4
- package/dist/cjs/src/transaction/bip322.d.ts.map +1 -1
- package/dist/cjs/src/transaction/bip322.js +26 -11
- package/dist/cjs/src/transaction/decode.d.ts +4 -3
- package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
- package/dist/cjs/src/transaction/decode.js +8 -5
- package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/explainPsbt.js +7 -5
- package/dist/cjs/src/transaction/descriptor/parse.d.ts +2 -1
- package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/parse.js +14 -14
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +4 -4
- 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 +5 -5
- package/dist/cjs/src/transaction/fetchInputs.d.ts +2 -1
- package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fetchInputs.js +4 -2
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +4 -4
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +24 -19
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +3 -3
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +6 -4
- package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/replayProtection.js +17 -49
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +4 -2
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +6 -5
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/signTransaction.js +4 -4
- package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +2 -2
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +3 -3
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -1
- package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +6 -39
- package/dist/cjs/src/transaction/recipient.d.ts +4 -4
- package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
- package/dist/cjs/src/transaction/recipient.js +7 -4
- package/dist/cjs/src/transaction/signTransaction.js +2 -2
- package/dist/cjs/test/unit/address.js +9 -9
- package/dist/cjs/test/unit/bip322.js +319 -3
- package/dist/cjs/test/unit/customChangeWallet.js +2 -2
- package/dist/cjs/test/unit/prebuildAndSign.js +2 -2
- package/dist/cjs/test/unit/recovery/crossChainRecovery.js +6 -7
- package/dist/cjs/test/unit/transaction/descriptor/parse.js +2 -2
- package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +7 -10
- package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +4 -5
- package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +3 -2
- package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +5 -6
- package/dist/cjs/test/unit/transaction.js +23 -24
- package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
- package/dist/cjs/test/unit/util/unspents.js +4 -2
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/abstractUtxoCoin.d.ts +4 -1
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/esm/abstractUtxoCoin.js +16 -13
- package/dist/esm/address/fixedScript.d.ts +4 -4
- package/dist/esm/address/fixedScript.d.ts.map +1 -1
- package/dist/esm/address/fixedScript.js +13 -11
- 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 +4 -2
- package/dist/esm/names.d.ts +2 -0
- package/dist/esm/names.d.ts.map +1 -1
- package/dist/esm/names.js +7 -1
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +2 -1
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
- package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +3 -5
- package/dist/esm/offlineVault/TransactionExplanation.d.ts +2 -1
- package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -1
- package/dist/esm/offlineVault/TransactionExplanation.js +3 -4
- 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 +6 -3
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/backupKeyRecovery.js +8 -7
- package/dist/esm/recovery/crossChainRecovery.d.ts +3 -2
- package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/crossChainRecovery.js +8 -7
- package/dist/esm/recovery/psbt.d.ts +3 -2
- package/dist/esm/recovery/psbt.d.ts.map +1 -1
- package/dist/esm/recovery/psbt.js +5 -4
- package/dist/esm/transaction/bip322.d.ts.map +1 -1
- package/dist/esm/transaction/bip322.js +27 -12
- package/dist/esm/transaction/decode.d.ts +4 -3
- package/dist/esm/transaction/decode.d.ts.map +1 -1
- package/dist/esm/transaction/decode.js +8 -5
- package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/explainPsbt.js +7 -5
- package/dist/esm/transaction/descriptor/parse.d.ts +2 -1
- package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/parse.js +14 -14
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +2 -1
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/verifyTransaction.js +4 -4
- 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 +5 -5
- package/dist/esm/transaction/fetchInputs.d.ts +2 -1
- package/dist/esm/transaction/fetchInputs.d.ts.map +1 -1
- package/dist/esm/transaction/fetchInputs.js +4 -2
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +4 -4
- package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/explainTransaction.js +24 -19
- package/dist/esm/transaction/fixedScript/parseTransaction.js +3 -3
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts +6 -4
- package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/replayProtection.js +17 -16
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +4 -2
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +6 -5
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts +2 -1
- package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/signTransaction.js +4 -4
- package/dist/esm/transaction/fixedScript/verifyTransaction.js +2 -2
- package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +3 -3
- package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -1
- package/dist/esm/transaction/getPayGoVerificationPubkey.js +6 -6
- package/dist/esm/transaction/recipient.d.ts +4 -4
- package/dist/esm/transaction/recipient.d.ts.map +1 -1
- package/dist/esm/transaction/recipient.js +7 -4
- package/dist/esm/transaction/signTransaction.js +2 -2
- package/package.json +12 -12
- package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +0 -3
- package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +0 -1
- package/dist/cjs/test/unit/transaction/fixedScript/util.js +0 -41
|
@@ -126,7 +126,7 @@ export async function parseTransaction(coin, params) {
|
|
|
126
126
|
const changeOutputs = _.filter(allOutputDetails, { external: false });
|
|
127
127
|
function toComparableOutputsWithExternal(outputs) {
|
|
128
128
|
return outputs.map((output) => ({
|
|
129
|
-
script: fromExtendedAddressFormatToScript(output.address, coin.
|
|
129
|
+
script: fromExtendedAddressFormatToScript(output.address, coin.name),
|
|
130
130
|
value: output.amount === 'max' ? 'max' : BigInt(output.amount),
|
|
131
131
|
external: output.external,
|
|
132
132
|
}));
|
|
@@ -154,7 +154,7 @@ export async function parseTransaction(coin, params) {
|
|
|
154
154
|
const implicitExternalSpendAmount = utxolib.bitgo.toTNumber(implicitExternalOutputs.reduce((sum, o) => sum + BigInt(o.value), BigInt(0)), coin.amountType);
|
|
155
155
|
function toOutputs(outputs) {
|
|
156
156
|
return outputs.map((output) => ({
|
|
157
|
-
address: toExtendedAddressFormat(output.script, coin.
|
|
157
|
+
address: toExtendedAddressFormat(output.script, coin.name),
|
|
158
158
|
amount: output.value.toString(),
|
|
159
159
|
external: output.external,
|
|
160
160
|
}));
|
|
@@ -173,4 +173,4 @@ export async function parseTransaction(coin, params) {
|
|
|
173
173
|
customChange,
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUYsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUks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Q0FBQyxjQUFjLENBQUM7UUFDekMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDO1FBQzNELHVCQUF1QixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxhQUFhO1FBQ2IsMkJBQTJCO1FBQzNCLDJCQUEyQjtRQUMzQix5Q0FBeUM7UUFDekMsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmlwbGUsIFZlcmlmaWNhdGlvbk9wdGlvbnMsIFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgIH1cbiAgKTtcblxuICAvLyBSZWN1cnNlIGludG8gcGFyc2VUcmFuc2FjdGlvbiB3aXRoIHRoZSBkZXJpdmVkIHJlY2lwaWVudHMgYW5kIHdpdGhvdXQgcmJmVHhJZHNcbiAgcmV0dXJuIHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgIC4uLnBhcmFtcyxcbiAgICB0eFBhcmFtczoge1xuICAgICAgLi4udHhQYXJhbXMsXG4gICAgICByZWNpcGllbnRzLFxuICAgICAgcmJmVHhJZHM6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9FeHBlY3RlZE91dHB1dHMoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbb3V0cHV0XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgLy8gYWRkcmVzcyBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0cyAocmVnYXJkbGVzcyBvZiB0aGUgb3V0cHV0IGFtb3VudClcbiAgICBleHBlY3RlZE91dHB1dHMucHVzaCh7IGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSwgYW1vdW50OiAnbWF4JyB9KTtcbiAgfVxuICByZXR1cm4gZXhwZWN0ZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIC8vIEJyYW5jaCBvZmYgZWFybHkgZm9yIFJCRiB0cmFuc2FjdGlvbnNcbiAgaWYgKHR4UGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgcmV0dXJuIHBhcnNlUmJmVHJhbnNhY3Rpb24oY29pbiwgcGFyYW1zKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkLnR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhjb2luLCB0eFBhcmFtcyk7XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICAvKipcbiAgICogTG9vcCB0aHJvdWdoIGFsbCB0aGUgb3V0cHV0cyBhbmQgY2xhc3NpZnkgZWFjaCBvZiB0aGVtIGFzIGVpdGhlciBpbnRlcm5hbCBzcGVuZHNcbiAgICogb3IgZXh0ZXJuYWwgc3BlbmRzIGJ5IHNldHRpbmcgdGhlIFwiZXh0ZXJuYWxcIiBwcm9wZXJ0eSB0byB0cnVlIG9yIGZhbHNlIG9uIHRoZSBvdXRwdXQgb2JqZWN0LlxuICAgKi9cbiAgY29uc3QgYWxsT3V0cHV0RGV0YWlsczogT3V0cHV0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxPdXRwdXRzLm1hcCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT3V0cHV0KHtcbiAgICAgICAgY3VycmVudE91dHB1dCxcbiAgICAgICAgY29pbixcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICBrZXljaGFpbkFycmF5OiB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyksXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBleHBlY3RlZE91dHB1dHMsXG4gICAgICAgICAgY2hhbmdlQWRkcmVzczogdHhQYXJhbXMuY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VzdG9tQ2hhbmdlLFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24gPSBhbGxPdXRwdXREZXRhaWxzLnNvbWUoXG4gICAgKG91dHB1dCkgPT4gKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCk/Lm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uXG4gICk7XG5cbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IF8uZmlsdGVyKGFsbE91dHB1dERldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuXG4gIGZ1bmN0aW9uIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwob3V0cHV0czogT3V0cHV0W10pOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5ldHdvcmspLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpXG4gICk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKVxuICApO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBwZXJ0YWlucyB0byB2ZXJpZnlpbmcgdGhlIHBheS1hcy15b3UtZ28tZmVlIEJpdEdvXG4gICAqIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byB0cmFuc2FjdGlvbnMgc2VuZGluZyBtb25leSBvdXQgb2YgdGhlIHdhbGxldC4gVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmRcbiAgICogaW4gdGhhdCB3ZSBjb21wYXJlIHRoZSBleHRlcm5hbCBzcGVuZCBhbW91bnQgdGhhdCB3YXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgdG8gdGhlIHBvcnRpb25cbiAgICogdGhhdCB3YXMgc3BlY2lmaWVkIGltcGxpY2l0bHkuIFRvIHByb3RlY3QgY3VzdG9tZXJzIGZyb20gcGVvcGxlIHRhbXBlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzLCB3ZVxuICAgKiBkZWZpbmUgYSB0aHJlc2hvbGQgZm9yIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGluIHJlbGF0aW9uIHRvIHRoZSBleHBsaWNpdFxuICAgKiBleHRlcm5hbCBzcGVuZC5cbiAgICpcbiAgICogVGhpcyBoYXMgYmVjb21lIG9ic29sZXRlIHdpdGggdGhlIGludG9kdWN0aW9uIG9mIGB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZigpYC5cbiAgICovXG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBleHRyYSBhZGRyZXNzZXMgYXJlIGNoYW5nZSBhZGRyZXNzZXNcbiAgLy8gZ2V0IGFsbCB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIHRoZSBzZXJ2ZXIgYWRkZWQgYW5kIGNhbGN1bGF0ZSB0aGVpciB2YWx1ZXNcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMgPSBpbXBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSBhcyBiaWdpbnQsXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICk7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10pOiBPdXRwdXRbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBjb2luLm5ldHdvcmspLFxuICAgICAgYW1vdW50OiBvdXRwdXQudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXljaGFpbnMsXG4gICAga2V5U2lnbmF0dXJlczogZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQpID8/IHt9LFxuICAgIG91dHB1dHM6IGFsbE91dHB1dERldGFpbHMsXG4gICAgbWlzc2luZ091dHB1dHM6IHRvT3V0cHV0cyhtaXNzaW5nT3V0cHV0cyksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQsXG4gICAgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uLFxuICAgIGN1c3RvbUNoYW5nZSxcbiAgfTtcbn1cbiJdfQ==
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUYsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUNGLENBQUM7SUFFRixpRkFBaUY7SUFDakYsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDNUIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFO1lBQ1IsR0FBRyxRQUFRO1lBQ1gsVUFBVTtZQUNWLFFBQVEsRUFBRSxTQUFTO1NBQ3BCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQ3hCLElBQXNCLEVBQ3RCLFFBSUM7SUFFRCxnRUFBZ0U7SUFDaEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3JFLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxRQUFRLENBQUMsMEJBQTBCLElBQUksUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xFLGdHQUFnRztRQUNoRyxvRUFBb0U7UUFDcEUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsSUFBc0IsRUFDdEIsTUFBd0M7SUFFeEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFFLHdDQUF3QztJQUN4QyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDbkcsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztJQUV6RCwwQ0FBMEM7SUFDMUMsSUFBSSxTQUFTLEdBQXNFLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDMUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsU0FBUyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUF5QixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV4RSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUQsNERBQTREO0lBQzVELElBQUksWUFBNkMsQ0FBQztJQUNsRCxNQUFNLEVBQUUsb0JBQW9CLEdBQUcsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6RSxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDekIsb0VBQW9FO1FBQ3BFLG9GQUFvRjtRQUNwRixNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUM7UUFDM0UsTUFBTSxrQkFBa0IsR0FBVyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsTUFBTSxJQUFJLGdCQUFnQixDQUFDLEtBQUssSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JHLE1BQU0scUJBQXFCLEdBQXlCO2dCQUNsRCxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUNyQixnQkFBZ0IsQ0FBQyxNQUFNO2dCQUN2QixnQkFBZ0IsQ0FBQyxLQUFLO2FBQ3ZCLENBQUM7WUFFRixZQUFZLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsVUFBVSxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7YUFDaEgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLE1BQU0sV0FBVyxHQUEyQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBVTtRQUNqRixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1FBQ3pCLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFtQjtLQUN4RCxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUUxRTs7O09BR0c7SUFDSCxNQUFNLGdCQUFnQixHQUFhLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDbEQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1FBQy9CLE9BQU8sV0FBVyxDQUFDO1lBQ2pCLGFBQWE7WUFDYixJQUFJO1lBQ0osVUFBVTtZQUNWLFlBQVk7WUFDWixhQUFhLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1lBQzFDLE1BQU07WUFDTixRQUFRLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLGVBQWU7Z0JBQzNCLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTthQUN0QztZQUNELFlBQVk7WUFDWixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE1BQU0seUNBQXlDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUNyRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUUsTUFBa0MsRUFBRSx5Q0FBeUMsQ0FDM0YsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV0RSxTQUFTLCtCQUErQixDQUFDLE9BQWlCO1FBQ3hELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QixNQUFNLEVBQUUsaUNBQWlDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3BFLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7WUFDbEYsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUNyQywrQkFBK0IsQ0FBQyxlQUFlLENBQUMsRUFDaEQsK0JBQStCLENBQUMsVUFBVSxDQUFDLENBQzVDLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FDdEMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsRUFDakQsK0JBQStCLENBQUMsZUFBZSxDQUFDLENBQ2pELENBQUM7SUFDRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQywrQkFBK0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRTdHLG1HQUFtRztJQUNuRyxNQUFNLHVCQUF1QixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRixzRkFBc0Y7SUFDdEYsTUFBTSwyQkFBMkIsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDekQsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFXLEVBQzlGLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFFRjs7Ozs7Ozs7O09BU0c7SUFFSCw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ3pELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBVyxFQUM5RixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBRUYsU0FBUyxTQUFTLENBQUMsT0FBdUQ7UUFDeEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQy9CLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPO1FBQ0wsU0FBUztRQUNULGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQzdDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsY0FBYyxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFDekMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDO1FBQzNELHVCQUF1QixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxhQUFhO1FBQ2IsMkJBQTJCO1FBQzNCLDJCQUEyQjtRQUMzQix5Q0FBeUM7UUFDekMsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmlwbGUsIFZlcmlmaWNhdGlvbk9wdGlvbnMsIFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgIH1cbiAgKTtcblxuICAvLyBSZWN1cnNlIGludG8gcGFyc2VUcmFuc2FjdGlvbiB3aXRoIHRoZSBkZXJpdmVkIHJlY2lwaWVudHMgYW5kIHdpdGhvdXQgcmJmVHhJZHNcbiAgcmV0dXJuIHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgIC4uLnBhcmFtcyxcbiAgICB0eFBhcmFtczoge1xuICAgICAgLi4udHhQYXJhbXMsXG4gICAgICByZWNpcGllbnRzLFxuICAgICAgcmJmVHhJZHM6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9FeHBlY3RlZE91dHB1dHMoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbb3V0cHV0XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgLy8gYWRkcmVzcyBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0cyAocmVnYXJkbGVzcyBvZiB0aGUgb3V0cHV0IGFtb3VudClcbiAgICBleHBlY3RlZE91dHB1dHMucHVzaCh7IGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSwgYW1vdW50OiAnbWF4JyB9KTtcbiAgfVxuICByZXR1cm4gZXhwZWN0ZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIC8vIEJyYW5jaCBvZmYgZWFybHkgZm9yIFJCRiB0cmFuc2FjdGlvbnNcbiAgaWYgKHR4UGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgcmV0dXJuIHBhcnNlUmJmVHJhbnNhY3Rpb24oY29pbiwgcGFyYW1zKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkLnR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhjb2luLCB0eFBhcmFtcyk7XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICAvKipcbiAgICogTG9vcCB0aHJvdWdoIGFsbCB0aGUgb3V0cHV0cyBhbmQgY2xhc3NpZnkgZWFjaCBvZiB0aGVtIGFzIGVpdGhlciBpbnRlcm5hbCBzcGVuZHNcbiAgICogb3IgZXh0ZXJuYWwgc3BlbmRzIGJ5IHNldHRpbmcgdGhlIFwiZXh0ZXJuYWxcIiBwcm9wZXJ0eSB0byB0cnVlIG9yIGZhbHNlIG9uIHRoZSBvdXRwdXQgb2JqZWN0LlxuICAgKi9cbiAgY29uc3QgYWxsT3V0cHV0RGV0YWlsczogT3V0cHV0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxPdXRwdXRzLm1hcCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT3V0cHV0KHtcbiAgICAgICAgY3VycmVudE91dHB1dCxcbiAgICAgICAgY29pbixcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICBrZXljaGFpbkFycmF5OiB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyksXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBleHBlY3RlZE91dHB1dHMsXG4gICAgICAgICAgY2hhbmdlQWRkcmVzczogdHhQYXJhbXMuY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VzdG9tQ2hhbmdlLFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24gPSBhbGxPdXRwdXREZXRhaWxzLnNvbWUoXG4gICAgKG91dHB1dCkgPT4gKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCk/Lm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uXG4gICk7XG5cbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IF8uZmlsdGVyKGFsbE91dHB1dERldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuXG4gIGZ1bmN0aW9uIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwob3V0cHV0czogT3V0cHV0W10pOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5hbWUpLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpXG4gICk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKVxuICApO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBwZXJ0YWlucyB0byB2ZXJpZnlpbmcgdGhlIHBheS1hcy15b3UtZ28tZmVlIEJpdEdvXG4gICAqIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byB0cmFuc2FjdGlvbnMgc2VuZGluZyBtb25leSBvdXQgb2YgdGhlIHdhbGxldC4gVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmRcbiAgICogaW4gdGhhdCB3ZSBjb21wYXJlIHRoZSBleHRlcm5hbCBzcGVuZCBhbW91bnQgdGhhdCB3YXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgdG8gdGhlIHBvcnRpb25cbiAgICogdGhhdCB3YXMgc3BlY2lmaWVkIGltcGxpY2l0bHkuIFRvIHByb3RlY3QgY3VzdG9tZXJzIGZyb20gcGVvcGxlIHRhbXBlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzLCB3ZVxuICAgKiBkZWZpbmUgYSB0aHJlc2hvbGQgZm9yIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGluIHJlbGF0aW9uIHRvIHRoZSBleHBsaWNpdFxuICAgKiBleHRlcm5hbCBzcGVuZC5cbiAgICpcbiAgICogVGhpcyBoYXMgYmVjb21lIG9ic29sZXRlIHdpdGggdGhlIGludG9kdWN0aW9uIG9mIGB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZigpYC5cbiAgICovXG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBleHRyYSBhZGRyZXNzZXMgYXJlIGNoYW5nZSBhZGRyZXNzZXNcbiAgLy8gZ2V0IGFsbCB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIHRoZSBzZXJ2ZXIgYWRkZWQgYW5kIGNhbGN1bGF0ZSB0aGVpciB2YWx1ZXNcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMgPSBpbXBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSBhcyBiaWdpbnQsXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICk7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10pOiBPdXRwdXRbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBjb2luLm5hbWUpLFxuICAgICAgYW1vdW50OiBvdXRwdXQudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXljaGFpbnMsXG4gICAga2V5U2lnbmF0dXJlczogZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQpID8/IHt9LFxuICAgIG91dHB1dHM6IGFsbE91dHB1dERldGFpbHMsXG4gICAgbWlzc2luZ091dHB1dHM6IHRvT3V0cHV0cyhtaXNzaW5nT3V0cHV0cyksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQsXG4gICAgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uLFxuICAgIGN1c3RvbUNoYW5nZSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { UtxoCoinName } from '../../names';
|
|
2
2
|
export declare const pubkeyProd: Buffer<ArrayBuffer>;
|
|
3
3
|
export declare const pubkeyTestnet: Buffer<ArrayBuffer>;
|
|
4
|
-
export declare function getReplayProtectionPubkeys(
|
|
5
|
-
export declare function getReplayProtectionAddresses(
|
|
6
|
-
export declare function isReplayProtectionUnspent
|
|
4
|
+
export declare function getReplayProtectionPubkeys(coinName: UtxoCoinName): Buffer[];
|
|
5
|
+
export declare function getReplayProtectionAddresses(coinName: UtxoCoinName, format?: 'default' | 'cashaddr'): string[];
|
|
6
|
+
export declare function isReplayProtectionUnspent(u: {
|
|
7
|
+
address: string;
|
|
8
|
+
}, coinName: UtxoCoinName): boolean;
|
|
7
9
|
//# sourceMappingURL=replayProtection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAU3E;AAWD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,SAAS,GAAG,UAAsB,GACzC,MAAM,EAAE,CAYV;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEjG"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
1
|
import { utxolibCompat } from '@bitgo/wasm-utxo';
|
|
2
|
+
import { getNetworkFromCoinName } from '../../names';
|
|
3
3
|
export const pubkeyProd = Buffer.from('0255b9f71ac2c78fffd83e3e37b9e17ae70d5437b7f56d0ed2e93b7de08015aa59', 'hex');
|
|
4
4
|
export const pubkeyTestnet = Buffer.from('0219da48412c2268865fe8c126327d1b12eee350a3b69eb09e3323cc9a11828945', 'hex');
|
|
5
|
-
export function getReplayProtectionPubkeys(
|
|
6
|
-
switch (
|
|
7
|
-
case
|
|
8
|
-
case
|
|
5
|
+
export function getReplayProtectionPubkeys(coinName) {
|
|
6
|
+
switch (coinName) {
|
|
7
|
+
case 'bch':
|
|
8
|
+
case 'bsv':
|
|
9
9
|
return [pubkeyProd];
|
|
10
|
-
case
|
|
11
|
-
case
|
|
10
|
+
case 'tbsv':
|
|
11
|
+
case 'tbch':
|
|
12
12
|
return [pubkeyTestnet];
|
|
13
13
|
}
|
|
14
14
|
return [];
|
|
@@ -21,19 +21,20 @@ const replayProtectionScriptsProd = [Buffer.from('a914174315cfde84f4c45395ac6f15
|
|
|
21
21
|
// 2MuMnPoSDgWEpNWH28X2nLtYMXQJCyT61eY
|
|
22
22
|
// bchtest:pqtjmnzwqffkrk2349g3cecfwwjwxusvnq87n07cal
|
|
23
23
|
const replayProtectionScriptsTestnet = [Buffer.from('a914172dcc4e025361d951a9511c670973a4e3720c9887', 'hex')];
|
|
24
|
-
export function getReplayProtectionAddresses(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
case
|
|
24
|
+
export function getReplayProtectionAddresses(coinName, format = 'default') {
|
|
25
|
+
const network = getNetworkFromCoinName(coinName);
|
|
26
|
+
switch (coinName) {
|
|
27
|
+
case 'bch':
|
|
28
|
+
case 'bsv':
|
|
28
29
|
return replayProtectionScriptsProd.map((script) => utxolibCompat.fromOutputScript(script, network, format));
|
|
29
|
-
case
|
|
30
|
-
case
|
|
30
|
+
case 'tbsv':
|
|
31
|
+
case 'tbch':
|
|
31
32
|
return replayProtectionScriptsTestnet.map((script) => utxolibCompat.fromOutputScript(script, network, format));
|
|
32
33
|
default:
|
|
33
34
|
return [];
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
export function isReplayProtectionUnspent(u,
|
|
37
|
-
return getReplayProtectionAddresses(
|
|
37
|
+
export function isReplayProtectionUnspent(u, coinName) {
|
|
38
|
+
return getReplayProtectionAddresses(coinName).includes(u.address);
|
|
38
39
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRW5ILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXRILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxRQUFzQjtJQUMvRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxxQkFBcUI7QUFDckIscUNBQXFDO0FBQ3JDLHlEQUF5RDtBQUN6RCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNHLHdCQUF3QjtBQUN4QixzQ0FBc0M7QUFDdEMscURBQXFEO0FBQ3JELE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFOUcsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxRQUFzQixFQUN0QixTQUFpQyxTQUFTO0lBRTFDLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RyxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssTUFBTTtZQUNULE9BQU8sOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pIO1lBQ0UsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxDQUFzQixFQUFFLFFBQXNCO0lBQ3RGLE9BQU8sNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXR4b2xpYkNvbXBhdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBnZXROZXR3b3JrRnJvbUNvaW5OYW1lLCBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlQcm9kID0gQnVmZmVyLmZyb20oJzAyNTViOWY3MWFjMmM3OGZmZmQ4M2UzZTM3YjllMTdhZTcwZDU0MzdiN2Y1NmQwZWQyZTkzYjdkZTA4MDE1YWE1OScsICdoZXgnKTtcblxuZXhwb3J0IGNvbnN0IHB1YmtleVRlc3RuZXQgPSBCdWZmZXIuZnJvbSgnMDIxOWRhNDg0MTJjMjI2ODg2NWZlOGMxMjYzMjdkMWIxMmVlZTM1MGEzYjY5ZWIwOWUzMzIzY2M5YTExODI4OTQ1JywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IEJ1ZmZlcltdIHtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ2JjaCc6XG4gICAgY2FzZSAnYnN2JzpcbiAgICAgIHJldHVybiBbcHVia2V5UHJvZF07XG4gICAgY2FzZSAndGJzdic6XG4gICAgY2FzZSAndGJjaCc6XG4gICAgICByZXR1cm4gW3B1YmtleVRlc3RuZXRdO1xuICB9XG4gIHJldHVybiBbXTtcbn1cblxuLy8gc2gocGsocHVia2V5UHJvZCkpXG4vLyAzM3AxcTdtVEd5ZU01VW5aRVJHaU1jVlVrWTEyU0NzYXRBXG4vLyBiaXRjb2luY2FzaDpwcXQ1eDl3MG02ejBmM3puamtreDc5d2wzbDd5d3JzemVzZW1wOHhncGZcbmNvbnN0IHJlcGxheVByb3RlY3Rpb25TY3JpcHRzUHJvZCA9IFtCdWZmZXIuZnJvbSgnYTkxNDE3NDMxNWNmZGU4NGY0YzQ1Mzk1YWM2ZjE1ZGY4ZmZjNDcwZTAyY2M4NycsICdoZXgnKV07XG4vLyBzaChwayhwdWJrZXlUZXN0bmV0KSlcbi8vIDJNdU1uUG9TRGdXRXBOV0gyOFgybkx0WU1YUUpDeVQ2MWVZXG4vLyBiY2h0ZXN0OnBxdGptbnp3cWZma3JrMjM0OWczY2VjZnd3and4dXN2bnE4N24wN2NhbFxuY29uc3QgcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNUZXN0bmV0ID0gW0J1ZmZlci5mcm9tKCdhOTE0MTcyZGNjNGUwMjUzNjFkOTUxYTk1MTFjNjcwOTczYTRlMzcyMGM5ODg3JywgJ2hleCcpXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsXG4gIGZvcm1hdDogJ2RlZmF1bHQnIHwgJ2Nhc2hhZGRyJyA9ICdkZWZhdWx0J1xuKTogc3RyaW5nW10ge1xuICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29ya0Zyb21Db2luTmFtZShjb2luTmFtZSk7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdiY2gnOlxuICAgIGNhc2UgJ2Jzdic6XG4gICAgICByZXR1cm4gcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNQcm9kLm1hcCgoc2NyaXB0KSA9PiB1dHhvbGliQ29tcGF0LmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBuZXR3b3JrLCBmb3JtYXQpKTtcbiAgICBjYXNlICd0YnN2JzpcbiAgICBjYXNlICd0YmNoJzpcbiAgICAgIHJldHVybiByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Rlc3RuZXQubWFwKChzY3JpcHQpID0+IHV0eG9saWJDb21wYXQuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIG5ldHdvcmssIGZvcm1hdCkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQodTogeyBhZGRyZXNzOiBzdHJpbmcgfSwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcyhjb2luTmFtZSkuaW5jbHVkZXModS5hZGRyZXNzKTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
2
|
import { BIP32Interface } from '@bitgo-beta/secp256k1';
|
|
3
|
+
import { UtxoCoinName } from '../../names';
|
|
3
4
|
type Unspent<TNumber extends number | bigint = number> = utxolib.bitgo.Unspent<TNumber>;
|
|
4
5
|
type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
|
|
5
6
|
/**
|
|
@@ -10,14 +11,15 @@ type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
|
|
|
10
11
|
* @param transaction - wallet transaction (builder) to be signed
|
|
11
12
|
* @param unspents - transaction unspents
|
|
12
13
|
* @param walletSigner - signing parameters
|
|
14
|
+
* @param coinName - coin name for network-specific logic
|
|
13
15
|
* @param isLastSignature - Returns full-signed transaction when true. Builds half-signed when false.
|
|
14
16
|
* @param replayProtectionAddresses - List of replay protection addresses to skip signing
|
|
15
17
|
*/
|
|
16
|
-
export declare function signAndVerifyWalletTransaction<TNumber extends number | bigint>(transaction: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoTransactionBuilder<TNumber>, unspents: Unspent<TNumber>[], walletSigner: utxolib.bitgo.WalletUnspentSigner<RootWalletKeys>, { isLastSignature, replayProtectionAddresses, }: {
|
|
18
|
+
export declare function signAndVerifyWalletTransaction<TNumber extends number | bigint>(transaction: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoTransactionBuilder<TNumber>, unspents: Unspent<TNumber>[], walletSigner: utxolib.bitgo.WalletUnspentSigner<RootWalletKeys>, coinName: UtxoCoinName, { isLastSignature, replayProtectionAddresses, }: {
|
|
17
19
|
isLastSignature: boolean;
|
|
18
20
|
replayProtectionAddresses?: string[];
|
|
19
21
|
}): utxolib.bitgo.UtxoTransaction<TNumber>;
|
|
20
|
-
export declare function signLegacyTransaction<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>, signerKeychain: BIP32Interface | undefined, params: {
|
|
22
|
+
export declare function signLegacyTransaction<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>, signerKeychain: BIP32Interface | undefined, coinName: UtxoCoinName, params: {
|
|
21
23
|
isLastSignature: boolean;
|
|
22
24
|
signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
|
|
23
25
|
txInfo: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAS,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAS,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,KAAK,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAExF,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,CAwExC;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,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACpE,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"}
|
|
@@ -16,13 +16,14 @@ const { isWalletUnspent, signInputWithUnspent, toOutput } = utxolib.bitgo;
|
|
|
16
16
|
* @param transaction - wallet transaction (builder) to be signed
|
|
17
17
|
* @param unspents - transaction unspents
|
|
18
18
|
* @param walletSigner - signing parameters
|
|
19
|
+
* @param coinName - coin name for network-specific logic
|
|
19
20
|
* @param isLastSignature - Returns full-signed transaction when true. Builds half-signed when false.
|
|
20
21
|
* @param replayProtectionAddresses - List of replay protection addresses to skip signing
|
|
21
22
|
*/
|
|
22
|
-
export function signAndVerifyWalletTransaction(transaction, unspents, walletSigner, { isLastSignature, replayProtectionAddresses, }) {
|
|
23
|
+
export function signAndVerifyWalletTransaction(transaction, unspents, walletSigner, coinName, { isLastSignature, replayProtectionAddresses, }) {
|
|
23
24
|
const network = transaction.network;
|
|
24
25
|
if (replayProtectionAddresses === undefined) {
|
|
25
|
-
replayProtectionAddresses = getReplayProtectionAddresses(
|
|
26
|
+
replayProtectionAddresses = getReplayProtectionAddresses(coinName);
|
|
26
27
|
}
|
|
27
28
|
const prevOutputs = unspents.map((u) => toOutput(u, network));
|
|
28
29
|
let txBuilder;
|
|
@@ -84,7 +85,7 @@ export function signAndVerifyWalletTransaction(transaction, unspents, walletSign
|
|
|
84
85
|
}
|
|
85
86
|
return signedTransaction;
|
|
86
87
|
}
|
|
87
|
-
export function signLegacyTransaction(tx, signerKeychain, params) {
|
|
88
|
+
export function signLegacyTransaction(tx, signerKeychain, coinName, params) {
|
|
88
89
|
switch (params.signingStep) {
|
|
89
90
|
case 'signerNonce':
|
|
90
91
|
case 'cosignerNonce':
|
|
@@ -105,8 +106,8 @@ export function signLegacyTransaction(tx, signerKeychain, params) {
|
|
|
105
106
|
const cosignerKeychain = bip32.fromBase58(cosignerPub);
|
|
106
107
|
assert(signerKeychain);
|
|
107
108
|
const walletSigner = new bitgo.WalletUnspentSigner(keychains, signerKeychain, cosignerKeychain);
|
|
108
|
-
return signAndVerifyWalletTransaction(tx, params.txInfo.unspents, walletSigner, {
|
|
109
|
+
return signAndVerifyWalletTransaction(tx, params.txInfo.unspents, walletSigner, coinName, {
|
|
109
110
|
isLastSignature: params.isLastSignature,
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkxlZ2FjeVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25MZWdhY3lUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQWtCLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBRTdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFNMUU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsV0FBbUcsRUFDbkcsUUFBNEIsRUFDNUIsWUFBK0QsRUFDL0QsRUFDRSxlQUFlLEVBQ2YseUJBQXlCLEdBSTFCO0lBRUQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQTBCLENBQUM7SUFDdkQsSUFBSSx5QkFBeUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1Qyx5QkFBeUIsR0FBRyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FB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QztRQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQTJCLENBQUM7SUFDNUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV2RCxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQWlCLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNoSCxPQUFPLDhCQUE4QixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUU7UUFDOUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQTJDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgYml0Z28gfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IGRlYnVnTGliIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyB9IGZyb20gJy4vcmVwbGF5UHJvdGVjdGlvbic7XG5pbXBvcnQgeyBJbnB1dFNpZ25pbmdFcnJvciwgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3IgfSBmcm9tICcuL1NpZ25pbmdFcnJvcic7XG5cbmNvbnN0IGRlYnVnID0gZGVidWdMaWIoJ2JpdGdvOnYyOnV0eG8nKTtcblxuY29uc3QgeyBpc1dhbGxldFVuc3BlbnQsIHNpZ25JbnB1dFdpdGhVbnNwZW50LCB0b091dHB1dCB9ID0gdXR4b2xpYi5iaXRnbztcblxudHlwZSBVbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+ID0gdXR4b2xpYi5iaXRnby5VbnNwZW50PFROdW1iZXI+O1xuXG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcblxuLyoqXG4gKiBTaWduIGFsbCBpbnB1dHMgb2YgYSB3YWxsZXQgdHJhbnNhY3Rpb24gYW5kIHZlcmlmeSBzaWduYXR1cmVzIGFmdGVyIHNpZ25pbmcuXG4gKiBDb2xsZWN0cyBhbmQgbG9ncyBzaWduaW5nIGVycm9ycyBhbmQgdmVyaWZpY2F0aW9uIGVycm9ycywgdGhyb3dzIGVycm9yIGluIHRoZSBlbmQgaWYgYW55IG9mIHRoZW1cbiAqIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSB3YWxsZXQgdHJhbnNhY3Rpb24gKGJ1aWxkZXIpIHRvIGJlIHNpZ25lZFxuICogQHBhcmFtIHVuc3BlbnRzIC0gdHJhbnNhY3Rpb24gdW5zcGVudHNcbiAqIEBwYXJhbSB3YWxsZXRTaWduZXIgLSBzaWduaW5nIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBpc0xhc3RTaWduYXR1cmUgLSBSZXR1cm5zIGZ1bGwtc2lnbmVkIHRyYW5zYWN0aW9uIHdoZW4gdHJ1ZS4gQnVpbGRzIGhhbGYtc2lnbmVkIHdoZW4gZmFsc2UuXG4gKiBAcGFyYW0gcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyAtIExpc3Qgb2YgcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzc2VzIHRvIHNraXAgc2lnbmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4gfCB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHVuc3BlbnRzOiBVbnNwZW50PFROdW1iZXI+W10sXG4gIHdhbGxldFNpZ25lcjogdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPixcbiAge1xuICAgIGlzTGFzdFNpZ25hdHVyZSxcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLFxuICB9OiB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXM/OiBzdHJpbmdbXTtcbiAgfVxuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBjb25zdCBuZXR3b3JrID0gdHJhbnNhY3Rpb24ubmV0d29yayBhcyB1dHhvbGliLk5ldHdvcms7XG4gIGlmIChyZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID0gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyhuZXR3b3JrKTtcbiAgfVxuICBjb25zdCBwcmV2T3V0cHV0cyA9IHVuc3BlbnRzLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgbmV0d29yaykpO1xuXG4gIGxldCB0eEJ1aWxkZXI6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPjtcbiAgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICB0eEJ1aWxkZXIgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPih0cmFuc2FjdGlvbiwgcHJldk91dHB1dHMpO1xuICAgIGlmICh0cmFuc2FjdGlvbi5pbnMubGVuZ3RoICE9PSB1bnNwZW50cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHJhbnNhY3Rpb24gaW5wdXRzIG11c3QgbWF0Y2ggdW5zcGVudHNgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIpIHtcbiAgICB0eEJ1aWxkZXIgPSB0cmFuc2FjdGlvbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcGFzcyBVdHhvVHJhbnNhY3Rpb24gb3IgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcmApO1xuICB9XG5cbiAgY29uc3Qgc2lnbkVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj5bXSA9IHVuc3BlbnRzXG4gICAgLm1hcCgodW5zcGVudDogVW5zcGVudDxUTnVtYmVyPiwgaW5wdXRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAocmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcy5pbmNsdWRlcyh1bnNwZW50LmFkZHJlc3MpKSB7XG4gICAgICAgIGRlYnVnKCdTa2lwcGluZyBzaWduYXR1cmUgZm9yIGlucHV0ICVkIG9mICVkIChSUCBpbnB1dD8pJywgaW5wdXRJbmRleCArIDEsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNXYWxsZXRVbnNwZW50PFROdW1iZXI+KHVuc3BlbnQpKSB7XG4gICAgICAgIHJldHVybiBJbnB1dFNpZ25pbmdFcnJvci5leHBlY3RlZFdhbGxldFVuc3BlbnQ8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBzaWduSW5wdXRXaXRoVW5zcGVudDxUTnVtYmVyPih0eEJ1aWxkZXIsIGlucHV0SW5kZXgsIHVuc3BlbnQsIHdhbGxldFNpZ25lcik7XG4gICAgICAgIGRlYnVnKCdTdWNjZXNzZnVsbHkgc2lnbmVkIGlucHV0ICVkIG9mICVkJywgaW5wdXRJbmRleCArIDEsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKChlKTogZSBpcyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPiA9PiBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gaXNMYXN0U2lnbmF0dXJlID8gdHhCdWlsZGVyLmJ1aWxkKCkgOiB0eEJ1aWxkZXIuYnVpbGRJbmNvbXBsZXRlKCk7XG5cbiAgY29uc3QgdmVyaWZ5RXJyb3JzOiBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPltdID0gc2lnbmVkVHJhbnNhY3Rpb24uaW5zXG4gICAgLm1hcCgoaW5wdXQsIGlucHV0SW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHVuc3BlbnQgPSB1bnNwZW50c1tpbnB1dEluZGV4XSBhcyBVbnNwZW50PFROdW1iZXI+O1xuICAgICAgaWYgKHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMuaW5jbHVkZXModW5zcGVudC5hZGRyZXNzKSkge1xuICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICAnU2tpcHBpbmcgaW5wdXQgc2lnbmF0dXJlICVkIG9mICVkICh1bnNwZW50IGZyb20gcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzcyB3aGljaCBpcyBwbGF0Zm9ybSBzaWduZWQgb25seSknLFxuICAgICAgICAgIGlucHV0SW5kZXggKyAxLFxuICAgICAgICAgIHVuc3BlbnRzLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzV2FsbGV0VW5zcGVudDxUTnVtYmVyPih1bnNwZW50KSkge1xuICAgICAgICByZXR1cm4gSW5wdXRTaWduaW5nRXJyb3IuZXhwZWN0ZWRXYWxsZXRVbnNwZW50PFROdW1iZXI+KGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHVibGljS2V5ID0gd2FsbGV0U2lnbmVyLmRlcml2ZUZvckNoYWluQW5kSW5kZXgodW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCkuc2lnbmVyLnB1YmxpY0tleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF1dHhvbGliLmJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXk8VE51bWJlcj4oc2lnbmVkVHJhbnNhY3Rpb24sIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzLCBwdWJsaWNLZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3IoaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgbmV3IEVycm9yKGBpbnZhbGlkIHNpZ25hdHVyZWApKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWJ1ZygnSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50LCBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKGUpOiBlIGlzIElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+ID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgaWYgKHNpZ25FcnJvcnMubGVuZ3RoIHx8IHZlcmlmeUVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25TaWduaW5nRXJyb3Ioc2lnbkVycm9ycywgdmVyaWZ5RXJyb3JzKTtcbiAgfVxuXG4gIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25MZWdhY3lUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQsXG4gIHBhcmFtczoge1xuICAgIGlzTGFzdFNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBzaWduaW5nU3RlcDogJ3NpZ25lck5vbmNlJyB8ICdjb3NpZ25lck5vbmNlJyB8ICdzaWduZXJTaWduYXR1cmUnIHwgdW5kZWZpbmVkO1xuICAgIHR4SW5mbzogeyB1bnNwZW50cz86IHV0eG9saWIuYml0Z28uVW5zcGVudDxUTnVtYmVyPltdIH0gfCB1bmRlZmluZWQ7XG4gICAgcHViczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgY29zaWduZXJQdWI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBzd2l0Y2ggKHBhcmFtcy5zaWduaW5nU3RlcCkge1xuICAgIGNhc2UgJ3NpZ25lck5vbmNlJzpcbiAgICBjYXNlICdjb3NpZ25lck5vbmNlJzpcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2VydGFpbiBjYXNlcywgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgbm90IGtub3cgd2hldGhlciB0aGUgdHhIZXggY29udGFpbnMgYSBwc2J0IHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzcGVuZCBpbnB1dChzKS5cbiAgICAgICAqIEluc3RlYWQgb2YgdGhyb3dpbmcgZXJyb3IsIG5vLW9wIGFuZCByZXR1cm4gdGhlIHR4SGV4LiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIHNhbWUgc2VxdWVuY2UuXG4gICAgICAgKi9cbiAgICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIGlmICh0eC5pbnMubGVuZ3RoICE9PSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdsZW5ndGggb2YgdW5zcGVudHMgYXJyYXkgc2hvdWxkIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb24gaW5wdXRzJyk7XG4gIH1cblxuICBpZiAoIXBhcmFtcy5wdWJzIHx8ICFpc1RyaXBsZShwYXJhbXMucHVicykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSB4cHViIGFycmF5YCk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbnMgPSBwYXJhbXMucHVicy5tYXAoKHB1YikgPT4gYmlwMzIuZnJvbUJhc2U1OChwdWIpKSBhcyBUcmlwbGU8QklQMzJJbnRlcmZhY2U+O1xuICBjb25zdCBjb3NpZ25lclB1YiA9IHBhcmFtcy5jb3NpZ25lclB1YiA/PyBwYXJhbXMucHVic1syXTtcbiAgY29uc3QgY29zaWduZXJLZXljaGFpbiA9IGJpcDMyLmZyb21CYXNlNTgoY29zaWduZXJQdWIpO1xuXG4gIGFzc2VydChzaWduZXJLZXljaGFpbik7XG4gIGNvbnN0IHdhbGxldFNpZ25lciA9IG5ldyBiaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPihrZXljaGFpbnMsIHNpZ25lcktleWNoYWluLCBjb3NpZ25lcktleWNoYWluKTtcbiAgcmV0dXJuIHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbih0eCwgcGFyYW1zLnR4SW5mby51bnNwZW50cywgd2FsbGV0U2lnbmVyLCB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBwYXJhbXMuaXNMYXN0U2lnbmF0dXJlLFxuICB9KSBhcyB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcbn1cbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkxlZ2FjeVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25MZWdhY3lUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQWtCLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBSTdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFNLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFNMUU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFdBQW1HLEVBQ25HLFFBQTRCLEVBQzVCLFlBQStELEVBQy9ELFFBQXNCLEVBQ3RCLEVBQ0UsZUFBZSxFQUNmLHlCQUF5QixHQUkxQjtJQUVELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUEwQixDQUFDO0lBQ3ZELElBQUkseUJBQXlCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUMseUJBQXlCLEdBQUcsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFFBQVEs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RSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUEyQixDQUFDO0lBQzVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFpQixTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEgsT0FBTyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRTtRQUN4RixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FBMkMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlLCBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGlzVHJpcGxlLCBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgZGVidWdMaWIgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmltcG9ydCB7IGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMgfSBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuaW1wb3J0IHsgSW5wdXRTaWduaW5nRXJyb3IsIFRyYW5zYWN0aW9uU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi9TaWduaW5nRXJyb3InO1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnTGliKCdiaXRnbzp2Mjp1dHhvJyk7XG5cbmNvbnN0IHsgaXNXYWxsZXRVbnNwZW50LCBzaWduSW5wdXRXaXRoVW5zcGVudCwgdG9PdXRwdXQgfSA9IHV0eG9saWIuYml0Z287XG5cbnR5cGUgVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IHV0eG9saWIuYml0Z28uVW5zcGVudDxUTnVtYmVyPjtcblxudHlwZSBSb290V2FsbGV0S2V5cyA9IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXM7XG5cbi8qKlxuICogU2lnbiBhbGwgaW5wdXRzIG9mIGEgd2FsbGV0IHRyYW5zYWN0aW9uIGFuZCB2ZXJpZnkgc2lnbmF0dXJlcyBhZnRlciBzaWduaW5nLlxuICogQ29sbGVjdHMgYW5kIGxvZ3Mgc2lnbmluZyBlcnJvcnMgYW5kIHZlcmlmaWNhdGlvbiBlcnJvcnMsIHRocm93cyBlcnJvciBpbiB0aGUgZW5kIGlmIGFueSBvZiB0aGVtXG4gKiBmYWlsZWQuXG4gKlxuICogQHBhcmFtIHRyYW5zYWN0aW9uIC0gd2FsbGV0IHRyYW5zYWN0aW9uIChidWlsZGVyKSB0byBiZSBzaWduZWRcbiAqIEBwYXJhbSB1bnNwZW50cyAtIHRyYW5zYWN0aW9uIHVuc3BlbnRzXG4gKiBAcGFyYW0gd2FsbGV0U2lnbmVyIC0gc2lnbmluZyBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gY29pbk5hbWUgLSBjb2luIG5hbWUgZm9yIG5ldHdvcmstc3BlY2lmaWMgbG9naWNcbiAqIEBwYXJhbSBpc0xhc3RTaWduYXR1cmUgLSBSZXR1cm5zIGZ1bGwtc2lnbmVkIHRyYW5zYWN0aW9uIHdoZW4gdHJ1ZS4gQnVpbGRzIGhhbGYtc2lnbmVkIHdoZW4gZmFsc2UuXG4gKiBAcGFyYW0gcmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyAtIExpc3Qgb2YgcmVwbGF5IHByb3RlY3Rpb24gYWRkcmVzc2VzIHRvIHNraXAgc2lnbmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4gfCB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHVuc3BlbnRzOiBVbnNwZW50PFROdW1iZXI+W10sXG4gIHdhbGxldFNpZ25lcjogdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPixcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAge1xuICAgIGlzTGFzdFNpZ25hdHVyZSxcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLFxuICB9OiB7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXM/OiBzdHJpbmdbXTtcbiAgfVxuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBjb25zdCBuZXR3b3JrID0gdHJhbnNhY3Rpb24ubmV0d29yayBhcyB1dHhvbGliLk5ldHdvcms7XG4gIGlmIChyZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzID0gZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3Nlcyhjb2luTmFtZSk7XG4gIH1cbiAgY29uc3QgcHJldk91dHB1dHMgPSB1bnNwZW50cy5tYXAoKHUpID0+IHRvT3V0cHV0KHUsIG5ldHdvcmspKTtcblxuICBsZXQgdHhCdWlsZGVyOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj47XG4gIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgdHhCdWlsZGVyID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGcm9tVHJhbnNhY3Rpb248VE51bWJlcj4odHJhbnNhY3Rpb24sIHByZXZPdXRwdXRzKTtcbiAgICBpZiAodHJhbnNhY3Rpb24uaW5zLmxlbmd0aCAhPT0gdW5zcGVudHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHRyYW5zYWN0aW9uIGlucHV0cyBtdXN0IG1hdGNoIHVuc3BlbnRzYCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gICAgdHhCdWlsZGVyID0gdHJhbnNhY3Rpb247XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHBhc3MgVXR4b1RyYW5zYWN0aW9uIG9yIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXJgKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25FcnJvcnM6IElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+W10gPSB1bnNwZW50c1xuICAgIC5tYXAoKHVuc3BlbnQ6IFVuc3BlbnQ8VE51bWJlcj4sIGlucHV0SW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMuaW5jbHVkZXModW5zcGVudC5hZGRyZXNzKSkge1xuICAgICAgICBkZWJ1ZygnU2tpcHBpbmcgc2lnbmF0dXJlIGZvciBpbnB1dCAlZCBvZiAlZCAoUlAgaW5wdXQ/KScsIGlucHV0SW5kZXggKyAxLCB1bnNwZW50cy5sZW5ndGgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzV2FsbGV0VW5zcGVudDxUTnVtYmVyPih1bnNwZW50KSkge1xuICAgICAgICByZXR1cm4gSW5wdXRTaWduaW5nRXJyb3IuZXhwZWN0ZWRXYWxsZXRVbnNwZW50PFROdW1iZXI+KGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgc2lnbklucHV0V2l0aFVuc3BlbnQ8VE51bWJlcj4odHhCdWlsZGVyLCBpbnB1dEluZGV4LCB1bnNwZW50LCB3YWxsZXRTaWduZXIpO1xuICAgICAgICBkZWJ1ZygnU3VjY2Vzc2Z1bGx5IHNpZ25lZCBpbnB1dCAlZCBvZiAlZCcsIGlucHV0SW5kZXggKyAxLCB1bnNwZW50cy5sZW5ndGgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gbmV3IElucHV0U2lnbmluZ0Vycm9yPFROdW1iZXI+KGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQsIGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcigoZSk6IGUgaXMgSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj4gPT4gZSAhPT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGlzTGFzdFNpZ25hdHVyZSA/IHR4QnVpbGRlci5idWlsZCgpIDogdHhCdWlsZGVyLmJ1aWxkSW5jb21wbGV0ZSgpO1xuXG4gIGNvbnN0IHZlcmlmeUVycm9yczogSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj5bXSA9IHNpZ25lZFRyYW5zYWN0aW9uLmluc1xuICAgIC5tYXAoKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICBjb25zdCB1bnNwZW50ID0gdW5zcGVudHNbaW5wdXRJbmRleF0gYXMgVW5zcGVudDxUTnVtYmVyPjtcbiAgICAgIGlmIChyZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzLmluY2x1ZGVzKHVuc3BlbnQuYWRkcmVzcykpIHtcbiAgICAgICAgZGVidWcoXG4gICAgICAgICAgJ1NraXBwaW5nIGlucHV0IHNpZ25hdHVyZSAlZCBvZiAlZCAodW5zcGVudCBmcm9tIHJlcGxheSBwcm90ZWN0aW9uIGFkZHJlc3Mgd2hpY2ggaXMgcGxhdGZvcm0gc2lnbmVkIG9ubHkpJyxcbiAgICAgICAgICBpbnB1dEluZGV4ICsgMSxcbiAgICAgICAgICB1bnNwZW50cy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1dhbGxldFVuc3BlbnQ8VE51bWJlcj4odW5zcGVudCkpIHtcbiAgICAgICAgcmV0dXJuIElucHV0U2lnbmluZ0Vycm9yLmV4cGVjdGVkV2FsbGV0VW5zcGVudDxUTnVtYmVyPihpbnB1dEluZGV4LCBudWxsLCB1bnNwZW50KTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHB1YmxpY0tleSA9IHdhbGxldFNpZ25lci5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KHVuc3BlbnQuY2hhaW4sIHVuc3BlbnQuaW5kZXgpLnNpZ25lci5wdWJsaWNLZXk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdXR4b2xpYi5iaXRnby52ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5PFROdW1iZXI+KHNpZ25lZFRyYW5zYWN0aW9uLCBpbnB1dEluZGV4LCBwcmV2T3V0cHV0cywgcHVibGljS2V5KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IElucHV0U2lnbmluZ0Vycm9yKGlucHV0SW5kZXgsIG51bGwsIHVuc3BlbnQsIG5ldyBFcnJvcihgaW52YWxpZCBzaWduYXR1cmVgKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVidWcoJ0ludmFsaWQgc2lnbmF0dXJlJyk7XG4gICAgICAgIHJldHVybiBuZXcgSW5wdXRTaWduaW5nRXJyb3I8VE51bWJlcj4oaW5wdXRJbmRleCwgbnVsbCwgdW5zcGVudCwgZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKChlKTogZSBpcyBJbnB1dFNpZ25pbmdFcnJvcjxUTnVtYmVyPiA9PiBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGlmIChzaWduRXJyb3JzLmxlbmd0aCB8fCB2ZXJpZnlFcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFRyYW5zYWN0aW9uU2lnbmluZ0Vycm9yKHNpZ25FcnJvcnMsIHZlcmlmeUVycm9ycyk7XG4gIH1cblxuICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduTGVnYWN5VHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgc2lnbmVyS2V5Y2hhaW46IEJJUDMySW50ZXJmYWNlIHwgdW5kZWZpbmVkLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICBwYXJhbXM6IHtcbiAgICBpc0xhc3RTaWduYXR1cmU6IGJvb2xlYW47XG4gICAgc2lnbmluZ1N0ZXA6ICdzaWduZXJOb25jZScgfCAnY29zaWduZXJOb25jZScgfCAnc2lnbmVyU2lnbmF0dXJlJyB8IHVuZGVmaW5lZDtcbiAgICB0eEluZm86IHsgdW5zcGVudHM/OiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB9IHwgdW5kZWZpbmVkO1xuICAgIHB1YnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNvc2lnbmVyUHViOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbik6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3dpdGNoIChwYXJhbXMuc2lnbmluZ1N0ZXApIHtcbiAgICBjYXNlICdzaWduZXJOb25jZSc6XG4gICAgY2FzZSAnY29zaWduZXJOb25jZSc6XG4gICAgICAvKipcbiAgICAgICAqIEluIGNlcnRhaW4gY2FzZXMsIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IG5vdCBrbm93IHdoZXRoZXIgdGhlIHR4SGV4IGNvbnRhaW5zIGEgcHNidCB3aXRoIHRhcHJvb3Qga2V5IHBhdGggc3BlbmQgaW5wdXQocykuXG4gICAgICAgKiBJbnN0ZWFkIG9mIHRocm93aW5nIGVycm9yLCBuby1vcCBhbmQgcmV0dXJuIHRoZSB0eEhleC4gU28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBzYW1lIHNlcXVlbmNlLlxuICAgICAgICovXG4gICAgICByZXR1cm4gdHg7XG4gIH1cblxuICBpZiAodHguaW5zLmxlbmd0aCAhPT0gcGFyYW1zLnR4SW5mbz8udW5zcGVudHM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbGVuZ3RoIG9mIHVuc3BlbnRzIGFycmF5IHNob3VsZCBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGlucHV0cycpO1xuICB9XG5cbiAgaWYgKCFwYXJhbXMucHVicyB8fCAhaXNUcmlwbGUocGFyYW1zLnB1YnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgeHB1YiBhcnJheWApO1xuICB9XG5cbiAgY29uc3Qga2V5Y2hhaW5zID0gcGFyYW1zLnB1YnMubWFwKChwdWIpID0+IGJpcDMyLmZyb21CYXNlNTgocHViKSkgYXMgVHJpcGxlPEJJUDMySW50ZXJmYWNlPjtcbiAgY29uc3QgY29zaWduZXJQdWIgPSBwYXJhbXMuY29zaWduZXJQdWIgPz8gcGFyYW1zLnB1YnNbMl07XG4gIGNvbnN0IGNvc2lnbmVyS2V5Y2hhaW4gPSBiaXAzMi5mcm9tQmFzZTU4KGNvc2lnbmVyUHViKTtcblxuICBhc3NlcnQoc2lnbmVyS2V5Y2hhaW4pO1xuICBjb25zdCB3YWxsZXRTaWduZXIgPSBuZXcgYml0Z28uV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4oa2V5Y2hhaW5zLCBzaWduZXJLZXljaGFpbiwgY29zaWduZXJLZXljaGFpbik7XG4gIHJldHVybiBzaWduQW5kVmVyaWZ5V2FsbGV0VHJhbnNhY3Rpb24odHgsIHBhcmFtcy50eEluZm8udW5zcGVudHMsIHdhbGxldFNpZ25lciwgY29pbk5hbWUsIHtcbiAgICBpc0xhc3RTaWduYXR1cmU6IHBhcmFtcy5pc0xhc3RTaWduYXR1cmUsXG4gIH0pIGFzIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+O1xufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BIP32Interface } from '@bitgo-beta/secp256k1';
|
|
2
2
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
3
|
import { fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
4
|
+
import { UtxoCoinName } from '../../names';
|
|
4
5
|
import { Musig2Participant } from './musig2';
|
|
5
6
|
import { ReplayProtectionKeys } from './signPsbtWasm';
|
|
6
7
|
/**
|
|
@@ -9,7 +10,7 @@ import { ReplayProtectionKeys } from './signPsbtWasm';
|
|
|
9
10
|
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys | undefined, replayProtection: ReplayProtectionKeys | undefined): utxolib.bitgo.UtxoPsbt;
|
|
10
11
|
export declare function signAndVerifyPsbt(psbt: fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): fixedScriptWallet.BitGoPsbt;
|
|
11
12
|
export declare function signAndVerifyPsbt(psbt: utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt, signerKeychain: BIP32Interface, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys): utxolib.bitgo.UtxoPsbt | fixedScriptWallet.BitGoPsbt;
|
|
12
|
-
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,
|
|
13
|
+
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: {
|
|
13
14
|
walletId: string | undefined;
|
|
14
15
|
txInfo: {
|
|
15
16
|
unspents?: utxolib.bitgo.Unspent<bigint | number>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,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,EAC9B,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,EAC9B,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,EAC9B,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAgBxD,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,
|
|
1
|
+
{"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,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,EAC9B,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,EAC9B,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,EAC9B,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAgBxD,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,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5E,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"}
|
|
@@ -17,7 +17,7 @@ export function signAndVerifyPsbt(psbt, signerKeychain, rootWalletKeys, replayPr
|
|
|
17
17
|
return signAndVerifyPsbtWasm(psbt, signerKeychain, rootWalletKeys, replayProtection);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
export async function signTransaction(coin, tx, signerKeychain,
|
|
20
|
+
export async function signTransaction(coin, tx, signerKeychain, coinName, params) {
|
|
21
21
|
let isLastSignature = false;
|
|
22
22
|
if (_.isBoolean(params.isLastSignature)) {
|
|
23
23
|
// if build is called instead of buildIncomplete, no signature placeholders are left in the sig script
|
|
@@ -40,7 +40,7 @@ export async function signTransaction(coin, tx, signerKeychain, network, params)
|
|
|
40
40
|
const rootWalletKeys = fixedScriptWallet.RootWalletKeys.fromXpubs(params.pubs);
|
|
41
41
|
const signedPsbt = await signPsbtWithMusig2ParticipantWasm(coin, tx, signerKeychain, rootWalletKeys, {
|
|
42
42
|
replayProtection: {
|
|
43
|
-
publicKeys: getReplayProtectionPubkeys(
|
|
43
|
+
publicKeys: getReplayProtectionPubkeys(coinName),
|
|
44
44
|
},
|
|
45
45
|
signingStep: params.signingStep,
|
|
46
46
|
walletId: params.walletId,
|
|
@@ -51,7 +51,7 @@ export async function signTransaction(coin, tx, signerKeychain, network, params)
|
|
|
51
51
|
}
|
|
52
52
|
return signedPsbt;
|
|
53
53
|
}
|
|
54
|
-
return signLegacyTransaction(tx, signerKeychain, {
|
|
54
|
+
return signLegacyTransaction(tx, signerKeychain, coinName, {
|
|
55
55
|
isLastSignature,
|
|
56
56
|
signingStep: params.signingStep,
|
|
57
57
|
txInfo: params.txInfo,
|
|
@@ -59,4 +59,4 @@ export async function signTransaction(coin, tx, signerKeychain, network, params)
|
|
|
59
59
|
cosignerPub: params.cosignerPub,
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFLckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLGlCQUFpQixJQUFJLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHFCQUFxQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBdUJoRSxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLElBQTBELEVBQzFELGNBQThCLEVBQzlCLGNBQTRELEVBQzVELGdCQUFrRDtJQUVsRCxJQUFJLElBQUksWUFBWSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsY0FBYyxFQUFFLCtDQUErQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGlEQUFpRCxDQUFDLENBQUM7UUFDNUUsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBR25DLElBQWdHLEVBQ2hHLEVBQUssRUFDTCxjQUEwQyxFQUMxQyxRQUFzQixFQUN0QixNQVNDO0lBSUQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxzR0FBc0c7UUFDdEcsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksRUFBRSxZQUFZLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxNQUFNLG9DQUFvQyxDQUMzRCxJQUFpRCxFQUNqRCxFQUFFLEVBQ0YsY0FBYyxFQUNkO1lBQ0UsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtTQUMxQixDQUNGLENBQUM7UUFDRixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxJQUFJLEVBQUUsWUFBWSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDdkQsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0UsTUFBTSxVQUFVLEdBQUcsTUFBTSxpQ0FBaUMsQ0FDeEQsSUFBc0QsRUFDdEQsRUFBRSxFQUNGLGNBQWMsRUFDZCxjQUFjLEVBQ2Q7WUFDRSxnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQzthQUNqRDtZQUNELFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FDRixDQUFDO1FBQ0YsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8scUJBQXFCLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUU7UUFDekQsZUFBZTtRQUNmLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztLQUNoQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBpc1RyaXBsZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBNdXNpZzJQYXJ0aWNpcGFudCB9IGZyb20gJy4vbXVzaWcyJztcbmltcG9ydCB7IHNpZ25MZWdhY3lUcmFuc2FjdGlvbiB9IGZyb20gJy4vc2lnbkxlZ2FjeVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IHNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50VXR4b2xpYiwgc2lnbkFuZFZlcmlmeVBzYnQgYXMgc2lnbkFuZFZlcmlmeVBzYnRVdHhvbGliIH0gZnJvbSAnLi9zaWduUHNidFV0eG9saWInO1xuaW1wb3J0IHsgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtLCBzaWduQW5kVmVyaWZ5UHNidFdhc20sIFJlcGxheVByb3RlY3Rpb25LZXlzIH0gZnJvbSAnLi9zaWduUHNidFdhc20nO1xuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMgfSBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuXG4vKipcbiAqIFNpZ24gYW5kIHZlcmlmeSBhIFBTQlQgdXNpbmcgZWl0aGVyIHV0eG9saWIgb3Igd2FzbS11dHhvIGRlcGVuZGluZyBvbiB0aGUgUFNCVCB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVBzYnQoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSxcbiAgcm9vdFdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzIHwgdW5kZWZpbmVkLFxuICByZXBsYXlQcm90ZWN0aW9uOiBSZXBsYXlQcm90ZWN0aW9uS2V5cyB8IHVuZGVmaW5lZFxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbmV4cG9ydCBmdW5jdGlvbiBzaWduQW5kVmVyaWZ5UHNidChcbiAgcHNidDogZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UsXG4gIHJvb3RXYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyxcbiAgcmVwbGF5UHJvdGVjdGlvbjogUmVwbGF5UHJvdGVjdGlvbktleXNcbik6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidDtcbmV4cG9ydCBmdW5jdGlvbiBzaWduQW5kVmVyaWZ5UHNidChcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IEJJUDMySW50ZXJmYWNlLFxuICByb290V2FsbGV0S2V5czogZml4ZWRTY3JpcHRXYWxsZXQuUm9vdFdhbGxldEtleXMsXG4gIHJlcGxheVByb3RlY3Rpb246IFJlcGxheVByb3RlY3Rpb25LZXlzXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHwgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25BbmRWZXJpZnlQc2J0KFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHwgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LFxuICBzaWduZXJLZXljaGFpbjogQklQMzJJbnRlcmZhY2UsXG4gIHJvb3RXYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyB8IHVuZGVmaW5lZCxcbiAgcmVwbGF5UHJvdGVjdGlvbjogUmVwbGF5UHJvdGVjdGlvbktleXMgfCB1bmRlZmluZWRcbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQgfCBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQge1xuICBpZiAocHNidCBpbnN0YW5jZW9mIGJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgcmV0dXJuIHNpZ25BbmRWZXJpZnlQc2J0VXR4b2xpYihwc2J0LCBzaWduZXJLZXljaGFpbik7XG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0KHJvb3RXYWxsZXRLZXlzLCAncm9vdFdhbGxldEtleXMgcmVxdWlyZWQgZm9yIHdhc20tdXR4byBzaWduaW5nJyk7XG4gICAgYXNzZXJ0KHJlcGxheVByb3RlY3Rpb24sICdyZXBsYXlQcm90ZWN0aW9uIHJlcXVpcmVkIGZvciB3YXNtLXV0eG8gc2lnbmluZycpO1xuICAgIHJldHVybiBzaWduQW5kVmVyaWZ5UHNidFdhc20ocHNidCwgc2lnbmVyS2V5Y2hhaW4sIHJvb3RXYWxsZXRLZXlzLCByZXBsYXlQcm90ZWN0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblRyYW5zYWN0aW9uPFxuICBUIGV4dGVuZHMgdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludCB8IG51bWJlcj4gfCBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnRcbj4oXG4gIGNvaW46IE11c2lnMlBhcnRpY2lwYW50PHV0eG9saWIuYml0Z28uVXR4b1BzYnQ+IHwgTXVzaWcyUGFydGljaXBhbnQ8Zml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PixcbiAgdHg6IFQsXG4gIHNpZ25lcktleWNoYWluOiBCSVAzMkludGVyZmFjZSB8IHVuZGVmaW5lZCxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgcGFyYW1zOiB7XG4gICAgd2FsbGV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB0eEluZm86IHsgdW5zcGVudHM/OiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8YmlnaW50IHwgbnVtYmVyPltdIH0gfCB1bmRlZmluZWQ7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHNpZ25pbmdTdGVwOiAnc2lnbmVyTm9uY2UnIHwgJ2Nvc2lnbmVyTm9uY2UnIHwgJ3NpZ25lclNpZ25hdHVyZScgfCB1bmRlZmluZWQ7XG4gICAgLyoqIGRlcHJlY2F0ZWQgKi9cbiAgICBhbGxvd05vblNlZ3dpdFNpZ25pbmdXaXRob3V0UHJldlR4OiBib29sZWFuO1xuICAgIHB1YnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNvc2lnbmVyUHViOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbik6IFByb21pc2U8XG4gIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgfCB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxiaWdpbnQgfCBudW1iZXI+IHwgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0IHwgQnVmZmVyXG4+IHtcbiAgbGV0IGlzTGFzdFNpZ25hdHVyZSA9IGZhbHNlO1xuICBpZiAoXy5pc0Jvb2xlYW4ocGFyYW1zLmlzTGFzdFNpZ25hdHVyZSkpIHtcbiAgICAvLyBpZiBidWlsZCBpcyBjYWxsZWQgaW5zdGVhZCBvZiBidWlsZEluY29tcGxldGUsIG5vIHNpZ25hdHVyZSBwbGFjZWhvbGRlcnMgYXJlIGxlZnQgaW4gdGhlIHNpZyBzY3JpcHRcbiAgICBpc0xhc3RTaWduYXR1cmUgPSBwYXJhbXMuaXNMYXN0U2lnbmF0dXJlO1xuICB9XG5cbiAgaWYgKHR4IGluc3RhbmNlb2YgYml0Z28uVXR4b1BzYnQpIHtcbiAgICBjb25zdCBzaWduZWRQc2J0ID0gYXdhaXQgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRVdHhvbGliKFxuICAgICAgY29pbiBhcyBNdXNpZzJQYXJ0aWNpcGFudDx1dHhvbGliLmJpdGdvLlV0eG9Qc2J0PixcbiAgICAgIHR4LFxuICAgICAgc2lnbmVyS2V5Y2hhaW4sXG4gICAgICB7XG4gICAgICAgIHNpZ25pbmdTdGVwOiBwYXJhbXMuc2lnbmluZ1N0ZXAsXG4gICAgICAgIHdhbGxldElkOiBwYXJhbXMud2FsbGV0SWQsXG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAoaXNMYXN0U2lnbmF0dXJlKSB7XG4gICAgICBzaWduZWRQc2J0LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gICAgICByZXR1cm4gc2lnbmVkUHNidC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25lZFBzYnQ7XG4gIH0gZWxzZSBpZiAodHggaW5zdGFuY2VvZiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQpIHtcbiAgICBhc3NlcnQocGFyYW1zLnB1YnMsICdwdWJzIGFyZSByZXF1aXJlZCBmb3IgZml4ZWQgc2NyaXB0IHNpZ25pbmcnKTtcbiAgICBhc3NlcnQoaXNUcmlwbGUocGFyYW1zLnB1YnMpLCAncHVicyBtdXN0IGJlIGEgdHJpcGxlJyk7XG4gICAgY29uc3Qgcm9vdFdhbGxldEtleXMgPSBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cy5mcm9tWHB1YnMocGFyYW1zLnB1YnMpO1xuICAgIGNvbnN0IHNpZ25lZFBzYnQgPSBhd2FpdCBzaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudFdhc20oXG4gICAgICBjb2luIGFzIE11c2lnMlBhcnRpY2lwYW50PGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidD4sXG4gICAgICB0eCxcbiAgICAgIHNpZ25lcktleWNoYWluLFxuICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICB7XG4gICAgICAgIHJlcGxheVByb3RlY3Rpb246IHtcbiAgICAgICAgICBwdWJsaWNLZXlzOiBnZXRSZXBsYXlQcm90ZWN0aW9uUHVia2V5cyhjb2luTmFtZSksXG4gICAgICAgIH0sXG4gICAgICAgIHNpZ25pbmdTdGVwOiBwYXJhbXMuc2lnbmluZ1N0ZXAsXG4gICAgICAgIHdhbGxldElkOiBwYXJhbXMud2FsbGV0SWQsXG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAoaXNMYXN0U2lnbmF0dXJlKSB7XG4gICAgICBzaWduZWRQc2J0LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oc2lnbmVkUHNidC5leHRyYWN0VHJhbnNhY3Rpb24oKSk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRQc2J0O1xuICB9XG5cbiAgcmV0dXJuIHNpZ25MZWdhY3lUcmFuc2FjdGlvbih0eCwgc2lnbmVyS2V5Y2hhaW4sIGNvaW5OYW1lLCB7XG4gICAgaXNMYXN0U2lnbmF0dXJlLFxuICAgIHNpZ25pbmdTdGVwOiBwYXJhbXMuc2lnbmluZ1N0ZXAsXG4gICAgdHhJbmZvOiBwYXJhbXMudHhJbmZvLFxuICAgIHB1YnM6IHBhcmFtcy5wdWJzLFxuICAgIGNvc2lnbmVyUHViOiBwYXJhbXMuY29zaWduZXJQdWIsXG4gIH0pO1xufVxuIl19
|
|
@@ -143,7 +143,7 @@ export async function verifyTransaction(coin, bitgo, params) {
|
|
|
143
143
|
throw new Error(`txPrebuild.txHex not set`);
|
|
144
144
|
}
|
|
145
145
|
const inputs = isPsbt
|
|
146
|
-
? getPsbtTxInputs(txPrebuild.txHex, coin.
|
|
146
|
+
? getPsbtTxInputs(txPrebuild.txHex, coin.name).map((v) => ({
|
|
147
147
|
...v,
|
|
148
148
|
value: utxolib.bitgo.toTNumber(v.value, coin.amountType),
|
|
149
149
|
}))
|
|
@@ -157,4 +157,4 @@ export async function verifyTransaction(coin, bitgo, params) {
|
|
|
157
157
|
}
|
|
158
158
|
return true;
|
|
159
159
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvdmVyaWZ5VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFhLHFCQUFxQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxnQkFBMEI7SUFDL0MsaUdBQWlHO0lBQ2pHLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxrRkFBa0Y7SUFDbEYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUF5QztJQUV6QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENB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RUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLDBHQUEwRztJQUMxRyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMvQixDQUFDLEdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEcsTUFBTSxHQUFHLEdBQUcsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUV2QyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLFlBQVksOENBQThDLFdBQVcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQ3BILENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgVHhJbnRlbnRNaXNtYXRjaEVycm9yLCBJQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcywgdmVyaWZ5S2V5U2lnbmF0dXJlLCB2ZXJpZnlVc2VyUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdmVyaWZ5S2V5JztcbmltcG9ydCB7IGdldFBzYnRUeElucHV0cywgZ2V0VHhJbnB1dHMgfSBmcm9tICcuLi9mZXRjaElucHV0cyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygnYml0Z286YWJzdHJhY3QtdXR4bzp2ZXJpZnlUcmFuc2FjdGlvbicpO1xuXG4vKipcbiAqIEdldCB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGxpbWl0IGZvciBwYXktYXMteW91LWdvIG91dHB1dHNcbiAqXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGdldFBheUdvTGltaXQoYWxsb3dQYXlnb091dHB1dD86IGJvb2xlYW4pOiBudW1iZXIge1xuICAvLyBhbGxvd2luZyBwYXlnbyBvdXRwdXRzIG5lZWRzIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IGRpc2FsbG93IHBheWdvIG91dHB1dHMgaWYgdGhlXG4gIC8vIHJlbGV2YW50IHZlcmlmaWNhdGlvbiBvcHRpb24gaXMgYm90aCBzZXQgYW5kIGZhbHNlXG4gIGlmICghXy5pc05pbChhbGxvd1BheWdvT3V0cHV0KSAmJiAhYWxsb3dQYXlnb091dHB1dCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIDE1MCBiYXNpcyBwb2ludHMgaXMgdGhlIGFic29sdXRlIHBlcm1pdHRlZCBtYXhpbXVtIGlmIHBheWdvIG91dHB1dHMgYXJlIGFsbG93ZWRcbiAgcmV0dXJuIDAuMDE1O1xufVxuXG4vKipcbiAqIFZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgY29tcGxpZXMgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uIGZvciBmaXhlZC1zY3JpcHQgd2FsbGV0c1xuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZm9yIHRyYWRpdGlvbmFsIFVUWE8gY29pbnMgdXNpbmcgZml4ZWQgc2NyaXB0c1xuICogKG5vbi1kZXNjcmlwdG9yIHdhbGxldHMpLiBJdCB2YWxpZGF0ZXMga2V5Y2hhaW5zLCBzaWduYXR1cmVzLCBvdXRwdXRzLCBhbmQgYW1vdW50cy5cbiAqXG4gKiBAcGFyYW0gY29pbiAtIFRoZSBVVFhPIGNvaW4gaW5zdGFuY2VcbiAqIEBwYXJhbSBiaXRnbyAtIEJpdEdvIEFQSSBpbnN0YW5jZSBmb3IgbmV0d29yayBjYWxsc1xuICogQHBhcmFtIHBhcmFtcyAtIFZlcmlmaWNhdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gcGFyYW1zLnR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyBwYXNzZWQgdG8gc2VuZFxuICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIC0gUHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHNlcnZlclxuICogQHBhcmFtIHBhcmFtcy53YWxsZXQgLSBXYWxsZXQgb2JqZWN0IHRvIG9idGFpbiBrZXlzIHRvIHZlcmlmeSBhZ2FpbnN0XG4gKiBAcGFyYW0gcGFyYW1zLnZlcmlmaWNhdGlvbiAtIFZlcmlmaWNhdGlvbiBvcHRpb25zIChkaXNhYmxlTmV0d29ya2luZywga2V5Y2hhaW5zLCBhZGRyZXNzZXMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlcUlkIC0gT3B0aW9uYWwgcmVxdWVzdCBJRCBmb3IgbG9nZ2luZ1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmVyaWZpY2F0aW9uIHBhc3Nlc1xuICogQHRocm93cyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfSBpZiB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHR4RXhwbGFuYXRpb24gPSBhd2FpdCBUeEludGVudE1pc21hdGNoRXJyb3IudHJ5R2V0VHhFeHBsYW5hdGlvbihjb2luIGFzIHVua25vd24gYXMgSUJhc2VDb2luLCB0eFByZWJ1aWxkKTtcblxuICAvLyBIZWxwZXIgdG8gdGhyb3cgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHdpdGggY29uc2lzdGVudCBjb250ZXh0XG4gIGNvbnN0IHRocm93VHhNaXNtYXRjaCA9IChtZXNzYWdlOiBzdHJpbmcpOiBuZXZlciA9PiB7XG4gICAgdGhyb3cgbmV3IFR4SW50ZW50TWlzbWF0Y2hFcnJvcihtZXNzYWdlLCByZXFJZCwgW3R4UGFyYW1zXSwgdHhQcmVidWlsZC50eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gIH07XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykgJiYgIV8uaXNCb29sZWFuKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBpc1BzYnQgPSB0eFByZWJ1aWxkLnR4SGV4ICYmIHV0eG9saWIuYml0Z28uaXNQc2J0KHR4UHJlYnVpbGQudHhIZXgpO1xuICBpZiAoaXNQc2J0ICYmIHR4UHJlYnVpbGQudHhJbmZvPy51bnNwZW50cykge1xuICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBoYXZlIHVuc3BlbnRzIGluIHR4SW5mbyBmb3IgcHNidCcpO1xuICB9XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG4gIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uOiBQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPiA9IGF3YWl0IGNvaW4ucGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyPih7XG4gICAgdHhQYXJhbXMsXG4gICAgdHhQcmVidWlsZCxcbiAgICB3YWxsZXQsXG4gICAgdmVyaWZpY2F0aW9uLFxuICAgIHJlcUlkLFxuICB9KTtcblxuICBjb25zdCBrZXljaGFpbnMgPSBwYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnM7XG5cbiAgLy8gdmVyaWZ5IHRoYXQgdGhlIGNsYWltZWQgdXNlciBwdWJsaWMga2V5IGNvcnJlc3BvbmRzIHRvIHRoZSB3YWxsZXQncyB1c2VyIHByaXZhdGUga2V5XG4gIGxldCB1c2VyUHVibGljS2V5VmVyaWZpZWQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICAvLyB2ZXJpZnkgdGhlIHVzZXIgcHVibGljIGtleSBtYXRjaGVzIHRoZSBwcml2YXRlIGtleSAtIHRoaXMgd2lsbCB0aHJvdyBpZiB0aGVyZSBpcyBubyBtYXRjaFxuICAgIHVzZXJQdWJsaWNLZXlWZXJpZmllZCA9IHZlcmlmeVVzZXJQdWJsaWNLZXkoYml0Z28sIHsgdXNlcktleWNoYWluOiBrZXljaGFpbnMudXNlciwgZGlzYWJsZU5ldHdvcmtpbmcsIHR4UGFyYW1zIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byB2ZXJpZnkgdXNlciBwdWJsaWMga2V5IScsIGUpO1xuICB9XG5cbiAgLy8gbGV0J3MgdmVyaWZ5IHRoZXNlIGtleWNoYWluc1xuICBjb25zdCBrZXlTaWduYXR1cmVzID0gcGFyc2VkVHJhbnNhY3Rpb24ua2V5U2lnbmF0dXJlcztcbiAgaWYgKCFfLmlzRW1wdHkoa2V5U2lnbmF0dXJlcykpIHtcbiAgICBjb25zdCB2ZXJpZnkgPSAoa2V5LCBwdWIpID0+IHtcbiAgICAgIGlmICgha2V5Y2hhaW5zLnVzZXIgfHwgIWtleWNoYWlucy51c2VyLnB1Yikge1xuICAgICAgICB0aHJvd1R4TWlzbWF0Y2goJ21pc3NpbmcgdXNlciBrZXljaGFpbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcmlmeUtleVNpZ25hdHVyZSh7XG4gICAgICAgIHVzZXJLZXljaGFpbjoga2V5Y2hhaW5zLnVzZXIgYXMgeyBwdWI6IHN0cmluZyB9LFxuICAgICAgICBrZXljaGFpblRvVmVyaWZ5OiBrZXksXG4gICAgICAgIGtleVNpZ25hdHVyZTogcHViLFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBpc0JhY2t1cEtleVNpZ25hdHVyZVZhbGlkID0gdmVyaWZ5KGtleWNoYWlucy5iYWNrdXAsIGtleVNpZ25hdHVyZXMuYmFja3VwUHViKTtcbiAgICBjb25zdCBpc0JpdGdvS2V5U2lnbmF0dXJlVmFsaWQgPSB2ZXJpZnkoa2V5Y2hhaW5zLmJpdGdvLCBrZXlTaWduYXR1cmVzLmJpdGdvUHViKTtcbiAgICBpZiAoIWlzQmFja3VwS2V5U2lnbmF0dXJlVmFsaWQgfHwgIWlzQml0Z29LZXlTaWduYXR1cmVWYWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWNvbmRhcnkgcHVibGljIGtleSBzaWduYXR1cmVzIGludmFsaWQnKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCBiYWNrdXAgYW5kIGJpdGdvIGtleSBzaWduYXR1cmVzJyk7XG4gIH0gZWxzZSBpZiAoIWRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgLy8gdGhlc2Uga2V5cyB3ZXJlIG9idGFpbmVkIG9ubGluZSBhbmQgdGhlaXIgc2lnbmF0dXJlcyB3ZXJlIG5vdCB2ZXJpZmllZFxuICAgIC8vIHRoaXMgY291bGQgYmUgZGFuZ2Vyb3VzXG4gICAgY29uc29sZS5sb2coJ3Vuc2lnbmVkIGtleXMgb2J0YWluZWQgb25saW5lIGFyZSBiZWluZyB1c2VkIGZvciBhZGRyZXNzIHZlcmlmaWNhdGlvbicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZFRyYW5zYWN0aW9uLm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uKSB7XG4gICAgaWYgKCFrZXljaGFpbnMudXNlciB8fCAhdXNlclB1YmxpY0tleVZlcmlmaWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHJlcXVpcmVzIHZlcmlmaWNhdGlvbiBvZiB1c2VyIHB1YmxpYyBrZXksIGJ1dCBpdCB3YXMgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCA9IHZlcmlmeUN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMocGFyc2VkVHJhbnNhY3Rpb24sIGtleWNoYWlucy51c2VyKTtcbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndHJhbnNhY3Rpb24gcmVxdWlyZXMgdmVyaWZpY2F0aW9uIG9mIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMsIGJ1dCB0aGV5IHdlcmUgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJ1xuICAgICAgKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCB1c2VyIHB1YmxpYyBrZXkgYW5kIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMnKTtcbiAgfVxuXG4gIGNvbnN0IG1pc3NpbmdPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ubWlzc2luZ091dHB1dHM7XG4gIGlmIChtaXNzaW5nT3V0cHV0cy5sZW5ndGggIT09IDApIHtcbiAgICAvLyB0aGVyZSBhcmUgc29tZSBvdXRwdXRzIGluIHRoZSByZWNpcGllbnRzIGxpc3QgdGhhdCBoYXZlIG5vdCBtYWRlIGl0IGludG8gdGhlIGFjdHVhbCB0cmFuc2FjdGlvblxuICAgIHRocm93VHhNaXNtYXRjaCgnZXhwZWN0ZWQgb3V0cHV0cyBtaXNzaW5nIGluIHRyYW5zYWN0aW9uIHByZWJ1aWxkJyk7XG4gIH1cblxuICBjb25zdCBpbnRlbmRlZEV4dGVybmFsU3BlbmQgPSBwYXJzZWRUcmFuc2FjdGlvbi5leHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ7XG5cbiAgLy8gdGhpcyBpcyBhIGxpbWl0IHdlIGltcG9zZSBmb3IgdGhlIHRvdGFsIHZhbHVlIHRoYXQgaXMgYW1lbmRlZCB0byB0aGUgdHJhbnNhY3Rpb24gYmV5b25kIHdoYXQgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWRcbiAgY29uc3QgcGF5QXNZb3VHb0xpbWl0ID0gbmV3IEJpZ051bWJlcihnZXRQYXlHb0xpbWl0KHZlcmlmaWNhdGlvbi5hbGxvd1BheWdvT3V0cHV0KSkubXVsdGlwbGllZEJ5KFxuICAgIGludGVuZGVkRXh0ZXJuYWxTcGVuZC50b1N0cmluZygpXG4gICk7XG5cbiAgLypcbiAgU29tZSBleHBsYW5hdGlvbiBmb3Igd2h5IHdlJ3JlIGRvaW5nIHdoYXQgd2UncmUgZG9pbmc6XG4gIFNvbWUgY3VzdG9tZXJzIHdpbGwgaGF2ZSBhbiBvdXRwdXQgdG8gQml0R28ncyBQQVlHbyB3YWxsZXQgYWRkZWQgdG8gdGhlaXIgdHJhbnNhY3Rpb24sIGFuZCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yXG4gIGl0IGhlcmUuIFRvIHByb3RlY3Qgc29tZW9uZSB0YW1wZXJpbmcgd2l0aCB0aGUgb3V0cHV0IHRvIG1ha2UgaXQgc2VuZCBtb3JlIHRoYW4gaXQgc2hvdWxkIHRvIEJpdEdvLCB3ZSBkZWZpbmUgYVxuICB0aHJlc2hvbGQgZm9yIHRoZSBvdXRwdXQncyB2YWx1ZSBhYm92ZSB3aGljaCB3ZSdsbCB0aHJvdyBhbiBlcnJvciwgYmVjYXVzZSB0aGUgcGF5Z28gb3V0cHV0IHNob3VsZCBuZXZlciBiZSB0aGF0XG4gIGhpZ2guXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IG5vbkNoYW5nZUFtb3VudCA9IG5ldyBCaWdOdW1iZXIocGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LnRvU3RyaW5nKCkpO1xuXG4gIGRlYnVnKFxuICAgICdJbnRlbmRlZCBzcGVuZCBpcyAlcywgTm9uLWNoYW5nZSBhbW91bnQgaXMgJXMsIHBheWdvIGxpbWl0IGlzICVzJyxcbiAgICBpbnRlbmRlZEV4dGVybmFsU3BlbmQudG9TdHJpbmcoKSxcbiAgICBub25DaGFuZ2VBbW91bnQudG9TdHJpbmcoKSxcbiAgICBwYXlBc1lvdUdvTGltaXQudG9TdHJpbmcoKVxuICApO1xuXG4gIC8vIFRoZXJlIGFyZSB0d28gaW5zdGFuY2VzIHdoZXJlIHdlIHdpbGwgZ2V0IGludG8gdGhpcyBwb2ludCBoZXJlXG4gIGlmIChub25DaGFuZ2VBbW91bnQuZ3QocGF5QXNZb3VHb0xpbWl0KSkge1xuICAgIGlmIChpc1BzYnQgJiYgcGFyc2VkVHJhbnNhY3Rpb24uY3VzdG9tQ2hhbmdlKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgYSBjdXN0b20gY2hhbmdlIGFkZHJlc3Mgb24gYSB3YWxsZXQgYW5kIHdlIGFyZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIHdpdGggYSBQU0JULCB3ZSBkbyBub3QgaGF2ZSB0aGUgbWV0YWRhdGEgdG8gdmVyaWZ5IHRoZSBhZGRyZXNzIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0LCBub3JcbiAgICAgIC8vIGNhbiB3ZSBmZXRjaCB0aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIG90aGVyIHdhbGxldCBiZWNhdXNlIHdlIG1heSBub3QgaGF2ZSB0aGUgY3JlZGVudGlhbHMuIFRoZXJlZm9yZSxcbiAgICAgIC8vIHdlIHdpbGwgbm90IHRocm93IGFuIGVycm9yIGhlcmUsIGJ1dCB3ZSB3aWxsIGxvZyBhIHdhcm5pbmcuXG4gICAgICBkZWJ1ZyhgY2Fubm90IHZlcmlmeSBzb21lIG9mIHRoZSBhZGRyZXNzZXMgYmVjYXVzZSBpdCBiZWxvbmdzIHRvIGEgc2VwYXJhdGUgd2FsbGV0YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZSBhZGRpdGlvbmFsIGV4dGVybmFsIG91dHB1dHMgY2FuIG9ubHkgYmUgQml0R28ncyBwYXktYXMteW91LWdvIGZlZSwgYnV0IHdlIGNhbm5vdCB2ZXJpZnkgdGhlIHdhbGxldCBhZGRyZXNzXG4gICAgICAvLyB0aGVyZSBhcmUgc29tZSBhZGRyZXNzZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YgaW50ZW5kZWQgcmVjaXBpZW50cyB0aGF0IGFyZSBub3QgY2hhbmdlIGFkZHJlc3Nlc1xuICAgICAgdGhyb3dUeE1pc21hdGNoKCdwcmVidWlsZCBhdHRlbXB0cyB0byBzcGVuZCB0byB1bmludGVuZGVkIGV4dGVybmFsIHJlY2lwaWVudHMnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbGxPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ub3V0cHV0cztcbiAgaWYgKCF0eFByZWJ1aWxkLnR4SGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkLnR4SGV4IG5vdCBzZXRgKTtcbiAgfVxuICBjb25zdCBpbnB1dHMgPSBpc1BzYnRcbiAgICA/IGdldFBzYnRUeElucHV0cyh0eFByZWJ1aWxkLnR4SGV4LCBjb2luLm5ldHdvcmspLm1hcCgodikgPT4gKHtcbiAgICAgICAgLi4udixcbiAgICAgICAgdmFsdWU6IHV0eG9saWIuYml0Z28udG9UTnVtYmVyKHYudmFsdWUsIGNvaW4uYW1vdW50VHlwZSksXG4gICAgICB9KSlcbiAgICA6IGF3YWl0IGdldFR4SW5wdXRzKHsgdHhQcmVidWlsZCwgYml0Z28sIGNvaW4sIGRpc2FibGVOZXR3b3JraW5nLCByZXFJZCB9KTtcbiAgLy8gY29pbnMgKGRvZ2UpIHRoYXQgY2FuIGV4Y2VlZCBudW1iZXIgbGltaXRzIChhbmQgdGh1cyB3aWxsIHVzZSBiaWdpbnQpIHdpbGwgaGF2ZSB0aGUgYHZhbHVlU3RyaW5nYCBmaWVsZFxuICBjb25zdCBpbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoXG4gICAgKHN1bTogYmlnaW50LCBpKSA9PiBzdW0gKyBCaWdJbnQoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IGkudmFsdWVTdHJpbmcgOiBpLnZhbHVlKSxcbiAgICBCaWdJbnQoMClcbiAgKTtcbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gYWxsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvOiBPdXRwdXQpID0+IHN1bSArIEJpZ0ludChvLmFtb3VudCksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IGZlZSA9IGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50O1xuXG4gIGlmIChmZWUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGF0dGVtcHRpbmcgdG8gc3BlbmQgJHtvdXRwdXRBbW91bnR9IHNhdG9zaGlzLCB3aGljaCBleGNlZWRzIHRoZSBpbnB1dCBhbW91bnQgKCR7aW5wdXRBbW91bnR9IHNhdG9zaGlzKSBieSAkey1mZWV9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvdmVyaWZ5VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFhLHFCQUFxQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxnQkFBMEI7SUFDL0MsaUdBQWlHO0lBQ2pHLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxrRkFBa0Y7SUFDbEYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUF5QztJQUV6QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENB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RUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLDBHQUEwRztJQUMxRyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMvQixDQUFDLEdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEcsTUFBTSxHQUFHLEdBQUcsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUV2QyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLFlBQVksOENBQThDLFdBQVcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQ3BILENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgVHhJbnRlbnRNaXNtYXRjaEVycm9yLCBJQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcywgdmVyaWZ5S2V5U2lnbmF0dXJlLCB2ZXJpZnlVc2VyUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdmVyaWZ5S2V5JztcbmltcG9ydCB7IGdldFBzYnRUeElucHV0cywgZ2V0VHhJbnB1dHMgfSBmcm9tICcuLi9mZXRjaElucHV0cyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygnYml0Z286YWJzdHJhY3QtdXR4bzp2ZXJpZnlUcmFuc2FjdGlvbicpO1xuXG4vKipcbiAqIEdldCB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGxpbWl0IGZvciBwYXktYXMteW91LWdvIG91dHB1dHNcbiAqXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGdldFBheUdvTGltaXQoYWxsb3dQYXlnb091dHB1dD86IGJvb2xlYW4pOiBudW1iZXIge1xuICAvLyBhbGxvd2luZyBwYXlnbyBvdXRwdXRzIG5lZWRzIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IGRpc2FsbG93IHBheWdvIG91dHB1dHMgaWYgdGhlXG4gIC8vIHJlbGV2YW50IHZlcmlmaWNhdGlvbiBvcHRpb24gaXMgYm90aCBzZXQgYW5kIGZhbHNlXG4gIGlmICghXy5pc05pbChhbGxvd1BheWdvT3V0cHV0KSAmJiAhYWxsb3dQYXlnb091dHB1dCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIDE1MCBiYXNpcyBwb2ludHMgaXMgdGhlIGFic29sdXRlIHBlcm1pdHRlZCBtYXhpbXVtIGlmIHBheWdvIG91dHB1dHMgYXJlIGFsbG93ZWRcbiAgcmV0dXJuIDAuMDE1O1xufVxuXG4vKipcbiAqIFZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgY29tcGxpZXMgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uIGZvciBmaXhlZC1zY3JpcHQgd2FsbGV0c1xuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZm9yIHRyYWRpdGlvbmFsIFVUWE8gY29pbnMgdXNpbmcgZml4ZWQgc2NyaXB0c1xuICogKG5vbi1kZXNjcmlwdG9yIHdhbGxldHMpLiBJdCB2YWxpZGF0ZXMga2V5Y2hhaW5zLCBzaWduYXR1cmVzLCBvdXRwdXRzLCBhbmQgYW1vdW50cy5cbiAqXG4gKiBAcGFyYW0gY29pbiAtIFRoZSBVVFhPIGNvaW4gaW5zdGFuY2VcbiAqIEBwYXJhbSBiaXRnbyAtIEJpdEdvIEFQSSBpbnN0YW5jZSBmb3IgbmV0d29yayBjYWxsc1xuICogQHBhcmFtIHBhcmFtcyAtIFZlcmlmaWNhdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gcGFyYW1zLnR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyBwYXNzZWQgdG8gc2VuZFxuICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIC0gUHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHNlcnZlclxuICogQHBhcmFtIHBhcmFtcy53YWxsZXQgLSBXYWxsZXQgb2JqZWN0IHRvIG9idGFpbiBrZXlzIHRvIHZlcmlmeSBhZ2FpbnN0XG4gKiBAcGFyYW0gcGFyYW1zLnZlcmlmaWNhdGlvbiAtIFZlcmlmaWNhdGlvbiBvcHRpb25zIChkaXNhYmxlTmV0d29ya2luZywga2V5Y2hhaW5zLCBhZGRyZXNzZXMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlcUlkIC0gT3B0aW9uYWwgcmVxdWVzdCBJRCBmb3IgbG9nZ2luZ1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmVyaWZpY2F0aW9uIHBhc3Nlc1xuICogQHRocm93cyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfSBpZiB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHR4RXhwbGFuYXRpb24gPSBhd2FpdCBUeEludGVudE1pc21hdGNoRXJyb3IudHJ5R2V0VHhFeHBsYW5hdGlvbihjb2luIGFzIHVua25vd24gYXMgSUJhc2VDb2luLCB0eFByZWJ1aWxkKTtcblxuICAvLyBIZWxwZXIgdG8gdGhyb3cgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHdpdGggY29uc2lzdGVudCBjb250ZXh0XG4gIGNvbnN0IHRocm93VHhNaXNtYXRjaCA9IChtZXNzYWdlOiBzdHJpbmcpOiBuZXZlciA9PiB7XG4gICAgdGhyb3cgbmV3IFR4SW50ZW50TWlzbWF0Y2hFcnJvcihtZXNzYWdlLCByZXFJZCwgW3R4UGFyYW1zXSwgdHhQcmVidWlsZC50eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gIH07XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykgJiYgIV8uaXNCb29sZWFuKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBpc1BzYnQgPSB0eFByZWJ1aWxkLnR4SGV4ICYmIHV0eG9saWIuYml0Z28uaXNQc2J0KHR4UHJlYnVpbGQudHhIZXgpO1xuICBpZiAoaXNQc2J0ICYmIHR4UHJlYnVpbGQudHhJbmZvPy51bnNwZW50cykge1xuICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBoYXZlIHVuc3BlbnRzIGluIHR4SW5mbyBmb3IgcHNidCcpO1xuICB9XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG4gIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uOiBQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPiA9IGF3YWl0IGNvaW4ucGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyPih7XG4gICAgdHhQYXJhbXMsXG4gICAgdHhQcmVidWlsZCxcbiAgICB3YWxsZXQsXG4gICAgdmVyaWZpY2F0aW9uLFxuICAgIHJlcUlkLFxuICB9KTtcblxuICBjb25zdCBrZXljaGFpbnMgPSBwYXJzZWRUcmFuc2FjdGlvbi5rZXljaGFpbnM7XG5cbiAgLy8gdmVyaWZ5IHRoYXQgdGhlIGNsYWltZWQgdXNlciBwdWJsaWMga2V5IGNvcnJlc3BvbmRzIHRvIHRoZSB3YWxsZXQncyB1c2VyIHByaXZhdGUga2V5XG4gIGxldCB1c2VyUHVibGljS2V5VmVyaWZpZWQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICAvLyB2ZXJpZnkgdGhlIHVzZXIgcHVibGljIGtleSBtYXRjaGVzIHRoZSBwcml2YXRlIGtleSAtIHRoaXMgd2lsbCB0aHJvdyBpZiB0aGVyZSBpcyBubyBtYXRjaFxuICAgIHVzZXJQdWJsaWNLZXlWZXJpZmllZCA9IHZlcmlmeVVzZXJQdWJsaWNLZXkoYml0Z28sIHsgdXNlcktleWNoYWluOiBrZXljaGFpbnMudXNlciwgZGlzYWJsZU5ldHdvcmtpbmcsIHR4UGFyYW1zIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byB2ZXJpZnkgdXNlciBwdWJsaWMga2V5IScsIGUpO1xuICB9XG5cbiAgLy8gbGV0J3MgdmVyaWZ5IHRoZXNlIGtleWNoYWluc1xuICBjb25zdCBrZXlTaWduYXR1cmVzID0gcGFyc2VkVHJhbnNhY3Rpb24ua2V5U2lnbmF0dXJlcztcbiAgaWYgKCFfLmlzRW1wdHkoa2V5U2lnbmF0dXJlcykpIHtcbiAgICBjb25zdCB2ZXJpZnkgPSAoa2V5LCBwdWIpID0+IHtcbiAgICAgIGlmICgha2V5Y2hhaW5zLnVzZXIgfHwgIWtleWNoYWlucy51c2VyLnB1Yikge1xuICAgICAgICB0aHJvd1R4TWlzbWF0Y2goJ21pc3NpbmcgdXNlciBrZXljaGFpbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcmlmeUtleVNpZ25hdHVyZSh7XG4gICAgICAgIHVzZXJLZXljaGFpbjoga2V5Y2hhaW5zLnVzZXIgYXMgeyBwdWI6IHN0cmluZyB9LFxuICAgICAgICBrZXljaGFpblRvVmVyaWZ5OiBrZXksXG4gICAgICAgIGtleVNpZ25hdHVyZTogcHViLFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBpc0JhY2t1cEtleVNpZ25hdHVyZVZhbGlkID0gdmVyaWZ5KGtleWNoYWlucy5iYWNrdXAsIGtleVNpZ25hdHVyZXMuYmFja3VwUHViKTtcbiAgICBjb25zdCBpc0JpdGdvS2V5U2lnbmF0dXJlVmFsaWQgPSB2ZXJpZnkoa2V5Y2hhaW5zLmJpdGdvLCBrZXlTaWduYXR1cmVzLmJpdGdvUHViKTtcbiAgICBpZiAoIWlzQmFja3VwS2V5U2lnbmF0dXJlVmFsaWQgfHwgIWlzQml0Z29LZXlTaWduYXR1cmVWYWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWNvbmRhcnkgcHVibGljIGtleSBzaWduYXR1cmVzIGludmFsaWQnKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCBiYWNrdXAgYW5kIGJpdGdvIGtleSBzaWduYXR1cmVzJyk7XG4gIH0gZWxzZSBpZiAoIWRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgLy8gdGhlc2Uga2V5cyB3ZXJlIG9idGFpbmVkIG9ubGluZSBhbmQgdGhlaXIgc2lnbmF0dXJlcyB3ZXJlIG5vdCB2ZXJpZmllZFxuICAgIC8vIHRoaXMgY291bGQgYmUgZGFuZ2Vyb3VzXG4gICAgY29uc29sZS5sb2coJ3Vuc2lnbmVkIGtleXMgb2J0YWluZWQgb25saW5lIGFyZSBiZWluZyB1c2VkIGZvciBhZGRyZXNzIHZlcmlmaWNhdGlvbicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZFRyYW5zYWN0aW9uLm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uKSB7XG4gICAgaWYgKCFrZXljaGFpbnMudXNlciB8fCAhdXNlclB1YmxpY0tleVZlcmlmaWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHJlcXVpcmVzIHZlcmlmaWNhdGlvbiBvZiB1c2VyIHB1YmxpYyBrZXksIGJ1dCBpdCB3YXMgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCA9IHZlcmlmeUN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMocGFyc2VkVHJhbnNhY3Rpb24sIGtleWNoYWlucy51c2VyKTtcbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXNWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndHJhbnNhY3Rpb24gcmVxdWlyZXMgdmVyaWZpY2F0aW9uIG9mIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMsIGJ1dCB0aGV5IHdlcmUgdW5hYmxlIHRvIGJlIHZlcmlmaWVkJ1xuICAgICAgKTtcbiAgICB9XG4gICAgZGVidWcoJ3N1Y2Nlc3NmdWxseSB2ZXJpZmllZCB1c2VyIHB1YmxpYyBrZXkgYW5kIGN1c3RvbSBjaGFuZ2Uga2V5IHNpZ25hdHVyZXMnKTtcbiAgfVxuXG4gIGNvbnN0IG1pc3NpbmdPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ubWlzc2luZ091dHB1dHM7XG4gIGlmIChtaXNzaW5nT3V0cHV0cy5sZW5ndGggIT09IDApIHtcbiAgICAvLyB0aGVyZSBhcmUgc29tZSBvdXRwdXRzIGluIHRoZSByZWNpcGllbnRzIGxpc3QgdGhhdCBoYXZlIG5vdCBtYWRlIGl0IGludG8gdGhlIGFjdHVhbCB0cmFuc2FjdGlvblxuICAgIHRocm93VHhNaXNtYXRjaCgnZXhwZWN0ZWQgb3V0cHV0cyBtaXNzaW5nIGluIHRyYW5zYWN0aW9uIHByZWJ1aWxkJyk7XG4gIH1cblxuICBjb25zdCBpbnRlbmRlZEV4dGVybmFsU3BlbmQgPSBwYXJzZWRUcmFuc2FjdGlvbi5leHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQ7XG5cbiAgLy8gdGhpcyBpcyBhIGxpbWl0IHdlIGltcG9zZSBmb3IgdGhlIHRvdGFsIHZhbHVlIHRoYXQgaXMgYW1lbmRlZCB0byB0aGUgdHJhbnNhY3Rpb24gYmV5b25kIHdoYXQgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWRcbiAgY29uc3QgcGF5QXNZb3VHb0xpbWl0ID0gbmV3IEJpZ051bWJlcihnZXRQYXlHb0xpbWl0KHZlcmlmaWNhdGlvbi5hbGxvd1BheWdvT3V0cHV0KSkubXVsdGlwbGllZEJ5KFxuICAgIGludGVuZGVkRXh0ZXJuYWxTcGVuZC50b1N0cmluZygpXG4gICk7XG5cbiAgLypcbiAgU29tZSBleHBsYW5hdGlvbiBmb3Igd2h5IHdlJ3JlIGRvaW5nIHdoYXQgd2UncmUgZG9pbmc6XG4gIFNvbWUgY3VzdG9tZXJzIHdpbGwgaGF2ZSBhbiBvdXRwdXQgdG8gQml0R28ncyBQQVlHbyB3YWxsZXQgYWRkZWQgdG8gdGhlaXIgdHJhbnNhY3Rpb24sIGFuZCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yXG4gIGl0IGhlcmUuIFRvIHByb3RlY3Qgc29tZW9uZSB0YW1wZXJpbmcgd2l0aCB0aGUgb3V0cHV0IHRvIG1ha2UgaXQgc2VuZCBtb3JlIHRoYW4gaXQgc2hvdWxkIHRvIEJpdEdvLCB3ZSBkZWZpbmUgYVxuICB0aHJlc2hvbGQgZm9yIHRoZSBvdXRwdXQncyB2YWx1ZSBhYm92ZSB3aGljaCB3ZSdsbCB0aHJvdyBhbiBlcnJvciwgYmVjYXVzZSB0aGUgcGF5Z28gb3V0cHV0IHNob3VsZCBuZXZlciBiZSB0aGF0XG4gIGhpZ2guXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IG5vbkNoYW5nZUFtb3VudCA9IG5ldyBCaWdOdW1iZXIocGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LnRvU3RyaW5nKCkpO1xuXG4gIGRlYnVnKFxuICAgICdJbnRlbmRlZCBzcGVuZCBpcyAlcywgTm9uLWNoYW5nZSBhbW91bnQgaXMgJXMsIHBheWdvIGxpbWl0IGlzICVzJyxcbiAgICBpbnRlbmRlZEV4dGVybmFsU3BlbmQudG9TdHJpbmcoKSxcbiAgICBub25DaGFuZ2VBbW91bnQudG9TdHJpbmcoKSxcbiAgICBwYXlBc1lvdUdvTGltaXQudG9TdHJpbmcoKVxuICApO1xuXG4gIC8vIFRoZXJlIGFyZSB0d28gaW5zdGFuY2VzIHdoZXJlIHdlIHdpbGwgZ2V0IGludG8gdGhpcyBwb2ludCBoZXJlXG4gIGlmIChub25DaGFuZ2VBbW91bnQuZ3QocGF5QXNZb3VHb0xpbWl0KSkge1xuICAgIGlmIChpc1BzYnQgJiYgcGFyc2VkVHJhbnNhY3Rpb24uY3VzdG9tQ2hhbmdlKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgYSBjdXN0b20gY2hhbmdlIGFkZHJlc3Mgb24gYSB3YWxsZXQgYW5kIHdlIGFyZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIHdpdGggYSBQU0JULCB3ZSBkbyBub3QgaGF2ZSB0aGUgbWV0YWRhdGEgdG8gdmVyaWZ5IHRoZSBhZGRyZXNzIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0LCBub3JcbiAgICAgIC8vIGNhbiB3ZSBmZXRjaCB0aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIG90aGVyIHdhbGxldCBiZWNhdXNlIHdlIG1heSBub3QgaGF2ZSB0aGUgY3JlZGVudGlhbHMuIFRoZXJlZm9yZSxcbiAgICAgIC8vIHdlIHdpbGwgbm90IHRocm93IGFuIGVycm9yIGhlcmUsIGJ1dCB3ZSB3aWxsIGxvZyBhIHdhcm5pbmcuXG4gICAgICBkZWJ1ZyhgY2Fubm90IHZlcmlmeSBzb21lIG9mIHRoZSBhZGRyZXNzZXMgYmVjYXVzZSBpdCBiZWxvbmdzIHRvIGEgc2VwYXJhdGUgd2FsbGV0YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZSBhZGRpdGlvbmFsIGV4dGVybmFsIG91dHB1dHMgY2FuIG9ubHkgYmUgQml0R28ncyBwYXktYXMteW91LWdvIGZlZSwgYnV0IHdlIGNhbm5vdCB2ZXJpZnkgdGhlIHdhbGxldCBhZGRyZXNzXG4gICAgICAvLyB0aGVyZSBhcmUgc29tZSBhZGRyZXNzZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YgaW50ZW5kZWQgcmVjaXBpZW50cyB0aGF0IGFyZSBub3QgY2hhbmdlIGFkZHJlc3Nlc1xuICAgICAgdGhyb3dUeE1pc21hdGNoKCdwcmVidWlsZCBhdHRlbXB0cyB0byBzcGVuZCB0byB1bmludGVuZGVkIGV4dGVybmFsIHJlY2lwaWVudHMnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbGxPdXRwdXRzID0gcGFyc2VkVHJhbnNhY3Rpb24ub3V0cHV0cztcbiAgaWYgKCF0eFByZWJ1aWxkLnR4SGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkLnR4SGV4IG5vdCBzZXRgKTtcbiAgfVxuICBjb25zdCBpbnB1dHMgPSBpc1BzYnRcbiAgICA/IGdldFBzYnRUeElucHV0cyh0eFByZWJ1aWxkLnR4SGV4LCBjb2luLm5hbWUpLm1hcCgodikgPT4gKHtcbiAgICAgICAgLi4udixcbiAgICAgICAgdmFsdWU6IHV0eG9saWIuYml0Z28udG9UTnVtYmVyKHYudmFsdWUsIGNvaW4uYW1vdW50VHlwZSksXG4gICAgICB9KSlcbiAgICA6IGF3YWl0IGdldFR4SW5wdXRzKHsgdHhQcmVidWlsZCwgYml0Z28sIGNvaW4sIGRpc2FibGVOZXR3b3JraW5nLCByZXFJZCB9KTtcbiAgLy8gY29pbnMgKGRvZ2UpIHRoYXQgY2FuIGV4Y2VlZCBudW1iZXIgbGltaXRzIChhbmQgdGh1cyB3aWxsIHVzZSBiaWdpbnQpIHdpbGwgaGF2ZSB0aGUgYHZhbHVlU3RyaW5nYCBmaWVsZFxuICBjb25zdCBpbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoXG4gICAgKHN1bTogYmlnaW50LCBpKSA9PiBzdW0gKyBCaWdJbnQoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IGkudmFsdWVTdHJpbmcgOiBpLnZhbHVlKSxcbiAgICBCaWdJbnQoMClcbiAgKTtcbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gYWxsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvOiBPdXRwdXQpID0+IHN1bSArIEJpZ0ludChvLmFtb3VudCksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IGZlZSA9IGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50O1xuXG4gIGlmIChmZWUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGF0dGVtcHRpbmcgdG8gc3BlbmQgJHtvdXRwdXRBbW91bnR9IHNhdG9zaGlzLCB3aGljaCBleGNlZWRzIHRoZSBpbnB1dCBhbW91bnQgKCR7aW5wdXRBbW91bnR9IHNhdG9zaGlzKSBieSAkey1mZWV9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { UtxoCoinName } from '../names';
|
|
2
2
|
/**
|
|
3
3
|
* We want to return the verification pubkey from our statics that has our
|
|
4
4
|
* verification pubkey.
|
|
5
|
-
* @param
|
|
5
|
+
* @param coinName
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
|
-
export declare function getPayGoVerificationPubkey(
|
|
8
|
+
export declare function getPayGoVerificationPubkey(coinName: UtxoCoinName): string | undefined;
|
|
9
9
|
//# sourceMappingURL=getPayGoVerificationPubkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPayGoVerificationPubkey.d.ts","sourceRoot":"","sources":["../../../src/transaction/getPayGoVerificationPubkey.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getPayGoVerificationPubkey.d.ts","sourceRoot":"","sources":["../../../src/transaction/getPayGoVerificationPubkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,UAAU,CAAC;AAKvD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAMrF"}
|