@bitgo/sdk-core 2.0.0-rc.1 → 2.0.0-rc.4
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/CHANGELOG.md +48 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/errors.js +8 -2
- package/dist/src/bitgo/config.d.ts +6 -0
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/iLightning.d.ts +32 -12
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/iLightning.js +6 -2
- package/dist/src/bitgo/lightning/lightning.d.ts +6 -4
- package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightning.js +38 -7
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +10 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +41 -9
- package/dist/src/bitgo/wallet/wallet.d.ts +7 -0
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +31 -4
- package/dist/tsconfig.tsbuildinfo +121 -498
- package/package.json +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getParticapantFromIndex = exports.getParticapantIndex = exports.convertSignatureShare = exports.parseSignatureShare = exports.convertSDShare = exports.parseSDShare = exports.convertDShare = exports.parseDShare = exports.convertMuShare = exports.parseMuShare = exports.convertAShare = exports.parseAShare = exports.convertKShare = exports.parseKShare = exports.getPublicKey = exports.decryptNShare = exports.encryptNShare = exports.sendShareToBitgo = exports.createUserSignatureShare = exports.createUserOmicronAndDeltaShare = exports.createUserGammaAndMuShare = exports.createUserSignShare = exports.createCombinedKey = void 0;
|
|
3
|
+
exports.getParticapantFromIndex = exports.getParticapantIndex = exports.convertSignatureShare = exports.parseSignatureShare = exports.convertSDShare = exports.parseSDShare = exports.convertDShare = exports.parseDShare = exports.convertMuShare = exports.parseMuShare = exports.convertAShare = exports.parseAShare = exports.convertKShare = exports.parseKShare = exports.getPublicKey = exports.decryptNShare = exports.encryptNShare = exports.getBitgoToUserLatestShare = exports.sendShareToBitgo = exports.createUserSignatureShare = exports.createUserOmicronAndDeltaShare = exports.createUserGammaAndMuShare = exports.createUserSignShare = exports.createCombinedKey = void 0;
|
|
4
4
|
const tss_1 = require("./../../../account-lib/mpc/tss");
|
|
5
5
|
const types_1 = require("./types");
|
|
6
6
|
const utils_1 = require("./../../utils");
|
|
@@ -142,14 +142,14 @@ async function sendShareToBitgo(bitgo, walletId, txRequestId, shareType, share,
|
|
|
142
142
|
case types_1.SendShareType.KShare:
|
|
143
143
|
const kShare = share;
|
|
144
144
|
signatureShare = convertKShare(kShare);
|
|
145
|
-
|
|
146
|
-
responseFromBitgo =
|
|
145
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare);
|
|
146
|
+
responseFromBitgo = await getBitgoToUserLatestShare(bitgo, walletId, txRequestId, types_1.ReceivedShareType.AShare);
|
|
147
147
|
break;
|
|
148
148
|
case types_1.SendShareType.MUShare:
|
|
149
149
|
const muShare = share;
|
|
150
150
|
signatureShare = convertMuShare(muShare);
|
|
151
|
-
|
|
152
|
-
responseFromBitgo =
|
|
151
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare);
|
|
152
|
+
responseFromBitgo = await getBitgoToUserLatestShare(bitgo, walletId, txRequestId, types_1.ReceivedShareType.DShare);
|
|
153
153
|
break;
|
|
154
154
|
case types_1.SendShareType.SShare:
|
|
155
155
|
if (!dShare) {
|
|
@@ -160,15 +160,47 @@ async function sendShareToBitgo(bitgo, walletId, txRequestId, shareType, share,
|
|
|
160
160
|
}
|
|
161
161
|
const sShare = share;
|
|
162
162
|
signatureShare = convertSDShare({ sShare, dShare });
|
|
163
|
-
|
|
164
|
-
responseFromBitgo =
|
|
163
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare);
|
|
164
|
+
responseFromBitgo = sShare;
|
|
165
165
|
break;
|
|
166
166
|
default:
|
|
167
|
-
throw 'Invalid Share given to send';
|
|
167
|
+
throw new Error('Invalid Share given to send');
|
|
168
168
|
}
|
|
169
169
|
return responseFromBitgo;
|
|
170
170
|
}
|
|
171
171
|
exports.sendShareToBitgo = sendShareToBitgo;
|
|
172
|
+
/**
|
|
173
|
+
* Gets the latest user's share from bitgo needed to continue signing flow
|
|
174
|
+
* @param {BitGoBase} bitgo - the bitgo instance
|
|
175
|
+
* @param {String} walletId - the wallet id *
|
|
176
|
+
* @param {String} txRequestId - the txRequest Id
|
|
177
|
+
* @param {ReceivedShareType} shareType - the excpected share type
|
|
178
|
+
* @returns {Promise<SendShareToBitgoRT>} - share from bitgo to user
|
|
179
|
+
*/
|
|
180
|
+
async function getBitgoToUserLatestShare(bitgo, walletId, txRequestId, shareType) {
|
|
181
|
+
let responseFromBitgo;
|
|
182
|
+
const txRequest = await common_1.getTxRequest(bitgo, walletId, txRequestId);
|
|
183
|
+
const userShares = txRequest.signatureShares;
|
|
184
|
+
if (!userShares || !userShares.length) {
|
|
185
|
+
throw new Error('user share is not present');
|
|
186
|
+
}
|
|
187
|
+
const shareRecord = userShares[userShares.length - 1];
|
|
188
|
+
switch (shareType) {
|
|
189
|
+
case types_1.ReceivedShareType.AShare:
|
|
190
|
+
responseFromBitgo = parseAShare(shareRecord);
|
|
191
|
+
break;
|
|
192
|
+
case types_1.ReceivedShareType.DShare:
|
|
193
|
+
responseFromBitgo = parseDShare(shareRecord);
|
|
194
|
+
break;
|
|
195
|
+
case types_1.ReceivedShareType.Signature:
|
|
196
|
+
responseFromBitgo = parseSignatureShare(shareRecord);
|
|
197
|
+
break;
|
|
198
|
+
default:
|
|
199
|
+
throw new Error('Invalid share received');
|
|
200
|
+
}
|
|
201
|
+
return responseFromBitgo;
|
|
202
|
+
}
|
|
203
|
+
exports.getBitgoToUserLatestShare = getBitgoToUserLatestShare;
|
|
172
204
|
/**
|
|
173
205
|
* Prepares a NShare to be exchanged with other key holders.
|
|
174
206
|
* Output is in a format that is usable within BitGo's ecosystem.
|
|
@@ -444,4 +476,4 @@ function getParticapantFromIndex(index) {
|
|
|
444
476
|
}
|
|
445
477
|
}
|
|
446
478
|
exports.getParticapantFromIndex = getParticapantFromIndex;
|
|
447
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF1RDtBQUN2RCxtQ0FvQmlCO0FBQ2pCLHlDQUFnSDtBQUNoSCxvQ0FBNEM7QUFHNUMsc0NBQStDO0FBRS9DLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFFBQWtCLEVBQ2xCLGdCQUFxQyxFQUNyQyxjQUFzQjtJQUV0QixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwRCxRQUFRLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLEtBQUssQ0FBQztnQkFDSixVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDckIsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUMzQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdEI7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQUMxQztJQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcs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LE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7S0FDckM7QUFDSCxDQUFDO0FBWEQsa0RBV0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsS0FBYTtJQUNuRCxRQUFRLEtBQUssRUFBRTtRQUNiLEtBQUssQ0FBQztZQUNKLE9BQU8sMEJBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ2pDLEtBQUssQ0FBQztZQUNKLE9BQU8sMEJBQWtCLENBQUMsTUFBTSxDQUFDO1FBQ25DLEtBQUssQ0FBQztZQUNKLE9BQU8sMEJBQWtCLENBQUMsS0FBSyxDQUFDO1FBQ2xDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUN6RDtBQUNILENBQUM7QUFYRCwwREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVjZHNhIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7XG4gIERlY3J5cHRhYmxlTlNoYXJlLFxuICBDb21iaW5lZEtleSxcbiAgU2lnbmluZ01hdGVyaWFsLFxuICBFbmNyeXB0ZWROU2hhcmUsXG4gIEFTaGFyZSxcbiAgQ3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJULFxuICBDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVCxcbiAgRFNoYXJlLFxuICBHU2hhcmUsXG4gIEtleVNoYXJlLFxuICBOU2hhcmUsXG4gIE9TaGFyZSxcbiAgU2VuZFNoYXJlVHlwZSxcbiAgU2lnbmF0dXJlU2hhcmUsXG4gIFNpZ25TaGFyZSxcbiAgV1NoYXJlLFxuICBYU2hhcmUsXG4gIFlTaGFyZSxcbiAgU2VuZFNoYXJlVG9CaXRnb1JULFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UsIFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS1NoYXJlLCBNVVNoYXJlLCBTU2hhcmUgfSBmcm9tICcuLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IHNlbmRTaWduYXR1cmVTaGFyZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuXG4vKipcbiAqIENvbWJpbmVzIE5TaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmVzIC0gZW5jcnlwdGVkIE5TaGFyZXMgd2l0aCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVjcnlwdFxuICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkoXG4gIGtleVNoYXJlOiBLZXlTaGFyZSxcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSxcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZ1xuKTogUHJvbWlzZTxDb21iaW5lZEtleT4ge1xuICBjb25zdCBuU2hhcmVzOiBOU2hhcmVbXSA9IFtdO1xuXG4gIGxldCBiaXRnb05TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgdXNlck5TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgYmFja3VwTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlbmNyeXB0ZWROU2hhcmUgb2YgZW5jcnlwdGVkTlNoYXJlcykge1xuICAgIGNvbnN0IG5TaGFyZSA9IGF3YWl0IGRlY3J5cHROU2hhcmUoZW5jcnlwdGVkTlNoYXJlKTtcblxuICAgIHN3aXRjaCAoZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5qKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHVzZXJOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiYWNrdXBOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBiaXRnb05TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTlNoYXJlIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgblNoYXJlcy5wdXNoKG5TaGFyZSk7XG4gIH1cblxuICBpZiAoIWJpdGdvTlNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIE4gU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUucFNoYXJlLCBuU2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnhTaGFyZS55ICsgY29tYmluZWRLZXkueFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICBwU2hhcmU6IGtleVNoYXJlLnBTaGFyZSxcbiAgICBiaXRnb05TaGFyZSxcbiAgICBiYWNrdXBOU2hhcmUsXG4gICAgdXNlck5TaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduU2hhcmUgd2l0aCBVc2VyIFhTaGFyZSBhbmQgWVNoYXJlIENvcnJlc3BvbmRpbmcgdG8gQml0R29cbiAqIEBwYXJhbSB7WFNoYXJlfSB4U2hhcmUgVXNlciBzZWNyZXQgeFNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIFlTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduU2hhcmU+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25TaGFyZSh4U2hhcmU6IFhTaGFyZSwgeVNoYXJlOiBZU2hhcmUpOiBQcm9taXNlPFNpZ25TaGFyZT4ge1xuICBpZiAoeFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBYU2hhcmUsIFhTaGFyZSBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKHlTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgeVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlIHByb3ZpZGVkIGZvciBzaWduJyk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduU2hhcmUoeFNoYXJlLCB5U2hhcmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEdhbW1hIFNoYXJlIGFuZCBNdVNoYXJlIHdpdGggVXNlciBXU2hhcmUgYW5kIEFTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge1dTaGFyZX0gd1NoYXJlIFVzZXIgV1NoYXJlXG4gKiBAcGFyYW0ge0FTaGFyZX0gYVNoYXJlIEFTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZSh3U2hhcmU6IFdTaGFyZSwgYVNoYXJlOiBBU2hhcmUpOiBQcm9taXNlPENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVD4ge1xuICBpZiAod1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBXU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgaWYgKGFTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgYVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQVNoYXJlLCBpcyBub3QgZnJvbSBCaXRnbyB0byBVc2VyJyk7XG4gIH1cblxuICByZXR1cm4gTVBDLnNpZ25Db252ZXJ0KHsgd1NoYXJlLCBhU2hhcmUgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgT21pY3JvbiBTaGFyZSBhbmQgRGVsdGEgc2hhcmUgd2l0aCB1c2VyIEdTaGFyZVxuICogQHBhcmFtIHtHU2hhcmV9IGdTaGFyZSBVc2VyIEdTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8Q3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlKGdTaGFyZTogR1NoYXJlKTogUHJvbWlzZTxDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVD4ge1xuICBpZiAoZ1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBHU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduQ29tYmluZSh7XG4gICAgZ1NoYXJlOiBnU2hhcmUsXG4gICAgc2lnbkluZGV4OiB7XG4gICAgICBpOiBTaGFyZUtleVBvc2l0aW9uLkJJVEdPLFxuICAgICAgajogZ1NoYXJlLmksXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgU2lnbmF0dXJlIFNoYXJlIHdpdGggVXNlciBPU2hhcmUgYW5kIERTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge09TaGFyZX0gb1NoYXJlIFVzZXIgT1NoYXJlXG4gKiBAcGFyYW0ge0RTaGFyZX0gZFNoYXJlIERTaGFyZSBmcm9tIGJpdGdvXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIHBlcmZvcm0gc2lnblxuICogQHJldHVybnMge1Byb21pc2U8Y3JlYXRlVXNlclNpZ25TaGFyZVJUPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJTaWduYXR1cmVTaGFyZShcbiAgb1NoYXJlOiBPU2hhcmUsXG4gIGRTaGFyZTogRFNoYXJlLFxuICBtZXNzYWdlOiBCdWZmZXJcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmU+IHtcbiAgaWYgKG9TaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgT1NoYXJlLCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKGRTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgZFNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRFNoYXJlLCBkb2Vzbid0IHNlZW0gdG8gYmUgZnJvbSBCaXRHb2ApO1xuICB9XG4gIHJldHVybiBNUEMuc2lnbihtZXNzYWdlLCBvU2hhcmUsIGRTaGFyZSk7XG59XG5cbi8qKlxuICogU2VuZHMgU2hhcmUgVG8gQml0Z29cbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZCAgKlxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHtTaWduYXR1cmVTaGFyZVJlY29yZH0gc2lnbmF0dXJlU2hhcmUgLSBhIFNpZ25hdHVyZSBTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+fSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kU2hhcmVUb0JpdGdvKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBzaGFyZVR5cGU6IFNlbmRTaGFyZVR5cGUsXG4gIHNoYXJlOiBTU2hhcmUgfCBNVVNoYXJlIHwgS1NoYXJlLFxuICBkU2hhcmU/OiBEU2hhcmVcbik6IFByb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPiB7XG4gIGlmIChzaGFyZVR5cGUgIT09IFNlbmRTaGFyZVR5cGUuU1NoYXJlICYmIHNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2hhcmUsIGlzIG5vdCBmcm9tIFVzZXIgdG8gQml0Z28nKTtcbiAgfVxuICBsZXQgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkO1xuICBsZXQgcmVzcG9uc2VGcm9tQml0Z286IFNlbmRTaGFyZVRvQml0Z29SVDtcblxuICBzd2l0Y2ggKHNoYXJlVHlwZSkge1xuICAgIGNhc2UgU2VuZFNoYXJlVHlwZS5LU2hhcmU6XG4gICAgICBjb25zdCBrU2hhcmUgPSBzaGFyZSBhcyBLU2hhcmU7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IGNvbnZlcnRLU2hhcmUoa1NoYXJlKTtcbiAgICAgIGNvbnN0IEFTaGFyZVJlY29yZCA9IGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlQVNoYXJlKEFTaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuTVVTaGFyZTpcbiAgICAgIGNvbnN0IG11U2hhcmUgPSBzaGFyZSBhcyBNVVNoYXJlO1xuICAgICAgc2lnbmF0dXJlU2hhcmUgPSBjb252ZXJ0TXVTaGFyZShtdVNoYXJlKTtcbiAgICAgIGNvbnN0IGRTaGFyZVJlY29yZCA9IGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlRFNoYXJlKGRTaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuU1NoYXJlOlxuICAgICAgaWYgKCFkU2hhcmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEU2hhcmUgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoZFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08gfHwgZFNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgRFNoYXJlIHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzU2hhcmUgPSBzaGFyZSBhcyBTU2hhcmU7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IGNvbnZlcnRTRFNoYXJlKHsgc1NoYXJlLCBkU2hhcmUgfSk7XG4gICAgICBjb25zdCBzaWduYXR1cmVSZWNvcmQgPSBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUpO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZVNpZ25hdHVyZVNoYXJlKHNpZ25hdHVyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgJ0ludmFsaWQgU2hhcmUgZ2l2ZW4gdG8gc2VuZCc7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2VGcm9tQml0Z287XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBOU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBPdXRwdXQgaXMgaW4gYSBmb3JtYXQgdGhhdCBpcyB1c2FibGUgd2l0aGluIEJpdEdvJ3MgZWNvc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmUgb2YgdGhlIHBhcnR5IHByZXBhcmluZyBleGNoYW5nZSBtYXRlcmlhbHNcbiAqIEBwYXJhbSByZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcmVjaXBpZW50R3BnUHVibGljQXJtb3IgLSByZWNpcGllbnQncyBwdWJsaWMgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSBzZW5kZXJHcGdQcml2YXRlQXJtb3IgLSBzZW5kZXIncyBwcml2YXRlIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcmV0dXJucyBlbmNyeXB0ZWQgTiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdE5TaGFyZShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICByZWNpcGllbnRJbmRleDogbnVtYmVyLFxuICByZWNpcGllbnRHcGdQdWJsaWNBcm1vcjogc3RyaW5nLFxuICBzZW5kZXJHcGdQcml2YXRlQXJtb3I6IHN0cmluZ1xuKTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgblNoYXJlID0ga2V5U2hhcmUublNoYXJlc1tyZWNpcGllbnRJbmRleF07XG4gIGlmICghblNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY2lwaWVudCcpO1xuICB9XG5cbiAgY29uc3QgcHVibGljU2hhcmUgPSBrZXlTaGFyZS5wU2hhcmUueSArIG5TaGFyZS5jaGFpbmNvZGUgKyBuU2hhcmUubjtcbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gblNoYXJlLnU7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gYXdhaXQgZW5jcnlwdEFuZFNpZ25UZXh0KHByaXZhdGVTaGFyZSwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vcik7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBuU2hhcmUuaSxcbiAgICBqOiBuU2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gIH07XG59XG5cbi8qKlxuICogRGVjcnlwdHMgZW5jcnlwdGVkIG4gc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmUgLSBkZWNyeXB0YWJsZSBuIHNoYXJlIHdpdGggcmVjaXBpZW50IHByaXZhdGUgZ3BnIGtleSBhcm1vciBhbmQgc2VuZGVyIHB1YmxpYyBncGcga2V5XG4gKiBAcmV0dXJucyBOIHNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0TlNoYXJlKGVuY3J5cHRlZE5TaGFyZTogRGVjcnlwdGFibGVOU2hhcmUpOiBQcm9taXNlPE5TaGFyZT4ge1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBhd2FpdCByZWFkU2lnbmVkTWVzc2FnZShcbiAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBlbmNyeXB0ZWROU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgZW5jcnlwdGVkTlNoYXJlLnJlY2lwaWVudFByaXZhdGVBcm1vclxuICApO1xuXG4gIGNvbnN0IG5TaGFyZTogTlNoYXJlID0ge1xuICAgIGk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaSxcbiAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgeTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NSksXG4gICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgIG46IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMTI5KSxcbiAgICBjaGFpbmNvZGU6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjUsIDEyOSksXG4gIH07XG5cbiAgcmV0dXJuIG5TaGFyZTtcbn1cblxuLyoqXG4gKiBHZXRzIHB1YmxpYyBrZXkgZnJvbSBjb21tb24ga2V5IGNoYWluXG4gKiBAcGFyYW0gY29tbW9uS2V5Q2hhaW4gLSBjb21tb24ga2V5IGNoYWluIG9mIGVjZHNhIHRzc1xuICogQHJldHVybnMgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljS2V5KGNvbW1vbktleUNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbW9uS2V5Q2hhaW4uc2xpY2UoMCwgNjYpO1xufVxuXG4vKipcbiAqIHZhbGlkYXRlcyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2hhcmVMZW5ndGggLSBzaGFyZSByZWNvcmQgZXhwZWN0ZWQgbGVuZ3RoXG4gKiBAcGFyYW0gaXNFeGFjdExlbmd0aCAtIGlmIHRoaXMgZmFsc2UgdGhlbiBzaGFyZSBsZW5ndGggY2FuIGJlIGdyZWF0ZXIuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBzaGFyZUxlbmd0aDogbnVtYmVyLCBpc0V4YWN0TGVuZ3RoID0gdHJ1ZSk6IHZvaWQge1xuICBjb25zdCBlcnJvciA9IChtZXNzYWdlOiBzdHJpbmcpID0+IG5ldyBFcnJvcihtZXNzYWdlKTtcblxuICBpZiAoc2hhcmUuc2hhcmUubGVuZ3RoIDwgc2hhcmVMZW5ndGgpIHtcbiAgICB0aHJvdyBlcnJvcihgRXhjZXB0ZWQgc2hhcmUgbGVuZ3RoIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAke3NoYXJlTGVuZ3RofSBidXQgZ290ICR7c2hhcmUuc2hhcmUubGVuZ3RofS5gKTtcbiAgfVxuXG4gIGlmIChpc0V4YWN0TGVuZ3RoICYmIHNoYXJlLnNoYXJlLmxlbmd0aCAhPT0gc2hhcmVMZW5ndGgpIHtcbiAgICB0aHJvdyBlcnJvcihgRXhjZXB0ZWQgc2hhcmUgbGVuZ3RoIHRvIGJlICR7c2hhcmVMZW5ndGh9IGJ1dCBnb3QgJHtzaGFyZS5zaGFyZS5sZW5ndGh9LmApO1xuICB9XG5cbiAgaWYgKHNoYXJlLmZyb20gPT09IHNoYXJlLnRvKSB7XG4gICAgdGhyb3cgZXJyb3IoYEtleSBzaGFyZSBzZW5kZXIgYW5kIHJlY2VpdmVyIGNhbm5vdCBiZSB0aGUgc2FtZS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlcyBLIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgSyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogS1NoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMTUzNiwgZmFsc2UpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBrOiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgMTUzNiksXG4gICAgbjogc2hhcmUuc2hhcmUuc3Vic3RyaW5nKDE1MzYpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgSyBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBLIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0S1NoYXJlKHNoYXJlOiBLU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBzaGFyZS5rICsgc2hhcmUubixcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgQSBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEEgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IEFTaGFyZSB7XG4gIHZhbGlkYXRlU2hhcmUoc2hhcmUsIDQ2MDgsIGZhbHNlKTtcbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlLnNoYXJlLnNsaWNlKDAsIDE1MzYpLFxuICAgIGFscGhhOiBzaGFyZS5zaGFyZS5zbGljZSgxNTM2LCAzMDcyKSxcbiAgICBtdTogc2hhcmUuc2hhcmUuc2xpY2UoMzA3MiwgNDYwOCksXG4gICAgbjogc2hhcmUuc2hhcmUuc2xpY2UoNDYwOCksXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBBIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEEgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBU2hhcmUoc2hhcmU6IEFTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IHNoYXJlLmshICsgc2hhcmUuYWxwaGEhICsgc2hhcmUubXUhICsgc2hhcmUubiEsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIE11IHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgTXUgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTXVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBNVVNoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMzA3Mik7XG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBhbHBoYTogc2hhcmUuc2hhcmUuc2xpY2UoMCwgMTUzNiksXG4gICAgbXU6IHNoYXJlLnNoYXJlLnNsaWNlKDE1MzYsIDMwNzIpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgTXUgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gTXUgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRNdVNoYXJlKHNoYXJlOiBNVVNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogc2hhcmUuYWxwaGEgKyBzaGFyZS5tdSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgRCBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEQgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IERTaGFyZSB7XG4gIHZhbGlkYXRlU2hhcmUoc2hhcmUsIDEzMCk7XG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBkZWx0YTogc2hhcmUuc2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgIEdhbW1hOiBzaGFyZS5zaGFyZS5zbGljZSg2NCwgMTMwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gRCBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERTaGFyZShzaGFyZTogRFNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogc2hhcmUuZGVsdGEgKyBzaGFyZS5HYW1tYSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgUyBhbmQgRCBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIFMgYW5kIEQgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU0RTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiB7IHNTaGFyZTogU2lnbmF0dXJlU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0ge1xuICB2YWxpZGF0ZVNoYXJlKHNoYXJlLCAzMjQpO1xuICByZXR1cm4ge1xuICAgIHNTaGFyZTogcGFyc2VTaWduYXR1cmVTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlLnNoYXJlLnNsaWNlKDAsIDE5NCkgfSksXG4gICAgZFNoYXJlOiBwYXJzZURTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlLnNoYXJlLnNsaWNlKDE5NCkgfSksXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBTIGFuZCBEIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIFMgYW5kIEQgc2hhcmUgaW4gYSBvYmplY3RcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTRFNoYXJlKHNoYXJlOiB7IHNTaGFyZTogU2lnbmF0dXJlU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5kU2hhcmUuaiksXG4gICAgc2hhcmU6IHNoYXJlLnNTaGFyZS5yICsgc2hhcmUuc1NoYXJlLnMgKyBzaGFyZS5zU2hhcmUueSArIHNoYXJlLmRTaGFyZS5kZWx0YSArIHNoYXJlLmRTaGFyZS5HYW1tYSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgc2lnbmF0dXJlIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IFNpZ25hdHVyZVNoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMTk0KTtcbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICByOiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgNjQpLFxuICAgIHM6IHNoYXJlLnNoYXJlLnN1YnN0cmluZyg2NCwgMTI4KSxcbiAgICB5OiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMTI4LCAxOTQpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgc2lnbmF0dXJlIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEsgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTaWduYXR1cmVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmUsIHNlbmRlckluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNlbmRlckluZGV4KSxcbiAgICBzaGFyZTogc2hhcmUuciArIHNoYXJlLnMgKyBzaGFyZS55LFxuICB9O1xufVxuXG4vKipcbiAqIGdldHMgcGFydGljYXBhbnQgaW5kZXhcbiAqIEBwYXJhbSBwYXJ0aWNpcGFudCAtIHBhcnRpY2lwYW50cyAodXNlciwgYmFja3VwLCBvciBiaXRnbylcbiAqIEByZXR1cm5zIGluZGV4ICgxLCAyLCAwciAzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljYXBhbnRJbmRleChwYXJ0aWNpcGFudDogJ3VzZXInIHwgJ2JhY2t1cCcgfCAnYml0Z28nKTogbnVtYmVyIHtcbiAgc3dpdGNoIChwYXJ0aWNpcGFudCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIDE7XG4gICAgY2FzZSAnYmFja3VwJzpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgJ2JpdGdvJzpcbiAgICAgIHJldHVybiAzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcignVW5rb3duIHBhcnRpY2lwYW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBnZXRzIHBhcnRpY2FwYW50IG5hbWUgYnkgaW5kZXhcbiAqIEBwYXJhbSBpbmRleCBwYXJ0aWNhcGFudCBpbmRleFxuICogQHJldHVybnMgcGFydGljYXBhbnQgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoaW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlVHlwZSB7XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVI7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBhcnRpY2FwYW50IGluZGV4ICR7aW5kZXh9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF1RDtBQUN2RCxtQ0FxQmlCO0FBQ2pCLHlDQUFnSDtBQUNoSCxvQ0FBNEM7QUFHNUMsc0NBQTZEO0FBRTdELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFFBQWtCLEVBQ2xCLGdCQUFxQyxFQUNyQyxjQUFzQjtJQUV0QixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwRCxRQUFRLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLEtBQUssQ0FBQztnQkFDSixVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDckIsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUMzQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdEI7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQUMxQztJQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcs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Q0FBQyxLQUFhO0lBQ25ELFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxDQUFDO1lBQ0osT0FBTywwQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDakMsS0FBSyxDQUFDO1lBQ0osT0FBTywwQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDbkMsS0FBSyxDQUFDO1lBQ0osT0FBTywwQkFBa0IsQ0FBQyxLQUFLLENBQUM7UUFDbEM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQztBQVhELDBEQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWNkc2EgfSBmcm9tICcuLy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuaW1wb3J0IHtcbiAgRGVjcnlwdGFibGVOU2hhcmUsXG4gIENvbWJpbmVkS2V5LFxuICBTaWduaW5nTWF0ZXJpYWwsXG4gIEVuY3J5cHRlZE5TaGFyZSxcbiAgQVNoYXJlLFxuICBDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQsXG4gIENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJULFxuICBEU2hhcmUsXG4gIEdTaGFyZSxcbiAgS2V5U2hhcmUsXG4gIE5TaGFyZSxcbiAgT1NoYXJlLFxuICBTZW5kU2hhcmVUeXBlLFxuICBTaWduYXR1cmVTaGFyZSxcbiAgU2lnblNoYXJlLFxuICBXU2hhcmUsXG4gIFhTaGFyZSxcbiAgWVNoYXJlLFxuICBTZW5kU2hhcmVUb0JpdGdvUlQsXG4gIFJlY2VpdmVkU2hhcmVUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UsIFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS1NoYXJlLCBNVVNoYXJlLCBTU2hhcmUgfSBmcm9tICcuLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG5cbi8qKlxuICogQ29tYmluZXMgTlNoYXJlcyB0byBjb21iaW5lIHRoZSBmaW5hbCBUU1Mga2V5XG4gKiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBVc2VyIG9yIEJhY2t1cCBrZXkgc2luY2UgaXQgcmVxdWlyZXMgdGhlIGNvbW1vbiBrZXljaGFpbiBmcm9tIEJpdEdvIGZpcnN0XG4gKlxuICogQHBhcmFtIGtleVNoYXJlIC0gVFNTIGtleSBzaGFyZVxuICogQHBhcmFtIGVuY3J5cHRlZE5TaGFyZXMgLSBlbmNyeXB0ZWQgTlNoYXJlcyB3aXRoIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkZWNyeXB0XG4gKiBAcGFyYW0gY29tbW9uS2V5Y2hhaW4gLSBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gb2YgdGhlIGNvbWJpbmVkIGtleVxuICogQHJldHVybnMge0NvbWJpbmVkS2V5fSBjb21iaW5lZCBUU1Mga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21iaW5lZEtleShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICBlbmNyeXB0ZWROU2hhcmVzOiBEZWNyeXB0YWJsZU5TaGFyZVtdLFxuICBjb21tb25LZXljaGFpbjogc3RyaW5nXG4pOiBQcm9taXNlPENvbWJpbmVkS2V5PiB7XG4gIGNvbnN0IG5TaGFyZXM6IE5TaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBOU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZE5TaGFyZSBvZiBlbmNyeXB0ZWROU2hhcmVzKSB7XG4gICAgY29uc3QgblNoYXJlID0gYXdhaXQgZGVjcnlwdE5TaGFyZShlbmNyeXB0ZWROU2hhcmUpO1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWROU2hhcmUublNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlck5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cE5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvTlNoYXJlID0gblNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBuU2hhcmVzLnB1c2goblNoYXJlKTtcbiAgfVxuXG4gIGlmICghYml0Z29OU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gTiBTaGFyZScpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS5wU2hhcmUsIG5TaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkueFNoYXJlLnkgKyBjb21iaW5lZEtleS54U2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHBTaGFyZToga2V5U2hhcmUucFNoYXJlLFxuICAgIGJpdGdvTlNoYXJlLFxuICAgIGJhY2t1cE5TaGFyZSxcbiAgICB1c2VyTlNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFNpZ25TaGFyZSB3aXRoIFVzZXIgWFNoYXJlIGFuZCBZU2hhcmUgQ29ycmVzcG9uZGluZyB0byBCaXRHb1xuICogQHBhcmFtIHtYU2hhcmV9IHhTaGFyZSBVc2VyIHNlY3JldCB4U2hhcmVcbiAqIEBwYXJhbSB7WVNoYXJlfSB5U2hhcmUgWVNoYXJlIGZyb20gQml0Z29cbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25TaGFyZT59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyU2lnblNoYXJlKHhTaGFyZTogWFNoYXJlLCB5U2hhcmU6IFlTaGFyZSk6IFByb21pc2U8U2lnblNoYXJlPiB7XG4gIGlmICh4U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFhTaGFyZSwgWFNoYXJlIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cblxuICBpZiAoeVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB8fCB5U2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUgcHJvdmlkZWQgZm9yIHNpZ24nKTtcbiAgfVxuICByZXR1cm4gTVBDLnNpZ25TaGFyZSh4U2hhcmUsIHlTaGFyZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgR2FtbWEgU2hhcmUgYW5kIE11U2hhcmUgd2l0aCBVc2VyIFdTaGFyZSBhbmQgQVNoYXJlIEZyb20gQml0R29cbiAqIEBwYXJhbSB7V1NoYXJlfSB3U2hhcmUgVXNlciBXU2hhcmVcbiAqIEBwYXJhbSB7QVNoYXJlfSBhU2hhcmUgQVNoYXJlIGZyb20gQml0Z29cbiAqIEByZXR1cm5zIHtQcm9taXNlPENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlKHdTaGFyZTogV1NoYXJlLCBhU2hhcmU6IEFTaGFyZSk6IFByb21pc2U8Q3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJUPiB7XG4gIGlmICh3U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFdTaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuICBpZiAoYVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB8fCBhU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBU2hhcmUsIGlzIG5vdCBmcm9tIEJpdGdvIHRvIFVzZXInKTtcbiAgfVxuXG4gIHJldHVybiBNUEMuc2lnbkNvbnZlcnQoeyB3U2hhcmUsIGFTaGFyZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBPbWljcm9uIFNoYXJlIGFuZCBEZWx0YSBzaGFyZSB3aXRoIHVzZXIgR1NoYXJlXG4gKiBAcGFyYW0ge0dTaGFyZX0gZ1NoYXJlIFVzZXIgR1NoYXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmUoZ1NoYXJlOiBHU2hhcmUpOiBQcm9taXNlPENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJUPiB7XG4gIGlmIChnU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEdTaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuICByZXR1cm4gTVBDLnNpZ25Db21iaW5lKHtcbiAgICBnU2hhcmU6IGdTaGFyZSxcbiAgICBzaWduSW5kZXg6IHtcbiAgICAgIGk6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sXG4gICAgICBqOiBnU2hhcmUuaSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduYXR1cmUgU2hhcmUgd2l0aCBVc2VyIE9TaGFyZSBhbmQgRFNoYXJlIEZyb20gQml0R29cbiAqIEBwYXJhbSB7T1NoYXJlfSBvU2hhcmUgVXNlciBPU2hhcmVcbiAqIEBwYXJhbSB7RFNoYXJlfSBkU2hhcmUgRFNoYXJlIGZyb20gYml0Z29cbiAqIEBwYXJhbSB7QnVmZmVyfSBtZXNzYWdlIG1lc3NhZ2UgdG8gcGVyZm9ybSBzaWduXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxjcmVhdGVVc2VyU2lnblNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25hdHVyZVNoYXJlKFxuICBvU2hhcmU6IE9TaGFyZSxcbiAgZFNoYXJlOiBEU2hhcmUsXG4gIG1lc3NhZ2U6IEJ1ZmZlclxuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZT4ge1xuICBpZiAob1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBPU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cblxuICBpZiAoZFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB8fCBkU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBEU2hhcmUsIGRvZXNuJ3Qgc2VlbSB0byBiZSBmcm9tIEJpdEdvYCk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduKG1lc3NhZ2UsIG9TaGFyZSwgZFNoYXJlKTtcbn1cblxuLyoqXG4gKiBTZW5kcyBTaGFyZSBUbyBCaXRnb1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBzaWduYXR1cmVTaGFyZSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaGFyZVRvQml0Z28oXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHNoYXJlVHlwZTogU2VuZFNoYXJlVHlwZSxcbiAgc2hhcmU6IFNTaGFyZSB8IE1VU2hhcmUgfCBLU2hhcmUsXG4gIGRTaGFyZT86IERTaGFyZVxuKTogUHJvbWlzZTxTZW5kU2hhcmVUb0JpdGdvUlQ+IHtcbiAgaWYgKHNoYXJlVHlwZSAhPT0gU2VuZFNoYXJlVHlwZS5TU2hhcmUgJiYgc2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGxldCBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQ7XG4gIGxldCByZXNwb25zZUZyb21CaXRnbzogU2VuZFNoYXJlVG9CaXRnb1JUO1xuXG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLktTaGFyZTpcbiAgICAgIGNvbnN0IGtTaGFyZSA9IHNoYXJlIGFzIEtTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydEtTaGFyZShrU2hhcmUpO1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlKTtcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gYXdhaXQgZ2V0Qml0Z29Ub1VzZXJMYXRlc3RTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBSZWNlaXZlZFNoYXJlVHlwZS5BU2hhcmUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLk1VU2hhcmU6XG4gICAgICBjb25zdCBtdVNoYXJlID0gc2hhcmUgYXMgTVVTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydE11U2hhcmUobXVTaGFyZSk7XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUpO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBhd2FpdCBnZXRCaXRnb1RvVXNlckxhdGVzdFNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIFJlY2VpdmVkU2hhcmVUeXBlLkRTaGFyZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuU1NoYXJlOlxuICAgICAgaWYgKCFkU2hhcmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEU2hhcmUgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoZFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08gfHwgZFNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgRFNoYXJlIHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzU2hhcmUgPSBzaGFyZSBhcyBTU2hhcmU7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IGNvbnZlcnRTRFNoYXJlKHsgc1NoYXJlLCBkU2hhcmUgfSk7XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUpO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBzU2hhcmU7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFNoYXJlIGdpdmVuIHRvIHNlbmQnKTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZUZyb21CaXRnbztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBsYXRlc3QgdXNlcidzIHNoYXJlIGZyb20gYml0Z28gbmVlZGVkIHRvIGNvbnRpbnVlIHNpZ25pbmcgZmxvd1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1JlY2VpdmVkU2hhcmVUeXBlfSBzaGFyZVR5cGUgLSB0aGUgZXhjcGVjdGVkIHNoYXJlIHR5cGVcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNlbmRTaGFyZVRvQml0Z29SVD59IC0gc2hhcmUgZnJvbSBiaXRnbyB0byB1c2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb1RvVXNlckxhdGVzdFNoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBzaGFyZVR5cGU6IFJlY2VpdmVkU2hhcmVUeXBlXG4pOiBQcm9taXNlPFNlbmRTaGFyZVRvQml0Z29SVD4ge1xuICBsZXQgcmVzcG9uc2VGcm9tQml0Z286IFNlbmRTaGFyZVRvQml0Z29SVDtcbiAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQpO1xuICBjb25zdCB1c2VyU2hhcmVzID0gdHhSZXF1ZXN0LnNpZ25hdHVyZVNoYXJlcztcbiAgaWYgKCF1c2VyU2hhcmVzIHx8ICF1c2VyU2hhcmVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlciBzaGFyZSBpcyBub3QgcHJlc2VudCcpO1xuICB9XG5cbiAgY29uc3Qgc2hhcmVSZWNvcmQgPSB1c2VyU2hhcmVzW3VzZXJTaGFyZXMubGVuZ3RoIC0gMV07XG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBSZWNlaXZlZFNoYXJlVHlwZS5BU2hhcmU6XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlQVNoYXJlKHNoYXJlUmVjb3JkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVjZWl2ZWRTaGFyZVR5cGUuRFNoYXJlOlxuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZURTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlY2VpdmVkU2hhcmVUeXBlLlNpZ25hdHVyZTpcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gcGFyc2VTaWduYXR1cmVTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNoYXJlIHJlY2VpdmVkJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2VGcm9tQml0Z287XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBOU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBPdXRwdXQgaXMgaW4gYSBmb3JtYXQgdGhhdCBpcyB1c2FibGUgd2l0aGluIEJpdEdvJ3MgZWNvc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmUgb2YgdGhlIHBhcnR5IHByZXBhcmluZyBleGNoYW5nZSBtYXRlcmlhbHNcbiAqIEBwYXJhbSByZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcmVjaXBpZW50R3BnUHVibGljQXJtb3IgLSByZWNpcGllbnQncyBwdWJsaWMgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSBzZW5kZXJHcGdQcml2YXRlQXJtb3IgLSBzZW5kZXIncyBwcml2YXRlIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcmV0dXJucyBlbmNyeXB0ZWQgTiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdE5TaGFyZShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICByZWNpcGllbnRJbmRleDogbnVtYmVyLFxuICByZWNpcGllbnRHcGdQdWJsaWNBcm1vcjogc3RyaW5nLFxuICBzZW5kZXJHcGdQcml2YXRlQXJtb3I6IHN0cmluZ1xuKTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgblNoYXJlID0ga2V5U2hhcmUublNoYXJlc1tyZWNpcGllbnRJbmRleF07XG4gIGlmICghblNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY2lwaWVudCcpO1xuICB9XG5cbiAgY29uc3QgcHVibGljU2hhcmUgPSBrZXlTaGFyZS5wU2hhcmUueSArIG5TaGFyZS5jaGFpbmNvZGUgKyBuU2hhcmUubjtcbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gblNoYXJlLnU7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gYXdhaXQgZW5jcnlwdEFuZFNpZ25UZXh0KHByaXZhdGVTaGFyZSwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vcik7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBuU2hhcmUuaSxcbiAgICBqOiBuU2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gIH07XG59XG5cbi8qKlxuICogRGVjcnlwdHMgZW5jcnlwdGVkIG4gc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmUgLSBkZWNyeXB0YWJsZSBuIHNoYXJlIHdpdGggcmVjaXBpZW50IHByaXZhdGUgZ3BnIGtleSBhcm1vciBhbmQgc2VuZGVyIHB1YmxpYyBncGcga2V5XG4gKiBAcmV0dXJucyBOIHNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0TlNoYXJlKGVuY3J5cHRlZE5TaGFyZTogRGVjcnlwdGFibGVOU2hhcmUpOiBQcm9taXNlPE5TaGFyZT4ge1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBhd2FpdCByZWFkU2lnbmVkTWVzc2FnZShcbiAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBlbmNyeXB0ZWROU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgZW5jcnlwdGVkTlNoYXJlLnJlY2lwaWVudFByaXZhdGVBcm1vclxuICApO1xuXG4gIGNvbnN0IG5TaGFyZTogTlNoYXJlID0ge1xuICAgIGk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaSxcbiAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgeTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NSksXG4gICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgIG46IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMTI5KSxcbiAgICBjaGFpbmNvZGU6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjUsIDEyOSksXG4gIH07XG5cbiAgcmV0dXJuIG5TaGFyZTtcbn1cblxuLyoqXG4gKiBHZXRzIHB1YmxpYyBrZXkgZnJvbSBjb21tb24ga2V5IGNoYWluXG4gKiBAcGFyYW0gY29tbW9uS2V5Q2hhaW4gLSBjb21tb24ga2V5IGNoYWluIG9mIGVjZHNhIHRzc1xuICogQHJldHVybnMgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljS2V5KGNvbW1vbktleUNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbW9uS2V5Q2hhaW4uc2xpY2UoMCwgNjYpO1xufVxuXG4vKipcbiAqIHZhbGlkYXRlcyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2hhcmVMZW5ndGggLSBzaGFyZSByZWNvcmQgZXhwZWN0ZWQgbGVuZ3RoXG4gKiBAcGFyYW0gaXNFeGFjdExlbmd0aCAtIGlmIHRoaXMgZmFsc2UgdGhlbiBzaGFyZSBsZW5ndGggY2FuIGJlIGdyZWF0ZXIuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBzaGFyZUxlbmd0aDogbnVtYmVyLCBpc0V4YWN0TGVuZ3RoID0gdHJ1ZSk6IHZvaWQge1xuICBjb25zdCBlcnJvciA9IChtZXNzYWdlOiBzdHJpbmcpID0+IG5ldyBFcnJvcihtZXNzYWdlKTtcblxuICBpZiAoc2hhcmUuc2hhcmUubGVuZ3RoIDwgc2hhcmVMZW5ndGgpIHtcbiAgICB0aHJvdyBlcnJvcihgRXhjZXB0ZWQgc2hhcmUgbGVuZ3RoIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAke3NoYXJlTGVuZ3RofSBidXQgZ290ICR7c2hhcmUuc2hhcmUubGVuZ3RofS5gKTtcbiAgfVxuXG4gIGlmIChpc0V4YWN0TGVuZ3RoICYmIHNoYXJlLnNoYXJlLmxlbmd0aCAhPT0gc2hhcmVMZW5ndGgpIHtcbiAgICB0aHJvdyBlcnJvcihgRXhjZXB0ZWQgc2hhcmUgbGVuZ3RoIHRvIGJlICR7c2hhcmVMZW5ndGh9IGJ1dCBnb3QgJHtzaGFyZS5zaGFyZS5sZW5ndGh9LmApO1xuICB9XG5cbiAgaWYgKHNoYXJlLmZyb20gPT09IHNoYXJlLnRvKSB7XG4gICAgdGhyb3cgZXJyb3IoYEtleSBzaGFyZSBzZW5kZXIgYW5kIHJlY2VpdmVyIGNhbm5vdCBiZSB0aGUgc2FtZS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlcyBLIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgSyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogS1NoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMTUzNiwgZmFsc2UpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBrOiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgMTUzNiksXG4gICAgbjogc2hhcmUuc2hhcmUuc3Vic3RyaW5nKDE1MzYpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgSyBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBLIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0S1NoYXJlKHNoYXJlOiBLU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBzaGFyZS5rICsgc2hhcmUubixcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgQSBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEEgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IEFTaGFyZSB7XG4gIHZhbGlkYXRlU2hhcmUoc2hhcmUsIDQ2MDgsIGZhbHNlKTtcbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlLnNoYXJlLnNsaWNlKDAsIDE1MzYpLFxuICAgIGFscGhhOiBzaGFyZS5zaGFyZS5zbGljZSgxNTM2LCAzMDcyKSxcbiAgICBtdTogc2hhcmUuc2hhcmUuc2xpY2UoMzA3MiwgNDYwOCksXG4gICAgbjogc2hhcmUuc2hhcmUuc2xpY2UoNDYwOCksXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBBIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEEgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBU2hhcmUoc2hhcmU6IEFTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IHNoYXJlLmshICsgc2hhcmUuYWxwaGEhICsgc2hhcmUubXUhICsgc2hhcmUubiEsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIE11IHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgTXUgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTXVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBNVVNoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMzA3Mik7XG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBhbHBoYTogc2hhcmUuc2hhcmUuc2xpY2UoMCwgMTUzNiksXG4gICAgbXU6IHNoYXJlLnNoYXJlLnNsaWNlKDE1MzYsIDMwNzIpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgTXUgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gTXUgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRNdVNoYXJlKHNoYXJlOiBNVVNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogc2hhcmUuYWxwaGEgKyBzaGFyZS5tdSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgRCBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEQgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IERTaGFyZSB7XG4gIHZhbGlkYXRlU2hhcmUoc2hhcmUsIDEzMCk7XG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljYXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBkZWx0YTogc2hhcmUuc2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgIEdhbW1hOiBzaGFyZS5zaGFyZS5zbGljZSg2NCwgMTMwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gRCBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERTaGFyZShzaGFyZTogRFNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogc2hhcmUuZGVsdGEgKyBzaGFyZS5HYW1tYSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgUyBhbmQgRCBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIFMgYW5kIEQgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU0RTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiB7IHNTaGFyZTogU2lnbmF0dXJlU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0ge1xuICB2YWxpZGF0ZVNoYXJlKHNoYXJlLCAzMjQpO1xuICByZXR1cm4ge1xuICAgIHNTaGFyZTogcGFyc2VTaWduYXR1cmVTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlLnNoYXJlLnNsaWNlKDAsIDE5NCkgfSksXG4gICAgZFNoYXJlOiBwYXJzZURTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlLnNoYXJlLnNsaWNlKDE5NCkgfSksXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBTIGFuZCBEIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIFMgYW5kIEQgc2hhcmUgaW4gYSBvYmplY3RcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTRFNoYXJlKHNoYXJlOiB7IHNTaGFyZTogU2lnbmF0dXJlU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNhcGFudEZyb21JbmRleChzaGFyZS5kU2hhcmUuaiksXG4gICAgc2hhcmU6IHNoYXJlLnNTaGFyZS5yICsgc2hhcmUuc1NoYXJlLnMgKyBzaGFyZS5zU2hhcmUueSArIHNoYXJlLmRTaGFyZS5kZWx0YSArIHNoYXJlLmRTaGFyZS5HYW1tYSxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgc2lnbmF0dXJlIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IFNpZ25hdHVyZVNoYXJlIHtcbiAgdmFsaWRhdGVTaGFyZShzaGFyZSwgMTk0KTtcbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNhcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICByOiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgNjQpLFxuICAgIHM6IHNoYXJlLnNoYXJlLnN1YnN0cmluZyg2NCwgMTI4KSxcbiAgICB5OiBzaGFyZS5zaGFyZS5zdWJzdHJpbmcoMTI4LCAxOTQpLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgc2lnbmF0dXJlIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEsgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTaWduYXR1cmVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmUsIHNlbmRlckluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2FwYW50RnJvbUluZGV4KHNlbmRlckluZGV4KSxcbiAgICBzaGFyZTogc2hhcmUuciArIHNoYXJlLnMgKyBzaGFyZS55LFxuICB9O1xufVxuXG4vKipcbiAqIGdldHMgcGFydGljYXBhbnQgaW5kZXhcbiAqIEBwYXJhbSBwYXJ0aWNpcGFudCAtIHBhcnRpY2lwYW50cyAodXNlciwgYmFja3VwLCBvciBiaXRnbylcbiAqIEByZXR1cm5zIGluZGV4ICgxLCAyLCAwciAzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljYXBhbnRJbmRleChwYXJ0aWNpcGFudDogJ3VzZXInIHwgJ2JhY2t1cCcgfCAnYml0Z28nKTogbnVtYmVyIHtcbiAgc3dpdGNoIChwYXJ0aWNpcGFudCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIDE7XG4gICAgY2FzZSAnYmFja3VwJzpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgJ2JpdGdvJzpcbiAgICAgIHJldHVybiAzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcignVW5rb3duIHBhcnRpY2lwYW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBnZXRzIHBhcnRpY2FwYW50IG5hbWUgYnkgaW5kZXhcbiAqIEBwYXJhbSBpbmRleCBwYXJ0aWNhcGFudCBpbmRleFxuICogQHJldHVybnMgcGFydGljYXBhbnQgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljYXBhbnRGcm9tSW5kZXgoaW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlVHlwZSB7XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVI7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBhcnRpY2FwYW50IGluZGV4ICR7aW5kZXh9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -645,6 +645,10 @@ export declare class Wallet implements IWallet {
|
|
|
645
645
|
/**
|
|
646
646
|
* Signs and sends a single unsigned token enablement transaction
|
|
647
647
|
* @param params
|
|
648
|
+
* @returns
|
|
649
|
+
* - The response from sending the transaction for hot wallets
|
|
650
|
+
* - The response from initiating the transaction for custodial wallets
|
|
651
|
+
* - The included prebuilt transaction for cold wallets
|
|
648
652
|
*/
|
|
649
653
|
sendTokenEnablement(params?: PrebuildAndSignTransactionOptions): Promise<any>;
|
|
650
654
|
/**
|
|
@@ -654,6 +658,9 @@ export declare class Wallet implements IWallet {
|
|
|
654
658
|
* Builds, signs, and sends a set of transactions that enables the specified tokens
|
|
655
659
|
* @param params -
|
|
656
660
|
* enableTokens: Token enablement operations we want to perform
|
|
661
|
+
* @return
|
|
662
|
+
* success: Successful responses from sendTokenEnablement
|
|
663
|
+
* failure: Errors from failed transactions
|
|
657
664
|
*/
|
|
658
665
|
sendTokenEnablements(params?: BuildTokenEnablementOptions): Promise<{
|
|
659
666
|
success: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/wallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EACL,SAAS,EACT,iBAAiB,EAIlB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,oCAAoC,EACpC,2BAA2B,EAC3B,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,iCAAiC,EACjC,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,4BAA4B,EAC7B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,qBAAa,MAAO,YAAW,OAAO;IACpC,SAAgB,KAAK,EAAE,SAAS,CAAC;IACjC,SAAgB,QAAQ,EAAE,SAAS,CAAC;IACpC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAW;gBAE7B,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG;IAYlE;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB,yBAAyB,IAAI,MAAM,EAAE;IAoDrC;;OAEG;IACH,gCAAgC,IAAI,MAAM,EAAE;IAI5C;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;;OAIG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACI,KAAK,IAAI,MAAM;IAItB;;OAEG;IACI,MAAM,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B;;;;;OAKG;IACI,YAAY,IAAI,MAAM,GAAG,SAAS;IAIzC;;;OAGG;IACH,oBAAoB,IAAI,GAAG;IAO3B;;OAEG;IACH,YAAY,IAAI,kBAAkB,GAAG,SAAS;IAI9C;;OAEG;IACH,gBAAgB,IAAI,gBAAgB,EAAE;IAMtC;;;;OAIG;IACG,OAAO,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBhE;;;;;OAKG;IACG,cAAc,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBtE;;;;OAIG;IACG,SAAS,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwG5D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAKhE;;;OAGG;IACG,oBAAoB,CAAC,MAAM,GAAE,2BAAgC,GAAG,OAAO,CAAC,GAAG,CAAC;IAKlF;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBvF;;;;OAIG;IACG,QAAQ,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAgB1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;YACW,cAAc;IAkD5B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,mBAAmB,CAAC,MAAM,GAAE,0BAA+B,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhF;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAItE;;;;OAIG;IACG,0BAA0B,CAAC,UAAU,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAYpE;;;;;;;;;;UAUM;IACA,gBAAgB,CAAC,cAAc,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAO9D;;;;;;;OAOG;IACG,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAerE;;;;;;;;;;;OAWG;IACG,mBAAmB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAe3E;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IA+DpD;;;;OAIG;IACG,MAAM,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAYtD;;;;OAIG;IACG,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,GAAG,CAAC;IASxE;;;;OAIG;IACG,SAAS,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IA4F5D;;;;OAIG;IACG,UAAU,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqB9D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,aAAa,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwIpE;;;;OAIG;IACG,aAAa,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAapE;;;OAGG;IACG,YAAY,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAmBhE;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,GAAG,CAAC;IA0BxE;;;OAGG;IACG,UAAU,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAMjE;;;OAGG;IACG,aAAa,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAMpE;;;;;;OAMG;IACG,wBAAwB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBrG;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCtD;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBhE;;;;OAIG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IA+EhE;;;;;OAKG;IACG,UAAU,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAO9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,mBAAmB,CAAC,MAAM,GAAE,0BAA+B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA8CtG;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,GAAE,4BAAiC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsC5F;;;;OAIG;IACH,UAAU,CAAC,MAAM,GAAE,iBAAsB,GAAG,MAAM;IAsClD;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,iCAAsC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqF5G;;;OAGG;IACG,qBAAqB,CAAC,MAAM,GAAE,4BAAiC,GAAG,OAAO,CAAC,GAAG,CAAC;IAmDpF;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB5E;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,QAAQ,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwD1D;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC;IAmBlE;;;;OAIG;IACG,0BAA0B,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIlF;;;;;;;OAOG;IACG,SAAS,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAS5D;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAOjE;;;;;;;;;OASG;IACG,mBAAmB,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzD;;;;;;OAMG;IACG,gBAAgB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,GAAG,CAAC;IAc1E;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,GAAE,GAAQ;IAcpC;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,GAAG,CAAC;IAM1E;;;;OAIG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;OAEG;IACH,MAAM,IAAI,UAAU;IAIpB;;OAEG;IACH,gBAAgB,IAAI,cAAc;IAOlC;;OAEG;IACH,eAAe,IAAI,aAAa;IAOhC;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,IAAI;IA8E1D;;;;OAIG;IACG,0BAA0B,CAC9B,MAAM,GAAE,oCAAyC,GAChD,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAsCvC;;;;;;OAMG;IACG,wBAAwB,CAAC,MAAM,GAAE,iCAAsC,GAAG,OAAO,CAAC,GAAG,CAAC;IAgC5F;;;;OAIG;IACG,yBAAyB,CAAC,MAAM,GAAE,oCAAyC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BhG;;;;;OAKG;IACU,qBAAqB,CAChC,MAAM,GAAE,2BAAkD,GACzD,OAAO,CAAC,yBAAyB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/wallet.ts"],"names":[],"mappings":"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"}
|