@bitgo/sdk-core 36.43.0 → 37.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/account-lib/baseCoin/enum.d.ts +19 -15
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +24 -16
- package/dist/src/api/types.d.ts +12 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +4 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +6 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bitgoBase.d.ts +3 -1
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
- package/dist/src/bitgo/bitgoBase.js +1 -1
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +8 -2
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts +12 -1
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/decryptKeychain.js +34 -2
- package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -1
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +10 -2
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +2 -4
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +12 -1
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
- package/dist/src/bitgo/trading/network/network.d.ts +1 -1
- package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/network.js +3 -5
- package/dist/src/bitgo/trading/network/types.d.ts +1 -1
- package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/types.js +1 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts +14 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/tradingAccount.js +53 -7
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +1 -1
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
- package/dist/src/bitgo/tss/bitgoPubKeys.js +6 -9
- package/dist/src/bitgo/tss/common.d.ts +2 -1
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +10 -1
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +37 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +95 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -1
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +8 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +10 -7
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +33 -7
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +96 -18
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +26 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +8 -5
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +27 -8
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +14 -4
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +125 -50
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +9 -6
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +96 -38
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +32 -2
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +141 -6
- package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -1
- package/dist/src/bitgo/utils/txRequest.js +6 -4
- package/dist/src/bitgo/wallet/BuildParams.d.ts +20 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +12 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts +60 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +20 -19
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +16 -8
- package/dist/src/bitgo/wallet/wallet.d.ts +77 -2
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +281 -13
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +49 -23
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.js +183 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +239 -0
- package/dist/test/unit/bitgo/utils/txRequest.js +75 -1
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +62 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.js +326 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +43 -0
- package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +5 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +0 -20
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +0 -46
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +0 -2
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +0 -1
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +0 -137
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsaMPCv2.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,
|
|
1
|
+
{"version":3,"file":"eddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsaMPCv2.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAI9B,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAsB,QAAQ,EAAW,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAarG,OAAO,EAAmC,0BAA0B,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAA6B,MAAM,0BAA0B,CAAC;AAE7F,qBAAa,eAAgB,SAAQ,cAAc;IACjD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;KAC1C,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsJvB,yBAAyB,CAC7B,gBAAgB,EAAE,4BAA4B,EAC9C,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,8BAA8B,CAAC,EAAE,MAAM,EACvC,YAAY,CAAC,EAAE,yBAAyB,GACvC,OAAO,CAAC,QAAQ,CAAC;YA8DN,eAAe;YAmBf,iBAAiB;YAiBjB,gBAAgB;IAKxB,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAIpC,+BAA+B,CACnC,QAAQ,EAAE,sBAAsB,CAAC,8BAA8B,CAAC,EAChE,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAIpC,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAIpC,+BAA+B,CACnC,QAAQ,EAAE,sBAAsB,CAAC,8BAA8B,CAAC,EAChE,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAQ1C;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAKjE;;;;;;OAMG;IACG,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC;IAKrF;;;;;;;;;;OAUG;YACW,eAAe;CAsJ9B"}
|
|
@@ -43,8 +43,12 @@ const io_ts_types_1 = require("io-ts-types");
|
|
|
43
43
|
const public_types_1 = require("@bitgo/public-types");
|
|
44
44
|
const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
45
45
|
const bitgoPubKeys_1 = require("../../../tss/bitgoPubKeys");
|
|
46
|
+
const common_1 = require("../../../tss/common");
|
|
47
|
+
const codecs_1 = require("../../codecs");
|
|
48
|
+
const eddsaMPCv2_1 = require("../../../tss/eddsa/eddsaMPCv2");
|
|
46
49
|
const opengpgUtils_1 = require("../../opengpgUtils");
|
|
47
50
|
const typesMPCv2_1 = require("../ecdsa/typesMPCv2");
|
|
51
|
+
const baseTypes_1 = require("../baseTypes");
|
|
48
52
|
const base_1 = require("./base");
|
|
49
53
|
const eddsaMPCv2KeyGenSender_1 = require("./eddsaMPCv2KeyGenSender");
|
|
50
54
|
class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
@@ -129,7 +133,7 @@ class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
|
129
133
|
const backupPrivateMaterial = backupDkg.getKeyShare();
|
|
130
134
|
const userReducedPrivateMaterial = userDkg.getReducedKeyShare();
|
|
131
135
|
const backupReducedPrivateMaterial = backupDkg.getReducedKeyShare();
|
|
132
|
-
const userKeychainPromise = this.addUserKeychain(userCommonKeychain, userPrivateMaterial, userReducedPrivateMaterial, params.passphrase, params.originalPasscodeEncryptionCode);
|
|
136
|
+
const userKeychainPromise = this.addUserKeychain(userCommonKeychain, userPrivateMaterial, userReducedPrivateMaterial, params.passphrase, params.originalPasscodeEncryptionCode, params.webauthnInfo);
|
|
133
137
|
const backupKeychainPromise = this.addBackupKeychain(backupCommonKeychain, backupPrivateMaterial, backupReducedPrivateMaterial, params.passphrase, params.originalPasscodeEncryptionCode);
|
|
134
138
|
const bitgoKeychainPromise = this.addBitgoKeychain(userCommonKeychain);
|
|
135
139
|
const [userKeychain, backupKeychain, bitgoKeychain] = await Promise.all([
|
|
@@ -145,10 +149,11 @@ class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
|
145
149
|
};
|
|
146
150
|
}
|
|
147
151
|
// #region keychain utils
|
|
148
|
-
async createParticipantKeychain(participantIndex, commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode) {
|
|
152
|
+
async createParticipantKeychain(participantIndex, commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode, webauthnInfo) {
|
|
149
153
|
let source;
|
|
150
154
|
let encryptedPrv = undefined;
|
|
151
155
|
let reducedEncryptedPrv = undefined;
|
|
156
|
+
let privateMaterialBase64 = undefined;
|
|
152
157
|
switch (participantIndex) {
|
|
153
158
|
case typesMPCv2_1.MPCv2PartiesEnum.USER:
|
|
154
159
|
case typesMPCv2_1.MPCv2PartiesEnum.BACKUP:
|
|
@@ -156,8 +161,9 @@ class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
|
156
161
|
(0, assert_1.default)(privateMaterial, `Private material is required for ${source} keychain`);
|
|
157
162
|
(0, assert_1.default)(reducedPrivateMaterial, `Reduced private material is required for ${source} keychain`);
|
|
158
163
|
(0, assert_1.default)(passphrase, `Passphrase is required for ${source} keychain`);
|
|
164
|
+
privateMaterialBase64 = privateMaterial.toString('base64');
|
|
159
165
|
encryptedPrv = this.bitgo.encrypt({
|
|
160
|
-
input:
|
|
166
|
+
input: privateMaterialBase64,
|
|
161
167
|
password: passphrase,
|
|
162
168
|
});
|
|
163
169
|
// Encrypts the CBOR-encoded ReducedKeyShare (which contains the party's public
|
|
@@ -185,11 +191,23 @@ class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
|
185
191
|
originalPasscodeEncryptionCode,
|
|
186
192
|
isMPCv2: true,
|
|
187
193
|
};
|
|
194
|
+
if (webauthnInfo && participantIndex === typesMPCv2_1.MPCv2PartiesEnum.USER && privateMaterialBase64) {
|
|
195
|
+
keychainParams.webauthnDevices = [
|
|
196
|
+
{
|
|
197
|
+
otpDeviceId: webauthnInfo.otpDeviceId,
|
|
198
|
+
prfSalt: webauthnInfo.prfSalt,
|
|
199
|
+
encryptedPrv: await this.bitgo.encryptAsync({
|
|
200
|
+
input: privateMaterialBase64,
|
|
201
|
+
password: webauthnInfo.passphrase,
|
|
202
|
+
}),
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
}
|
|
188
206
|
const keychains = this.baseCoin.keychains();
|
|
189
207
|
return { ...(await keychains.add(keychainParams)), reducedEncryptedPrv };
|
|
190
208
|
}
|
|
191
|
-
async addUserKeychain(commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode) {
|
|
192
|
-
return this.createParticipantKeychain(typesMPCv2_1.MPCv2PartiesEnum.USER, commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode);
|
|
209
|
+
async addUserKeychain(commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode, webauthnInfo) {
|
|
210
|
+
return this.createParticipantKeychain(typesMPCv2_1.MPCv2PartiesEnum.USER, commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode, webauthnInfo);
|
|
193
211
|
}
|
|
194
212
|
async addBackupKeychain(commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode) {
|
|
195
213
|
return this.createParticipantKeychain(typesMPCv2_1.MPCv2PartiesEnum.BACKUP, commonKeychain, privateMaterial, reducedPrivateMaterial, passphrase, originalPasscodeEncryptionCode);
|
|
@@ -210,6 +228,123 @@ class EddsaMPCv2Utils extends base_1.BaseEddsaUtils {
|
|
|
210
228
|
async sendKeyGenerationRound2BySender(senderFn, payload) {
|
|
211
229
|
return senderFn(public_types_1.MPCv2KeyGenStateEnum['MPCv2-R2'], payload);
|
|
212
230
|
}
|
|
231
|
+
// #endregion
|
|
232
|
+
// #region sign tx request
|
|
233
|
+
/**
|
|
234
|
+
* Signs the transaction associated with the transaction request.
|
|
235
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
236
|
+
* @param {string} params.prv - decrypted private key
|
|
237
|
+
* @param {string} params.reqId - request id
|
|
238
|
+
* @returns {Promise<TxRequest>} fully signed TxRequest
|
|
239
|
+
*/
|
|
240
|
+
async signTxRequest(params) {
|
|
241
|
+
this.bitgo.setRequestTracer(params.reqId);
|
|
242
|
+
return this.signRequestBase(params, baseTypes_1.RequestType.tx);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Signs the message associated with the transaction request.
|
|
246
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
247
|
+
* @param {string} params.prv - decrypted private key
|
|
248
|
+
* @param {string} params.reqId - request id
|
|
249
|
+
* @returns {Promise<TxRequest>} fully signed TxRequest
|
|
250
|
+
*/
|
|
251
|
+
async signTxRequestForMessage(params) {
|
|
252
|
+
this.bitgo.setRequestTracer(params.reqId);
|
|
253
|
+
return this.signRequestBase(params, baseTypes_1.RequestType.message);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Full 3-round EdDSA MPCv2 (MPS) online signing orchestration.
|
|
257
|
+
*
|
|
258
|
+
* Protocol overview:
|
|
259
|
+
* WASM Round 0 → getFirstMessage() (produces userMsg1)
|
|
260
|
+
* API Round 1 → send userMsg1 / recv bitgoMsg1
|
|
261
|
+
* WASM Round 1 → handleIncomingMessages([userMsg1, bitgoMsg1]) (produces userMsg2)
|
|
262
|
+
* API Round 2 → send userMsg2 / recv bitgoMsg2
|
|
263
|
+
* WASM Round 2 → handleIncomingMessages([userMsg2, bitgoMsg2]) (produces userMsg3)
|
|
264
|
+
* API Round 3 → send userMsg3 (WP finalises; no BitGo msg returned to client)
|
|
265
|
+
*/
|
|
266
|
+
async signRequestBase(params, requestType) {
|
|
267
|
+
const userKeyShare = Buffer.from(params.prv, 'base64');
|
|
268
|
+
const txRequest = typeof params.txRequest === 'string'
|
|
269
|
+
? await (0, common_1.getTxRequest)(this.bitgo, this.wallet.id(), params.txRequest, params.reqId)
|
|
270
|
+
: params.txRequest;
|
|
271
|
+
let txOrMessageToSign;
|
|
272
|
+
let derivationPath;
|
|
273
|
+
let bufferContent;
|
|
274
|
+
// One fresh ed25519 GPG key pair per signing session, reused across all signing rounds.
|
|
275
|
+
const userGpgKey = await (0, opengpgUtils_1.generateGPGKeyPair)('ed25519');
|
|
276
|
+
const userGpgPrvKey = await pgp.readPrivateKey({ armoredKey: userGpgKey.privateKey });
|
|
277
|
+
const bitgoGpgPubKey = await this.pickBitgoPubGpgKeyForSigning(true, params.reqId, txRequest.enterpriseId, true);
|
|
278
|
+
(0, assert_1.default)(bitgoGpgPubKey, 'Missing BitGo GPG key for MPCv2');
|
|
279
|
+
if (requestType === baseTypes_1.RequestType.tx) {
|
|
280
|
+
(0, assert_1.default)(txRequest.transactions || txRequest.unsignedTxs, 'Unable to find transactions in txRequest');
|
|
281
|
+
const unsignedTx = txRequest.apiVersion === 'full' ? txRequest.transactions[0].unsignedTx : txRequest.unsignedTxs[0];
|
|
282
|
+
txOrMessageToSign = unsignedTx.signableHex;
|
|
283
|
+
(0, assert_1.default)(txOrMessageToSign, 'Missing signableHex in unsignedTx');
|
|
284
|
+
derivationPath = unsignedTx.derivationPath;
|
|
285
|
+
bufferContent = Buffer.from(txOrMessageToSign, 'hex');
|
|
286
|
+
await this.baseCoin.verifyTransaction({
|
|
287
|
+
txPrebuild: { txHex: unsignedTx.serializedTxHex ?? txOrMessageToSign },
|
|
288
|
+
txParams: params.txParams || { recipients: [] },
|
|
289
|
+
wallet: this.wallet,
|
|
290
|
+
walletType: this.wallet.multisigType(),
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
else if (requestType === baseTypes_1.RequestType.message) {
|
|
294
|
+
(0, assert_1.default)(txRequest.messages && txRequest.messages.length > 0, 'Unable to find messages in txRequest');
|
|
295
|
+
txOrMessageToSign = txRequest.messages[0].messageEncoded;
|
|
296
|
+
(0, assert_1.default)(txOrMessageToSign, 'Missing messageEncoded in messages[0]');
|
|
297
|
+
derivationPath = txRequest.messages[0].derivationPath || 'm/0';
|
|
298
|
+
bufferContent = Buffer.from(txOrMessageToSign, 'hex');
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
throw new Error('Invalid request type');
|
|
302
|
+
}
|
|
303
|
+
// ── WASM Round 0 ──────────────────────────────────────────────────────────
|
|
304
|
+
const partyId = params.mpcv2PartyId ?? typesMPCv2_1.MPCv2PartiesEnum.USER;
|
|
305
|
+
const signerShareType = partyId === typesMPCv2_1.MPCv2PartiesEnum.USER ? baseTypes_1.SignatureShareType.USER : baseTypes_1.SignatureShareType.BACKUP;
|
|
306
|
+
const userDsg = new sdk_lib_mpc_1.EddsaMPSDsg.DSG(partyId);
|
|
307
|
+
userDsg.initDsg(userKeyShare, bufferContent, derivationPath, typesMPCv2_1.MPCv2PartiesEnum.BITGO);
|
|
308
|
+
const userMsg1 = userDsg.getFirstMessage();
|
|
309
|
+
// ── API Round 1 ───────────────────────────────────────────────────────────
|
|
310
|
+
const signatureShareRound1 = await (0, eddsaMPCv2_1.getSignatureShareRoundOne)(userMsg1, userGpgPrvKey, partyId);
|
|
311
|
+
let latestTxRequest = await (0, common_1.sendSignatureShareV2)(this.bitgo, txRequest.walletId, txRequest.txRequestId, [signatureShareRound1], requestType, this.baseCoin.getMPCAlgorithm(), userGpgKey.publicKey, undefined, this.wallet.multisigTypeVersion(), params.reqId);
|
|
312
|
+
(0, assert_1.default)(latestTxRequest.transactions || latestTxRequest.messages, 'Invalid txRequest object after round 1');
|
|
313
|
+
const signatureShares1 = requestType === baseTypes_1.RequestType.tx
|
|
314
|
+
? latestTxRequest.transactions[0].signatureShares
|
|
315
|
+
: latestTxRequest.messages[0].signatureShares;
|
|
316
|
+
const bitgoShareRoundOne = (0, common_1.getBitgoSignatureShare)(signatureShares1, signerShareType);
|
|
317
|
+
const parsedBitGoToUserSigShareRoundOne = (0, codecs_1.decodeWithCodec)(public_types_1.EddsaMPCv2SignatureShareRound1Output, JSON.parse(bitgoShareRoundOne.share), 'Unexpected signature share response. Unable to parse data.');
|
|
318
|
+
if (parsedBitGoToUserSigShareRoundOne.type !== 'round1Output') {
|
|
319
|
+
throw new Error('Unexpected signature share response. Unable to parse data.');
|
|
320
|
+
}
|
|
321
|
+
const bitgoDeserializedMsg1 = await (0, eddsaMPCv2_1.verifyPeerMessageRoundOne)(parsedBitGoToUserSigShareRoundOne, bitgoGpgPubKey);
|
|
322
|
+
// ── WASM Round 1 ──────────────────────────────────────────────────────────
|
|
323
|
+
const [userMsg2] = userDsg.handleIncomingMessages([userMsg1, bitgoDeserializedMsg1]);
|
|
324
|
+
(0, assert_1.default)(userMsg2, 'WASM round 1 produced no message');
|
|
325
|
+
// ── API Round 2 ───────────────────────────────────────────────────────────
|
|
326
|
+
const signatureShareRoundTwo = await (0, eddsaMPCv2_1.getSignatureShareRoundTwo)(userMsg2, userGpgPrvKey, partyId);
|
|
327
|
+
latestTxRequest = await (0, common_1.sendSignatureShareV2)(this.bitgo, txRequest.walletId, txRequest.txRequestId, [signatureShareRoundTwo], requestType, this.baseCoin.getMPCAlgorithm(), userGpgKey.publicKey, undefined, this.wallet.multisigTypeVersion(), params.reqId);
|
|
328
|
+
(0, assert_1.default)(latestTxRequest.transactions || latestTxRequest.messages, 'Invalid txRequest object after round 2');
|
|
329
|
+
const txRequestSignatureShares = requestType === baseTypes_1.RequestType.tx
|
|
330
|
+
? latestTxRequest.transactions[0].signatureShares
|
|
331
|
+
: latestTxRequest.messages[0].signatureShares;
|
|
332
|
+
const bitgoShareRoundTwo = (0, common_1.getBitgoSignatureShare)(txRequestSignatureShares, signerShareType);
|
|
333
|
+
const parsedBitGoToUserSigShareRoundTwo = (0, codecs_1.decodeWithCodec)(public_types_1.EddsaMPCv2SignatureShareRound2Output, JSON.parse(bitgoShareRoundTwo.share), 'Unexpected signature share response. Unable to parse data.');
|
|
334
|
+
if (parsedBitGoToUserSigShareRoundTwo.type !== 'round2Output') {
|
|
335
|
+
throw new Error('Unexpected signature share response. Unable to parse data.');
|
|
336
|
+
}
|
|
337
|
+
const bitgoDeserializedMsg2 = await (0, eddsaMPCv2_1.verifyPeerMessageRoundTwo)(parsedBitGoToUserSigShareRoundTwo, bitgoGpgPubKey);
|
|
338
|
+
// ── WASM Round 2 ──────────────────────────────────────────────────────────
|
|
339
|
+
const [userMsg3] = userDsg.handleIncomingMessages([userMsg2, bitgoDeserializedMsg2]);
|
|
340
|
+
(0, assert_1.default)(userMsg3, 'WASM round 2 produced no message');
|
|
341
|
+
// ── API Round 3 ───────────────────────────────────────────────────────────
|
|
342
|
+
// No BitGo response to verify; WP finalises the signing server-side
|
|
343
|
+
const signatureShareRound3 = await (0, eddsaMPCv2_1.getSignatureShareRoundThree)(userMsg3, userGpgPrvKey, partyId);
|
|
344
|
+
const round3TxRequest = await (0, common_1.sendSignatureShareV2)(this.bitgo, txRequest.walletId, txRequest.txRequestId, [signatureShareRound3], requestType, this.baseCoin.getMPCAlgorithm(), userGpgKey.publicKey, undefined, this.wallet.multisigTypeVersion(), params.reqId);
|
|
345
|
+
(0, assert_1.default)(round3TxRequest?.txRequestId === txRequest.txRequestId, 'Invalid txRequest object after round 3');
|
|
346
|
+
return (0, common_1.sendTxRequest)(this.bitgo, txRequest.walletId, txRequest.txRequestId, requestType, params.reqId);
|
|
347
|
+
}
|
|
213
348
|
}
|
|
214
349
|
exports.EddsaMPCv2Utils = EddsaMPCv2Utils;
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2FNUEN2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvZWRkc2FNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLDZDQUE2QztBQUM3QyxzREFPNkI7QUFDN0Isb0RBQXFFO0FBR3JFLDREQUFxRztBQUNyRyxxREFBd0Q7QUFDeEQsb0RBQXVEO0FBQ3ZELGlDQUF3QztBQUN4QyxxRUFBNkY7QUFFN0YsTUFBYSxlQUFnQixTQUFRLHFCQUFjO0lBQ2pELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsZUFBZSxDQUFDLE1BSXJCO1FBQ0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLGlDQUFrQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNwRixNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDL0MsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLHNCQUFRLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLGlDQUFrQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sWUFBWSxHQUFHLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4RixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDbkQsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFN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MUcsQ0FBQztJQUVELEtBQUssQ0FBQywrQkFBK0IsQ0FDbkMsUUFBZ0UsRUFDaEUsT0FBc0M7UUFFdEMsT0FBTyxRQUFRLENBQUMsbUNBQW9CLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FDM0IsVUFBa0IsRUFDbEIsT0FBc0M7UUFFdEMsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBQSxrREFBeUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxLQUFLLENBQUMsK0JBQStCLENBQ25DLFFBQWdFLEVBQ2hFLE9BQXNDO1FBRXRDLE9BQU8sUUFBUSxDQUFDLG1DQUFvQixDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDRjtBQW5SRCwwQ0FtUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBwZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBOb25FbXB0eVN0cmluZyB9IGZyb20gJ2lvLXRzLXR5cGVzJztcbmltcG9ydCB7XG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2UsXG4gIE1QQ3YyS2V5R2VuU3RhdGVFbnVtLFxuICBNUEN2MlBhcnR5RnJvbVN0cmluZ09yTnVtYmVyLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEVkZHNhTVBTRGtnLCBNUFNDb21tcywgTVBTVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUgfSBmcm9tICcuLi8uLi8uLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnLCBpc0JpdGdvRWRkc2FNcGN2MlB1YktleSB9IGZyb20gJy4uLy4uLy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVHUEdLZXlQYWlyIH0gZnJvbSAnLi4vLi4vb3BlbmdwZ1V0aWxzJztcbmltcG9ydCB7IE1QQ3YyUGFydGllc0VudW0gfSBmcm9tICcuLi9lY2RzYS90eXBlc01QQ3YyJztcbmltcG9ydCB7IEJhc2VFZGRzYVV0aWxzIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEVkZHNhTVBDdjJLZXlHZW5TZW5kRm4sIEtleUdlblNlbmRlckZvckVudGVycHJpc2UgfSBmcm9tICcuL2VkZHNhTVBDdjJLZXlHZW5TZW5kZXInO1xuXG5leHBvcnQgY2xhc3MgRWRkc2FNUEN2MlV0aWxzIGV4dGVuZHMgQmFzZUVkZHNhVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlOiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgY29uc3QgdXNlcktleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlcktleVBhaXIucHJpdmF0ZUtleSB9KTtcbiAgICBjb25zdCB1c2VyR3BnUHVibGljS2V5ID0gdXNlcktleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IFt1c2VyUGssIHVzZXJTa10gPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOUtleVBhaXIodXNlckdwZ0tleSk7XG5cbiAgICBjb25zdCBiYWNrdXBLZXlQYWlyID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdlZDI1NTE5Jyk7XG4gICAgY29uc3QgYmFja3VwR3BnS2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogYmFja3VwS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IGJhY2t1cEdwZ1B1YmxpY0tleSA9IGJhY2t1cEtleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IFtiYWNrdXBQaywgYmFja3VwU2tdID0gYXdhaXQgTVBTQ29tbXMuZXh0cmFjdEVkMjU1MTlLZXlQYWlyKGJhY2t1cEdwZ0tleSk7XG5cbiAgICAvLyBHZXQgdGhlIEJpdEdvIEVkRFNBIE1QQ3YyIHB1YmxpYyBrZXkgKGVkMjU1MTkpLiBVc2luZyB0aGUgZGVmYXVsdCBtcGN2MlB1YmxpY0tleSAoc2VjcDI1NmsxKVxuICAgIC8vIGhlcmUgd291bGQgY2F1c2UgYSBXQVNNIFwiSW52YWxpZCBJbnB1dFwiIGVycm9yLCBzbyB3ZSByZXF1aXJlIHRoZSBkZWRpY2F0ZWQgZWRkc2FNcGN2MlB1YmxpY0tleS5cbiAgICBjb25zdCB7IGVkZHNhTXBjdjJQdWJsaWNLZXkgfSA9IGF3YWl0IHRoaXMuZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzKHBhcmFtcy5lbnRlcnByaXNlLCB0cnVlKTtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleSA9IGVkZHNhTXBjdjJQdWJsaWNLZXkgPz8gdGhpcy5iaXRnb0VkZHNhTXBjdjJQdWJsaWNHcGdLZXk7XG4gICAgYXNzZXJ0KGJpdGdvUHVibGljR3BnS2V5LCAnRmFpbGVkIHRvIGdldCBCaXRHbyBFZERTQSBNUEN2MiBHUEcgcHVibGljIGtleScpO1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCA9IGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCk7XG5cbiAgICBpZiAoZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZyh0aGlzLmJpdGdvLmdldEVudigpKSkge1xuICAgICAgYXNzZXJ0KGlzQml0Z29FZGRzYU1wY3YyUHViS2V5KGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCksICdJbnZhbGlkIEJpdEdvIEdQRyBwdWJsaWMga2V5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0Z29LZXlPYmogPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCB9KTtcbiAgICBjb25zdCBiaXRnb1BrID0gYXdhaXQgTVBTQ29tbXMuZXh0cmFjdEVkMjU1MTlQdWJsaWNLZXkoYml0Z29LZXlPYmopO1xuXG4gICAgLy8gQ3JlYXRlIERLRyBzZXNzaW9ucyBmb3IgdXNlciAocGFydHkgMCkgYW5kIGJhY2t1cCAocGFydHkgMSlcbiAgICBjb25zdCB1c2VyRGtnID0gbmV3IEVkZHNhTVBTRGtnLkRLRygzLCAyLCBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpO1xuICAgIGNvbnN0IGJhY2t1cERrZyA9IG5ldyBFZGRzYU1QU0RrZy5ES0coMywgMiwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApO1xuXG4gICAgLy8gI3JlZ2lvbiByb3VuZCAxXG4gICAgYXdhaXQgdXNlckRrZy5pbml0RGtnKHVzZXJTaywgW2JhY2t1cFBrLCBiaXRnb1BrXSk7XG4gICAgYXdhaXQgYmFja3VwRGtnLmluaXREa2coYmFja3VwU2ssIFt1c2VyUGssIGJpdGdvUGtdKTtcblxuICAgIGNvbnN0IHVzZXJNc2cxID0gdXNlckRrZy5nZXRGaXJzdE1lc3NhZ2UoKTtcbiAgICBjb25zdCBiYWNrdXBNc2cxID0gYmFja3VwRGtnLmdldEZpcnN0TWVzc2FnZSgpO1xuXG4gICAgY29uc3QgdXNlclNpZ25lZE1zZzEgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMS5wYXlsb2FkKSwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJhY2t1cE1zZzEucGF5bG9hZCksIGJhY2t1cEdwZ0tleSk7XG5cbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXModXNlckdwZ1B1YmxpY0tleSksICdVc2VyIEdQRyBwdWJsaWMga2V5IGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KE5vbkVtcHR5U3RyaW5nLmlzKGJhY2t1cEdwZ1B1YmxpY0tleSksICdCYWNrdXAgR1BHIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQnKTtcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBiaXRnb01zZzEgfSA9IGF3YWl0IHRoaXMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDEocGFyYW1zLmVudGVycHJpc2UsIHtcbiAgICAgIHVzZXJHcGdQdWJsaWNLZXksXG4gICAgICBiYWNrdXBHcGdQdWJsaWNLZXksXG4gICAgICB1c2VyTXNnMTogdXNlclNpZ25lZE1zZzEsXG4gICAgICBiYWNrdXBNc2cxOiBiYWNrdXBTaWduZWRNc2cxLFxuICAgIH0pO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gcm91bmQgMlxuICAgIGNvbnN0IGJpdGdvUmF3TXNnMUJ5dGVzID0gYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzEsIGJpdGdvS2V5T2JqKTtcbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICBmcm9tOiBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPLFxuICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoYml0Z29SYXdNc2cxQnl0ZXMpLFxuICAgIH07XG5cbiAgICBjb25zdCByb3VuZDFNZXNzYWdlczogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZXMgPSBbdXNlck1zZzEsIGJhY2t1cE1zZzEsIGJpdGdvRGVzZXJpYWxpemVkTXNnMV07XG5cbiAgICBjb25zdCB1c2VyUm91bmQyTXNncyA9IHVzZXJEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDFNZXNzYWdlcyk7XG4gICAgY29uc3QgYmFja3VwUm91bmQyTXNncyA9IGJhY2t1cERrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMU1lc3NhZ2VzKTtcblxuICAgIGFzc2VydCh1c2VyUm91bmQyTXNncy5sZW5ndGggPT09IDEsICdVc2VyIHJvdW5kIDEgc2hvdWxkIHByb2R1Y2UgZXhhY3RseSBvbmUgcm91bmQgMiBtZXNzYWdlJyk7XG4gICAgYXNzZXJ0KGJhY2t1cFJvdW5kMk1zZ3MubGVuZ3RoID09PSAxLCAnQmFja3VwIHJvdW5kIDEgc2hvdWxkIHByb2R1Y2UgZXhhY3RseSBvbmUgcm91bmQgMiBtZXNzYWdlJyk7XG5cbiAgICBjb25zdCB1c2VyTXNnMiA9IHVzZXJSb3VuZDJNc2dzWzBdO1xuICAgIGNvbnN0IGJhY2t1cE1zZzIgPSBiYWNrdXBSb3VuZDJNc2dzWzBdO1xuXG4gICAgY29uc3QgdXNlclNpZ25lZE1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMi5wYXlsb2FkKSwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkTXNnMiA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJhY2t1cE1zZzIucGF5bG9hZCksIGJhY2t1cEdwZ0tleSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uSWQ6IHNlc3Npb25JZFJvdW5kMixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgYml0Z29Nc2cyLFxuICAgIH0gPSBhd2FpdCB0aGlzLnNlbmRLZXlHZW5lcmF0aW9uUm91bmQyKHBhcmFtcy5lbnRlcnByaXNlLCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB1c2VyTXNnMjogdXNlclNpZ25lZE1zZzIsXG4gICAgICBiYWNrdXBNc2cyOiBiYWNrdXBTaWduZWRNc2cyLFxuICAgIH0pO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24ga2V5Y2hhaW4gY3JlYXRpb25cbiAgICBhc3NlcnQuZXF1YWwoc2Vzc2lvbklkLCBzZXNzaW9uSWRSb3VuZDIsICdSb3VuZCAxIGFuZCByb3VuZCAyIHNlc3Npb24gSURzIGRvIG5vdCBtYXRjaCcpO1xuXG4gICAgY29uc3QgYml0Z29SYXdNc2cyQnl0ZXMgPSBhd2FpdCBNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKGJpdGdvTXNnMiwgYml0Z29LZXlPYmopO1xuICAgIGNvbnN0IGJpdGdvRGVzZXJpYWxpemVkTXNnMjogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9IHtcbiAgICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShiaXRnb1Jhd01zZzJCeXRlcyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJvdW5kMk1lc3NhZ2VzOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IFt1c2VyTXNnMiwgYmFja3VwTXNnMiwgYml0Z29EZXNlcmlhbGl6ZWRNc2cyXTtcblxuICAgIGNvbnN0IHVzZXJGaW5hbE1zZ3MgPSB1c2VyRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQyTWVzc2FnZXMpO1xuICAgIGNvbnN0IGJhY2t1cEZpbmFsTXNncyA9IGJhY2t1cERrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMk1lc3NhZ2VzKTtcblxuICAgIGFzc2VydCh1c2VyRmluYWxNc2dzLmxlbmd0aCA9PT0gMCwgJ1dBU00gcm91bmQgMiBzaG91bGQgcHJvZHVjZSBubyBvdXRwdXQgbWVzc2FnZXMgZm9yIHVzZXInKTtcbiAgICBhc3NlcnQoYmFja3VwRmluYWxNc2dzLmxlbmd0aCA9PT0gMCwgJ1dBU00gcm91bmQgMiBzaG91bGQgcHJvZHVjZSBubyBvdXRwdXQgbWVzc2FnZXMgZm9yIGJhY2t1cCcpO1xuXG4gICAgY29uc3QgdXNlckNvbW1vbktleWNoYWluID0gdXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgIGNvbnN0IGJhY2t1cENvbW1vbktleWNoYWluID0gYmFja3VwRGtnLmdldENvbW1vbktleWNoYWluKCk7XG5cbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICB1c2VyQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgICdVc2VyIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW4sXG4gICAgICAnQmFja3VwIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuXG4gICAgY29uc3QgdXNlclByaXZhdGVNYXRlcmlhbCA9IHVzZXJEa2cuZ2V0S2V5U2hhcmUoKTtcbiAgICBjb25zdCBiYWNrdXBQcml2YXRlTWF0ZXJpYWwgPSBiYWNrdXBEa2cuZ2V0S2V5U2hhcmUoKTtcbiAgICBjb25zdCB1c2VyUmVkdWNlZFByaXZhdGVNYXRlcmlhbCA9IHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCk7XG4gICAgY29uc3QgYmFja3VwUmVkdWNlZFByaXZhdGVNYXRlcmlhbCA9IGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKTtcblxuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmFkZFVzZXJLZXljaGFpbihcbiAgICAgIHVzZXJDb21tb25LZXljaGFpbixcbiAgICAgIHVzZXJQcml2YXRlTWF0ZXJpYWwsXG4gICAgICB1c2VyUmVkdWNlZFByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gICAgY29uc3QgYmFja3VwS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5hZGRCYWNrdXBLZXljaGFpbihcbiAgICAgIGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgYmFja3VwUHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgYmFja3VwUmVkdWNlZFByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gICAgY29uc3QgYml0Z29LZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4odXNlckNvbW1vbktleWNoYWluKTtcblxuICAgIGNvbnN0IFt1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHVzZXJLZXljaGFpblByb21pc2UsXG4gICAgICBiYWNrdXBLZXljaGFpblByb21pc2UsXG4gICAgICBiaXRnb0tleWNoYWluUHJvbWlzZSxcbiAgICBdKTtcbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICByZXR1cm4ge1xuICAgICAgdXNlcktleWNoYWluLFxuICAgICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgIH07XG4gIH1cblxuICAvLyAjcmVnaW9uIGtleWNoYWluIHV0aWxzXG4gIGFzeW5jIGNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgcGFydGljaXBhbnRJbmRleDogTVBDdjJQYXJ0eUZyb21TdHJpbmdPck51bWJlcixcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHByaXZhdGVNYXRlcmlhbD86IEJ1ZmZlcixcbiAgICByZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsPzogQnVmZmVyLFxuICAgIHBhc3NwaHJhc2U/OiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBsZXQgc291cmNlOiBzdHJpbmc7XG4gICAgbGV0IGVuY3J5cHRlZFBydjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCByZWR1Y2VkRW5jcnlwdGVkUHJ2OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBzd2l0Y2ggKHBhcnRpY2lwYW50SW5kZXgpIHtcbiAgICAgIGNhc2UgTVBDdjJQYXJ0aWVzRW51bS5VU0VSOlxuICAgICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUDpcbiAgICAgICAgc291cmNlID0gcGFydGljaXBhbnRJbmRleCA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSID8gJ3VzZXInIDogJ2JhY2t1cCc7XG4gICAgICAgIGFzc2VydChwcml2YXRlTWF0ZXJpYWwsIGBQcml2YXRlIG1hdGVyaWFsIGlzIHJlcXVpcmVkIGZvciAke3NvdXJjZX0ga2V5Y2hhaW5gKTtcbiAgICAgICAgYXNzZXJ0KHJlZHVjZWRQcml2YXRlTWF0ZXJpYWwsIGBSZWR1Y2VkIHByaXZhdGUgbWF0ZXJpYWwgaXMgcmVxdWlyZWQgZm9yICR7c291cmNlfSBrZXljaGFpbmApO1xuICAgICAgICBhc3NlcnQocGFzc3BocmFzZSwgYFBhc3NwaHJhc2UgaXMgcmVxdWlyZWQgZm9yICR7c291cmNlfSBrZXljaGFpbmApO1xuICAgICAgICBlbmNyeXB0ZWRQcnYgPSB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICAgIGlucHV0OiBwcml2YXRlTWF0ZXJpYWwudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHBhc3N3b3JkOiBwYXNzcGhyYXNlLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gRW5jcnlwdHMgdGhlIENCT1ItZW5jb2RlZCBSZWR1Y2VkS2V5U2hhcmUgKHdoaWNoIGNvbnRhaW5zIHRoZSBwYXJ0eSdzIHB1YmxpY1xuICAgICAgICAvLyBrZXkpIHdpdGggdGhlIHdhbGxldCBwYXNzcGhyYXNlLiBUaGUgcmVzdWx0IGlzIHN0b3JlZCBhcyByZWR1Y2VkRW5jcnlwdGVkUHJ2XG4gICAgICAgIC8vIG9uIHRoZSBrZXkgY2FyZCBRUiBjb2RlIGFuZCByZXByZXNlbnRzIGEgc2Vjb25kIGNvcHkgb2Yga2V5IG1hdGVyaWFsXG4gICAgICAgIC8vIGJleW9uZCB0aGUgc2VydmVyLXN0b3JlZCBlbmNyeXB0ZWRQcnYuXG4gICAgICAgIHJlZHVjZWRFbmNyeXB0ZWRQcnYgPSB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICAgIC8vIEJ1ZmZlci50b1N0cmluZygnYmFzZTY0JykgY2FuIG5vdCBiZSB1c2VkIGhlcmUgYXMgaXQgZG9lcyBub3Qgd29yayBvbiB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAvLyBUaGUgYnJvd3NlciBkZWFscyB3aXRoIGEgQnVmZmVyIGFzIFVpbnQ4QXJyYXksIHRoZXJlZm9yZSBpbiB0aGUgYnJvd3NlciAudG9TdHJpbmcoJ2Jhc2U2NCcpIGp1c3QgY3JlYXRlcyBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgdGhlIGFycmF5IHZhbHVlcy5cbiAgICAgICAgICBpbnB1dDogYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkocmVkdWNlZFByaXZhdGVNYXRlcmlhbCkpKSksXG4gICAgICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTzpcbiAgICAgICAgc291cmNlID0gJ2JpdGdvJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFydGljaXBhbnQgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpblBhcmFtczogQWRkS2V5Y2hhaW5PcHRpb25zID0ge1xuICAgICAgc291cmNlLFxuICAgICAga2V5VHlwZTogJ3RzcycgYXMgS2V5VHlwZSxcbiAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgZW5jcnlwdGVkUHJ2LFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgaXNNUEN2MjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICByZXR1cm4geyAuLi4oYXdhaXQga2V5Y2hhaW5zLmFkZChrZXljaGFpblBhcmFtcykpLCByZWR1Y2VkRW5jcnlwdGVkUHJ2IH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFVzZXJLZXljaGFpbihcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHByaXZhdGVNYXRlcmlhbDogQnVmZmVyLFxuICAgIHJlZHVjZWRQcml2YXRlTWF0ZXJpYWw6IEJ1ZmZlcixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICAgICAgY29tbW9uS2V5Y2hhaW4sXG4gICAgICBwcml2YXRlTWF0ZXJpYWwsXG4gICAgICByZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgcGFzc3BocmFzZSxcbiAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEJhY2t1cEtleWNoYWluKFxuICAgIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gICAgcHJpdmF0ZU1hdGVyaWFsOiBCdWZmZXIsXG4gICAgcmVkdWNlZFByaXZhdGVNYXRlcmlhbDogQnVmZmVyLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgICBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCxcbiAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgcHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgcmVkdWNlZFByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHBhc3NwaHJhc2UsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRCaXRnb0tleWNoYWluKGNvbW1vbktleWNoYWluOiBzdHJpbmcpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUGFydGljaXBhbnRLZXljaGFpbihNUEN2MlBhcnRpZXNFbnVtLkJJVEdPLCBjb21tb25LZXljaGFpbik7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIGFzeW5jIHNlbmRLZXlHZW5lcmF0aW9uUm91bmQxKFxuICAgIGVudGVycHJpc2U6IHN0cmluZyxcbiAgICBwYXlsb2FkOiBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVxdWVzdFxuICApOiBQcm9taXNlPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnNlbmRLZXlHZW5lcmF0aW9uUm91bmQxQnlTZW5kZXIoS2V5R2VuU2VuZGVyRm9yRW50ZXJwcmlzZSh0aGlzLmJpdGdvLCBlbnRlcnByaXNlKSwgcGF5bG9hZCk7XG4gIH1cblxuICBhc3luYyBzZW5kS2V5R2VuZXJhdGlvblJvdW5kMUJ5U2VuZGVyKFxuICAgIHNlbmRlckZuOiBFZGRzYU1QQ3YyS2V5R2VuU2VuZEZuPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXNwb25zZT4sXG4gICAgcGF5bG9hZDogRWRkc2FNUEN2MktleUdlblJvdW5kMVJlcXVlc3RcbiAgKTogUHJvbWlzZTxFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyLVIxJ10sIHBheWxvYWQpO1xuICB9XG5cbiAgYXN5bmMgc2VuZEtleUdlbmVyYXRpb25Sb3VuZDIoXG4gICAgZW50ZXJwcmlzZTogc3RyaW5nLFxuICAgIHBheWxvYWQ6IEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0XG4gICk6IFByb21pc2U8RWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDJCeVNlbmRlcihLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlKHRoaXMuYml0Z28sIGVudGVycHJpc2UpLCBwYXlsb2FkKTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRLZXlHZW5lcmF0aW9uUm91bmQyQnlTZW5kZXIoXG4gICAgc2VuZGVyRm46IEVkZHNhTVBDdjJLZXlHZW5TZW5kRm48RWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlPixcbiAgICBwYXlsb2FkOiBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVxdWVzdFxuICApOiBQcm9taXNlPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZT4ge1xuICAgIHJldHVybiBzZW5kZXJGbihNUEN2MktleUdlblN0YXRlRW51bVsnTVBDdjItUjInXSwgcGF5bG9hZCk7XG4gIH1cbn1cbiJdfQ==
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2FNUEN2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvZWRkc2FNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLDZDQUE2QztBQUM3QyxzREFTNkI7QUFDN0Isb0RBQWtGO0FBR2xGLDREQUFxRztBQUNyRyxnREFBZ0g7QUFDaEgseUNBQStDO0FBQy9DLDhEQU11QztBQUN2QyxxREFBd0Q7QUFDeEQsb0RBQXVEO0FBQ3ZELDRDQUF3SDtBQUN4SCxpQ0FBd0M7QUFDeEMscUVBQTZGO0FBRTdGLE1BQWEsZUFBZ0IsU0FBUSxxQkFBYztJQUNqRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUtyQjtRQUNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxpQ0FBa0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxzQkFBUSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBQSxpQ0FBa0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxNQUFNLFlBQVksR0FBRyxNQUFNLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEYsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsU0FB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QyxDQUFDO1FBRXpHLE9BQU8sSUFBQSxzQkFBYSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekcsQ0FBQztDQUdGO0FBcmVELDBDQXFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IE5vbkVtcHR5U3RyaW5nIH0gZnJvbSAnaW8tdHMtdHlwZXMnO1xuaW1wb3J0IHtcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlcXVlc3QsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXNwb25zZSxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlcXVlc3QsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZSxcbiAgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0LFxuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIE1QQ3YyS2V5R2VuU3RhdGVFbnVtLFxuICBNUEN2MlBhcnR5RnJvbVN0cmluZ09yTnVtYmVyLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEVkZHNhTVBTRGtnLCBFZGRzYU1QU0RzZywgTVBTQ29tbXMsIE1QU1R5cGVzIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICcuLi8uLi8uLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlLCBXZWJhdXRobktleUVuY3J5cHRpb25JbmZvIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZywgaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkgfSBmcm9tICcuLi8uLi8uLi90c3MvYml0Z29QdWJLZXlzJztcbmltcG9ydCB7IGdldEJpdGdvU2lnbmF0dXJlU2hhcmUsIGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlVjIsIHNlbmRUeFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi90c3MvY29tbW9uJztcbmltcG9ydCB7IGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4uLy4uL2NvZGVjcyc7XG5pbXBvcnQge1xuICBnZXRTaWduYXR1cmVTaGFyZVJvdW5kT25lLFxuICBnZXRTaWduYXR1cmVTaGFyZVJvdW5kVHdvLFxuICBnZXRTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUsXG4gIHZlcmlmeVBlZXJNZXNzYWdlUm91bmRPbmUsXG4gIHZlcmlmeVBlZXJNZXNzYWdlUm91bmRUd28sXG59IGZyb20gJy4uLy4uLy4uL3Rzcy9lZGRzYS9lZGRzYU1QQ3YyJztcbmltcG9ydCB7IGdlbmVyYXRlR1BHS2V5UGFpciB9IGZyb20gJy4uLy4uL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vZWNkc2EvdHlwZXNNUEN2Mic7XG5pbXBvcnQgeyBSZXF1ZXN0VHlwZSwgU2lnbmF0dXJlU2hhcmVUeXBlLCBUU1NQYXJhbXNGb3JNZXNzYWdlV2l0aFBydiwgVFNTUGFyYW1zV2l0aFBydiwgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vYmFzZVR5cGVzJztcbmltcG9ydCB7IEJhc2VFZGRzYVV0aWxzIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEVkZHNhTVBDdjJLZXlHZW5TZW5kRm4sIEtleUdlblNlbmRlckZvckVudGVycHJpc2UgfSBmcm9tICcuL2VkZHNhTVBDdjJLZXlHZW5TZW5kZXInO1xuXG5leHBvcnQgY2xhc3MgRWRkc2FNUEN2MlV0aWxzIGV4dGVuZHMgQmFzZUVkZHNhVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlOiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm87XG4gIH0pOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+IHtcbiAgICBjb25zdCB1c2VyS2V5UGFpciA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignZWQyNTUxOScpO1xuICAgIGNvbnN0IHVzZXJHcGdLZXkgPSBhd2FpdCBwZ3AucmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQdWJsaWNLZXkgPSB1c2VyS2V5UGFpci5wdWJsaWNLZXk7XG4gICAgY29uc3QgW3VzZXJQaywgdXNlclNrXSA9IGF3YWl0IE1QU0NvbW1zLmV4dHJhY3RFZDI1NTE5S2V5UGFpcih1c2VyR3BnS2V5KTtcblxuICAgIGNvbnN0IGJhY2t1cEtleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCBiYWNrdXBHcGdLZXkgPSBhd2FpdCBwZ3AucmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBiYWNrdXBLZXlQYWlyLnByaXZhdGVLZXkgfSk7XG4gICAgY29uc3QgYmFja3VwR3BnUHVibGljS2V5ID0gYmFja3VwS2V5UGFpci5wdWJsaWNLZXk7XG4gICAgY29uc3QgW2JhY2t1cFBrLCBiYWNrdXBTa10gPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOUtleVBhaXIoYmFja3VwR3BnS2V5KTtcblxuICAgIC8vIEdldCB0aGUgQml0R28gRWREU0EgTVBDdjIgcHVibGljIGtleSAoZWQyNTUxOSkuIFVzaW5nIHRoZSBkZWZhdWx0IG1wY3YyUHVibGljS2V5IChzZWNwMjU2azEpXG4gICAgLy8gaGVyZSB3b3VsZCBjYXVzZSBhIFdBU00gXCJJbnZhbGlkIElucHV0XCIgZXJyb3IsIHNvIHdlIHJlcXVpcmUgdGhlIGRlZGljYXRlZCBlZGRzYU1wY3YyUHVibGljS2V5LlxuICAgIGNvbnN0IHsgZWRkc2FNcGN2MlB1YmxpY0tleSB9ID0gYXdhaXQgdGhpcy5nZXRCaXRnb0dwZ1B1YmtleUJhc2VkT25GZWF0dXJlRmxhZ3MocGFyYW1zLmVudGVycHJpc2UsIHRydWUpO1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5ID0gZWRkc2FNcGN2MlB1YmxpY0tleSA/PyB0aGlzLmJpdGdvRWRkc2FNcGN2MlB1YmxpY0dwZ0tleTtcbiAgICBhc3NlcnQoYml0Z29QdWJsaWNHcGdLZXksICdGYWlsZWQgdG8gZ2V0IEJpdEdvIEVkRFNBIE1QQ3YyIEdQRyBwdWJsaWMga2V5Jyk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkID0gYml0Z29QdWJsaWNHcGdLZXkuYXJtb3IoKTtcblxuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICBhc3NlcnQoaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkoYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkKSwgJ0ludmFsaWQgQml0R28gR1BHIHB1YmxpYyBrZXknKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0tleU9iaiA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkIH0pO1xuICAgIGNvbnN0IGJpdGdvUGsgPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOVB1YmxpY0tleShiaXRnb0tleU9iaik7XG5cbiAgICAvLyBDcmVhdGUgREtHIHNlc3Npb25zIGZvciB1c2VyIChwYXJ0eSAwKSBhbmQgYmFja3VwIChwYXJ0eSAxKVxuICAgIGNvbnN0IHVzZXJEa2cgPSBuZXcgRWRkc2FNUFNEa2cuREtHKDMsIDIsIE1QQ3YyUGFydGllc0VudW0uVVNFUik7XG4gICAgY29uc3QgYmFja3VwRGtnID0gbmV3IEVkZHNhTVBTRGtnLkRLRygzLCAyLCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCk7XG5cbiAgICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgICBhd2FpdCB1c2VyRGtnLmluaXREa2codXNlclNrLCBbYmFja3VwUGssIGJpdGdvUGtdKTtcbiAgICBhd2FpdCBiYWNrdXBEa2cuaW5pdERrZyhiYWNrdXBTaywgW3VzZXJQaywgYml0Z29Qa10pO1xuXG4gICAgY29uc3QgdXNlck1zZzEgPSB1c2VyRGtnLmdldEZpcnN0TWVzc2FnZSgpO1xuICAgIGNvbnN0IGJhY2t1cE1zZzEgPSBiYWNrdXBEa2cuZ2V0Rmlyc3RNZXNzYWdlKCk7XG5cbiAgICBjb25zdCB1c2VyU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cxLnBheWxvYWQpLCB1c2VyR3BnS2V5KTtcbiAgICBjb25zdCBiYWNrdXBTaWduZWRNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20oYmFja3VwTXNnMS5wYXlsb2FkKSwgYmFja3VwR3BnS2V5KTtcblxuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyh1c2VyR3BnUHVibGljS2V5KSwgJ1VzZXIgR1BHIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXMoYmFja3VwR3BnUHVibGljS2V5KSwgJ0JhY2t1cCBHUEcgcHVibGljIGtleSBpcyByZXF1aXJlZCcpO1xuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIGJpdGdvTXNnMSB9ID0gYXdhaXQgdGhpcy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMShwYXJhbXMuZW50ZXJwcmlzZSwge1xuICAgICAgdXNlckdwZ1B1YmxpY0tleSxcbiAgICAgIGJhY2t1cEdwZ1B1YmxpY0tleSxcbiAgICAgIHVzZXJNc2cxOiB1c2VyU2lnbmVkTXNnMSxcbiAgICAgIGJhY2t1cE1zZzE6IGJhY2t1cFNpZ25lZE1zZzEsXG4gICAgfSk7XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiByb3VuZCAyXG4gICAgY29uc3QgYml0Z29SYXdNc2cxQnl0ZXMgPSBhd2FpdCBNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKGJpdGdvTXNnMSwgYml0Z29LZXlPYmopO1xuICAgIGNvbnN0IGJpdGdvRGVzZXJpYWxpemVkTXNnMTogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9IHtcbiAgICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShiaXRnb1Jhd01zZzFCeXRlcyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJvdW5kMU1lc3NhZ2VzOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IFt1c2VyTXNnMSwgYmFja3VwTXNnMSwgYml0Z29EZXNlcmlhbGl6ZWRNc2cxXTtcblxuICAgIGNvbnN0IHVzZXJSb3VuZDJNc2dzID0gdXNlckRrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMU1lc3NhZ2VzKTtcbiAgICBjb25zdCBiYWNrdXBSb3VuZDJNc2dzID0gYmFja3VwRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQxTWVzc2FnZXMpO1xuXG4gICAgYXNzZXJ0KHVzZXJSb3VuZDJNc2dzLmxlbmd0aCA9PT0gMSwgJ1VzZXIgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcbiAgICBhc3NlcnQoYmFja3VwUm91bmQyTXNncy5sZW5ndGggPT09IDEsICdCYWNrdXAgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcblxuICAgIGNvbnN0IHVzZXJNc2cyID0gdXNlclJvdW5kMk1zZ3NbMF07XG4gICAgY29uc3QgYmFja3VwTXNnMiA9IGJhY2t1cFJvdW5kMk1zZ3NbMF07XG5cbiAgICBjb25zdCB1c2VyU2lnbmVkTXNnMiA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cyLnBheWxvYWQpLCB1c2VyR3BnS2V5KTtcbiAgICBjb25zdCBiYWNrdXBTaWduZWRNc2cyID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20oYmFja3VwTXNnMi5wYXlsb2FkKSwgYmFja3VwR3BnS2V5KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkUm91bmQyLFxuICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW4sXG4gICAgICBiaXRnb01zZzIsXG4gICAgfSA9IGF3YWl0IHRoaXMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDIocGFyYW1zLmVudGVycHJpc2UsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHVzZXJNc2cyOiB1c2VyU2lnbmVkTXNnMixcbiAgICAgIGJhY2t1cE1zZzI6IGJhY2t1cFNpZ25lZE1zZzIsXG4gICAgfSk7XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBrZXljaGFpbiBjcmVhdGlvblxuICAgIGFzc2VydC5lcXVhbChzZXNzaW9uSWQsIHNlc3Npb25JZFJvdW5kMiwgJ1JvdW5kIDEgYW5kIHJvdW5kIDIgc2Vzc2lvbiBJRHMgZG8gbm90IG1hdGNoJyk7XG5cbiAgICBjb25zdCBiaXRnb1Jhd01zZzJCeXRlcyA9IGF3YWl0IE1QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UoYml0Z29Nc2cyLCBiaXRnb0tleU9iaik7XG4gICAgY29uc3QgYml0Z29EZXNlcmlhbGl6ZWRNc2cyOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlID0ge1xuICAgICAgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyxcbiAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KGJpdGdvUmF3TXNnMkJ5dGVzKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgcm91bmQyTWVzc2FnZXM6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2VzID0gW3VzZXJNc2cyLCBiYWNrdXBNc2cyLCBiaXRnb0Rlc2VyaWFsaXplZE1zZzJdO1xuXG4gICAgY29uc3QgdXNlckZpbmFsTXNncyA9IHVzZXJEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDJNZXNzYWdlcyk7XG4gICAgY29uc3QgYmFja3VwRmluYWxNc2dzID0gYmFja3VwRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQyTWVzc2FnZXMpO1xuXG4gICAgYXNzZXJ0KHVzZXJGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgdXNlcicpO1xuICAgIGFzc2VydChiYWNrdXBGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgYmFja3VwJyk7XG5cbiAgICBjb25zdCB1c2VyQ29tbW9uS2V5Y2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgY29uc3QgYmFja3VwQ29tbW9uS2V5Y2hhaW4gPSBiYWNrdXBEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcblxuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIHVzZXJDb21tb25LZXljaGFpbixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgJ1VzZXIgY29tcHV0ZWQga2V5Y2hhaW4gZG9lcyBub3QgbWF0Y2ggQml0R28gY29tbW9uIGtleWNoYWluJ1xuICAgICk7XG4gICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgYmFja3VwQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgICdCYWNrdXAgY29tcHV0ZWQga2V5Y2hhaW4gZG9lcyBub3QgbWF0Y2ggQml0R28gY29tbW9uIGtleWNoYWluJ1xuICAgICk7XG5cbiAgICBjb25zdCB1c2VyUHJpdmF0ZU1hdGVyaWFsID0gdXNlckRrZy5nZXRLZXlTaGFyZSgpO1xuICAgIGNvbnN0IGJhY2t1cFByaXZhdGVNYXRlcmlhbCA9IGJhY2t1cERrZy5nZXRLZXlTaGFyZSgpO1xuICAgIGNvbnN0IHVzZXJSZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsID0gdXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKTtcbiAgICBjb25zdCBiYWNrdXBSZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsID0gYmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpO1xuXG4gICAgY29uc3QgdXNlcktleWNoYWluUHJvbWlzZSA9IHRoaXMuYWRkVXNlcktleWNoYWluKFxuICAgICAgdXNlckNvbW1vbktleWNoYWluLFxuICAgICAgdXNlclByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHVzZXJSZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgcGFyYW1zLndlYmF1dGhuSW5mb1xuICAgICk7XG4gICAgY29uc3QgYmFja3VwS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5hZGRCYWNrdXBLZXljaGFpbihcbiAgICAgIGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgYmFja3VwUHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgYmFja3VwUmVkdWNlZFByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gICAgY29uc3QgYml0Z29LZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4odXNlckNvbW1vbktleWNoYWluKTtcblxuICAgIGNvbnN0IFt1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHVzZXJLZXljaGFpblByb21pc2UsXG4gICAgICBiYWNrdXBLZXljaGFpblByb21pc2UsXG4gICAgICBiaXRnb0tleWNoYWluUHJvbWlzZSxcbiAgICBdKTtcbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICByZXR1cm4ge1xuICAgICAgdXNlcktleWNoYWluLFxuICAgICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgIH07XG4gIH1cblxuICAvLyAjcmVnaW9uIGtleWNoYWluIHV0aWxzXG4gIGFzeW5jIGNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgcGFydGljaXBhbnRJbmRleDogTVBDdjJQYXJ0eUZyb21TdHJpbmdPck51bWJlcixcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHByaXZhdGVNYXRlcmlhbD86IEJ1ZmZlcixcbiAgICByZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsPzogQnVmZmVyLFxuICAgIHBhc3NwaHJhc2U/OiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nLFxuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm9cbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGxldCBzb3VyY2U6IHN0cmluZztcbiAgICBsZXQgZW5jcnlwdGVkUHJ2OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IHJlZHVjZWRFbmNyeXB0ZWRQcnY6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgcHJpdmF0ZU1hdGVyaWFsQmFzZTY0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBzd2l0Y2ggKHBhcnRpY2lwYW50SW5kZXgpIHtcbiAgICAgIGNhc2UgTVBDdjJQYXJ0aWVzRW51bS5VU0VSOlxuICAgICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUDpcbiAgICAgICAgc291cmNlID0gcGFydGljaXBhbnRJbmRleCA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSID8gJ3VzZXInIDogJ2JhY2t1cCc7XG4gICAgICAgIGFzc2VydChwcml2YXRlTWF0ZXJpYWwsIGBQcml2YXRlIG1hdGVyaWFsIGlzIHJlcXVpcmVkIGZvciAke3NvdXJjZX0ga2V5Y2hhaW5gKTtcbiAgICAgICAgYXNzZXJ0KHJlZHVjZWRQcml2YXRlTWF0ZXJpYWwsIGBSZWR1Y2VkIHByaXZhdGUgbWF0ZXJpYWwgaXMgcmVxdWlyZWQgZm9yICR7c291cmNlfSBrZXljaGFpbmApO1xuICAgICAgICBhc3NlcnQocGFzc3BocmFzZSwgYFBhc3NwaHJhc2UgaXMgcmVxdWlyZWQgZm9yICR7c291cmNlfSBrZXljaGFpbmApO1xuICAgICAgICBwcml2YXRlTWF0ZXJpYWxCYXNlNjQgPSBwcml2YXRlTWF0ZXJpYWwudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICBlbmNyeXB0ZWRQcnYgPSB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICAgIGlucHV0OiBwcml2YXRlTWF0ZXJpYWxCYXNlNjQsXG4gICAgICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBFbmNyeXB0cyB0aGUgQ0JPUi1lbmNvZGVkIFJlZHVjZWRLZXlTaGFyZSAod2hpY2ggY29udGFpbnMgdGhlIHBhcnR5J3MgcHVibGljXG4gICAgICAgIC8vIGtleSkgd2l0aCB0aGUgd2FsbGV0IHBhc3NwaHJhc2UuIFRoZSByZXN1bHQgaXMgc3RvcmVkIGFzIHJlZHVjZWRFbmNyeXB0ZWRQcnZcbiAgICAgICAgLy8gb24gdGhlIGtleSBjYXJkIFFSIGNvZGUgYW5kIHJlcHJlc2VudHMgYSBzZWNvbmQgY29weSBvZiBrZXkgbWF0ZXJpYWxcbiAgICAgICAgLy8gYmV5b25kIHRoZSBzZXJ2ZXItc3RvcmVkIGVuY3J5cHRlZFBydi5cbiAgICAgICAgcmVkdWNlZEVuY3J5cHRlZFBydiA9IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgICAgLy8gQnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSBjYW4gbm90IGJlIHVzZWQgaGVyZSBhcyBpdCBkb2VzIG5vdCB3b3JrIG9uIHRoZSBicm93c2VyLlxuICAgICAgICAgIC8vIFRoZSBicm93c2VyIGRlYWxzIHdpdGggYSBCdWZmZXIgYXMgVWludDhBcnJheSwgdGhlcmVmb3JlIGluIHRoZSBicm93c2VyIC50b1N0cmluZygnYmFzZTY0JykganVzdCBjcmVhdGVzIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiB0aGUgYXJyYXkgdmFsdWVzLlxuICAgICAgICAgIGlucHV0OiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShyZWR1Y2VkUHJpdmF0ZU1hdGVyaWFsKSkpKSxcbiAgICAgICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPOlxuICAgICAgICBzb3VyY2UgPSAnYml0Z28nO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJ0aWNpcGFudCBpbmRleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleWNoYWluUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBzb3VyY2UsXG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgY29tbW9uS2V5Y2hhaW4sXG4gICAgICBlbmNyeXB0ZWRQcnYsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBpc01QQ3YyOiB0cnVlLFxuICAgIH07XG5cbiAgICBpZiAod2ViYXV0aG5JbmZvICYmIHBhcnRpY2lwYW50SW5kZXggPT09IE1QQ3YyUGFydGllc0VudW0uVVNFUiAmJiBwcml2YXRlTWF0ZXJpYWxCYXNlNjQpIHtcbiAgICAgIGtleWNoYWluUGFyYW1zLndlYmF1dGhuRGV2aWNlcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG90cERldmljZUlkOiB3ZWJhdXRobkluZm8ub3RwRGV2aWNlSWQsXG4gICAgICAgICAgcHJmU2FsdDogd2ViYXV0aG5JbmZvLnByZlNhbHQsXG4gICAgICAgICAgZW5jcnlwdGVkUHJ2OiBhd2FpdCB0aGlzLmJpdGdvLmVuY3J5cHRBc3luYyh7XG4gICAgICAgICAgICBpbnB1dDogcHJpdmF0ZU1hdGVyaWFsQmFzZTY0LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHdlYmF1dGhuSW5mby5wYXNzcGhyYXNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpbnMgPSB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpO1xuICAgIHJldHVybiB7IC4uLihhd2FpdCBrZXljaGFpbnMuYWRkKGtleWNoYWluUGFyYW1zKSksIHJlZHVjZWRFbmNyeXB0ZWRQcnYgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVXNlcktleWNoYWluKFxuICAgIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gICAgcHJpdmF0ZU1hdGVyaWFsOiBCdWZmZXIsXG4gICAgcmVkdWNlZFByaXZhdGVNYXRlcmlhbDogQnVmZmVyLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmcsXG4gICAgd2ViYXV0aG5JbmZvPzogV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mb1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUGFydGljaXBhbnRLZXljaGFpbihcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgcHJpdmF0ZU1hdGVyaWFsLFxuICAgICAgcmVkdWNlZFByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHBhc3NwaHJhc2UsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICB3ZWJhdXRobkluZm9cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRCYWNrdXBLZXljaGFpbihcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHByaXZhdGVNYXRlcmlhbDogQnVmZmVyLFxuICAgIHJlZHVjZWRQcml2YXRlTWF0ZXJpYWw6IEJ1ZmZlcixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVAsXG4gICAgICBjb21tb25LZXljaGFpbixcbiAgICAgIHByaXZhdGVNYXRlcmlhbCxcbiAgICAgIHJlZHVjZWRQcml2YXRlTWF0ZXJpYWwsXG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkQml0Z29LZXljaGFpbihjb21tb25LZXljaGFpbjogc3RyaW5nKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgY29tbW9uS2V5Y2hhaW4pO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICBhc3luYyBzZW5kS2V5R2VuZXJhdGlvblJvdW5kMShcbiAgICBlbnRlcnByaXNlOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogRWRkc2FNUEN2MktleUdlblJvdW5kMVJlcXVlc3RcbiAgKTogUHJvbWlzZTxFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMUJ5U2VuZGVyKEtleUdlblNlbmRlckZvckVudGVycHJpc2UodGhpcy5iaXRnbywgZW50ZXJwcmlzZSksIHBheWxvYWQpO1xuICB9XG5cbiAgYXN5bmMgc2VuZEtleUdlbmVyYXRpb25Sb3VuZDFCeVNlbmRlcihcbiAgICBzZW5kZXJGbjogRWRkc2FNUEN2MktleUdlblNlbmRGbjxFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2U+LFxuICAgIHBheWxvYWQ6IEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXF1ZXN0XG4gICk6IFByb21pc2U8RWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHNlbmRlckZuKE1QQ3YyS2V5R2VuU3RhdGVFbnVtWydNUEN2Mi1SMSddLCBwYXlsb2FkKTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRLZXlHZW5lcmF0aW9uUm91bmQyKFxuICAgIGVudGVycHJpc2U6IHN0cmluZyxcbiAgICBwYXlsb2FkOiBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVxdWVzdFxuICApOiBQcm9taXNlPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnNlbmRLZXlHZW5lcmF0aW9uUm91bmQyQnlTZW5kZXIoS2V5R2VuU2VuZGVyRm9yRW50ZXJwcmlzZSh0aGlzLmJpdGdvLCBlbnRlcnByaXNlKSwgcGF5bG9hZCk7XG4gIH1cblxuICBhc3luYyBzZW5kS2V5R2VuZXJhdGlvblJvdW5kMkJ5U2VuZGVyKFxuICAgIHNlbmRlckZuOiBFZGRzYU1QQ3YyS2V5R2VuU2VuZEZuPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZT4sXG4gICAgcGF5bG9hZDogRWRkc2FNUEN2MktleUdlblJvdW5kMlJlcXVlc3RcbiAgKTogUHJvbWlzZTxFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyLVIyJ10sIHBheWxvYWQpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gc2lnbiB0eCByZXF1ZXN0XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSBwYXJhbXMudHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wcnYgLSBkZWNyeXB0ZWQgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgc2lnblR4UmVxdWVzdChwYXJhbXM6IFRTU1BhcmFtc1dpdGhQcnYpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihwYXJhbXMucmVxSWQpO1xuICAgIHJldHVybiB0aGlzLnNpZ25SZXF1ZXN0QmFzZShwYXJhbXMsIFJlcXVlc3RUeXBlLnR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSBwYXJhbXMudHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wcnYgLSBkZWNyeXB0ZWQgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgc2lnblR4UmVxdWVzdEZvck1lc3NhZ2UocGFyYW1zOiBUU1NQYXJhbXNGb3JNZXNzYWdlV2l0aFBydik6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHBhcmFtcy5yZXFJZCk7XG4gICAgcmV0dXJuIHRoaXMuc2lnblJlcXVlc3RCYXNlKHBhcmFtcywgUmVxdWVzdFR5cGUubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogRnVsbCAzLXJvdW5kIEVkRFNBIE1QQ3YyIChNUFMpIG9ubGluZSBzaWduaW5nIG9yY2hlc3RyYXRpb24uXG4gICAqXG4gICAqIFByb3RvY29sIG92ZXJ2aWV3OlxuICAgKiAgIFdBU00gUm91bmQgMCAg4oaSIGdldEZpcnN0TWVzc2FnZSgpICAgICAgKHByb2R1Y2VzIHVzZXJNc2cxKVxuICAgKiAgIEFQSSAgUm91bmQgMSAg4oaSIHNlbmQgdXNlck1zZzEgLyByZWN2IGJpdGdvTXNnMVxuICAgKiAgIFdBU00gUm91bmQgMSAg4oaSIGhhbmRsZUluY29taW5nTWVzc2FnZXMoW3VzZXJNc2cxLCBiaXRnb01zZzFdKSAgKHByb2R1Y2VzIHVzZXJNc2cyKVxuICAgKiAgIEFQSSAgUm91bmQgMiAg4oaSIHNlbmQgdXNlck1zZzIgLyByZWN2IGJpdGdvTXNnMlxuICAgKiAgIFdBU00gUm91bmQgMiAg4oaSIGhhbmRsZUluY29taW5nTWVzc2FnZXMoW3VzZXJNc2cyLCBiaXRnb01zZzJdKSAgKHByb2R1Y2VzIHVzZXJNc2czKVxuICAgKiAgIEFQSSAgUm91bmQgMyAg4oaSIHNlbmQgdXNlck1zZzMgKFdQIGZpbmFsaXNlczsgbm8gQml0R28gbXNnIHJldHVybmVkIHRvIGNsaWVudClcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2lnblJlcXVlc3RCYXNlKFxuICAgIHBhcmFtczogVFNTUGFyYW1zV2l0aFBydiB8IFRTU1BhcmFtc0Zvck1lc3NhZ2VXaXRoUHJ2LFxuICAgIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZVxuICApOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIGNvbnN0IHVzZXJLZXlTaGFyZSA9IEJ1ZmZlci5mcm9tKHBhcmFtcy5wcnYsICdiYXNlNjQnKTtcblxuICAgIGNvbnN0IHR4UmVxdWVzdDogVHhSZXF1ZXN0ID1cbiAgICAgIHR5cGVvZiBwYXJhbXMudHhSZXF1ZXN0ID09PSAnc3RyaW5nJ1xuICAgICAgICA/IGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCBwYXJhbXMudHhSZXF1ZXN0LCBwYXJhbXMucmVxSWQpXG4gICAgICAgIDogcGFyYW1zLnR4UmVxdWVzdDtcblxuICAgIGxldCB0eE9yTWVzc2FnZVRvU2lnbjtcbiAgICBsZXQgZGVyaXZhdGlvblBhdGg7XG4gICAgbGV0IGJ1ZmZlckNvbnRlbnQ7XG4gICAgLy8gT25lIGZyZXNoIGVkMjU1MTkgR1BHIGtleSBwYWlyIHBlciBzaWduaW5nIHNlc3Npb24sIHJldXNlZCBhY3Jvc3MgYWxsIHNpZ25pbmcgcm91bmRzLlxuICAgIGNvbnN0IHVzZXJHcGdLZXkgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCB1c2VyR3BnUHJ2S2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlckdwZ0tleS5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IGJpdGdvR3BnUHViS2V5ID0gYXdhaXQgdGhpcy5waWNrQml0Z29QdWJHcGdLZXlGb3JTaWduaW5nKHRydWUsIHBhcmFtcy5yZXFJZCwgdHhSZXF1ZXN0LmVudGVycHJpc2VJZCwgdHJ1ZSk7XG4gICAgYXNzZXJ0KGJpdGdvR3BnUHViS2V5LCAnTWlzc2luZyBCaXRHbyBHUEcga2V5IGZvciBNUEN2MicpO1xuXG4gICAgaWYgKHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS50eCkge1xuICAgICAgYXNzZXJ0KHR4UmVxdWVzdC50cmFuc2FjdGlvbnMgfHwgdHhSZXF1ZXN0LnVuc2lnbmVkVHhzLCAnVW5hYmxlIHRvIGZpbmQgdHJhbnNhY3Rpb25zIGluIHR4UmVxdWVzdCcpO1xuICAgICAgY29uc3QgdW5zaWduZWRUeCA9XG4gICAgICAgIHR4UmVxdWVzdC5hcGlWZXJzaW9uID09PSAnZnVsbCcgPyB0eFJlcXVlc3QudHJhbnNhY3Rpb25zIVswXS51bnNpZ25lZFR4IDogdHhSZXF1ZXN0LnVuc2lnbmVkVHhzIVswXTtcbiAgICAgIHR4T3JNZXNzYWdlVG9TaWduID0gdW5zaWduZWRUeC5zaWduYWJsZUhleDtcbiAgICAgIGFzc2VydCh0eE9yTWVzc2FnZVRvU2lnbiwgJ01pc3Npbmcgc2lnbmFibGVIZXggaW4gdW5zaWduZWRUeCcpO1xuICAgICAgZGVyaXZhdGlvblBhdGggPSB1bnNpZ25lZFR4LmRlcml2YXRpb25QYXRoO1xuICAgICAgYnVmZmVyQ29udGVudCA9IEJ1ZmZlci5mcm9tKHR4T3JNZXNzYWdlVG9TaWduLCAnaGV4Jyk7XG4gICAgICBhd2FpdCB0aGlzLmJhc2VDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogdW5zaWduZWRUeC5zZXJpYWxpemVkVHhIZXggPz8gdHhPck1lc3NhZ2VUb1NpZ24gfSxcbiAgICAgICAgdHhQYXJhbXM6IHBhcmFtcy50eFBhcmFtcyB8fCB7IHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICAgIHdhbGxldFR5cGU6IHRoaXMud2FsbGV0Lm11bHRpc2lnVHlwZSgpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUubWVzc2FnZSkge1xuICAgICAgYXNzZXJ0KHR4UmVxdWVzdC5tZXNzYWdlcyAmJiB0eFJlcXVlc3QubWVzc2FnZXMubGVuZ3RoID4gMCwgJ1VuYWJsZSB0byBmaW5kIG1lc3NhZ2VzIGluIHR4UmVxdWVzdCcpO1xuICAgICAgdHhPck1lc3NhZ2VUb1NpZ24gPSB0eFJlcXVlc3QubWVzc2FnZXNbMF0ubWVzc2FnZUVuY29kZWQ7XG4gICAgICBhc3NlcnQodHhPck1lc3NhZ2VUb1NpZ24sICdNaXNzaW5nIG1lc3NhZ2VFbmNvZGVkIGluIG1lc3NhZ2VzWzBdJyk7XG4gICAgICBkZXJpdmF0aW9uUGF0aCA9IHR4UmVxdWVzdC5tZXNzYWdlc1swXS5kZXJpdmF0aW9uUGF0aCB8fCAnbS8wJztcbiAgICAgIGJ1ZmZlckNvbnRlbnQgPSBCdWZmZXIuZnJvbSh0eE9yTWVzc2FnZVRvU2lnbiwgJ2hleCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCB0eXBlJyk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIFdBU00gUm91bmQgMCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBwYXJ0eUlkID0gcGFyYW1zLm1wY3YyUGFydHlJZCA/PyBNUEN2MlBhcnRpZXNFbnVtLlVTRVI7XG4gICAgY29uc3Qgc2lnbmVyU2hhcmVUeXBlID0gcGFydHlJZCA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSID8gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIgOiBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQO1xuICAgIGNvbnN0IHVzZXJEc2cgPSBuZXcgRWRkc2FNUFNEc2cuRFNHKHBhcnR5SWQpO1xuICAgIHVzZXJEc2cuaW5pdERzZyh1c2VyS2V5U2hhcmUsIGJ1ZmZlckNvbnRlbnQsIGRlcml2YXRpb25QYXRoLCBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPKTtcbiAgICBjb25zdCB1c2VyTXNnMSA9IHVzZXJEc2cuZ2V0Rmlyc3RNZXNzYWdlKCk7XG5cbiAgICAvLyDilIDilIAgQVBJIFJvdW5kIDEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgY29uc3Qgc2lnbmF0dXJlU2hhcmVSb3VuZDEgPSBhd2FpdCBnZXRTaWduYXR1cmVTaGFyZVJvdW5kT25lKHVzZXJNc2cxLCB1c2VyR3BnUHJ2S2V5LCBwYXJ0eUlkKTtcbiAgICBsZXQgbGF0ZXN0VHhSZXF1ZXN0ID0gYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlVjIoXG4gICAgICB0aGlzLmJpdGdvLFxuICAgICAgdHhSZXF1ZXN0LndhbGxldElkLFxuICAgICAgdHhSZXF1ZXN0LnR4UmVxdWVzdElkLFxuICAgICAgW3NpZ25hdHVyZVNoYXJlUm91bmQxXSxcbiAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgdGhpcy5iYXNlQ29pbi5nZXRNUENBbGdvcml0aG0oKSxcbiAgICAgIHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy53YWxsZXQubXVsdGlzaWdUeXBlVmVyc2lvbigpLFxuICAgICAgcGFyYW1zLnJlcUlkXG4gICAgKTtcblxuICAgIGFzc2VydChsYXRlc3RUeFJlcXVlc3QudHJhbnNhY3Rpb25zIHx8IGxhdGVzdFR4UmVxdWVzdC5tZXNzYWdlcywgJ0ludmFsaWQgdHhSZXF1ZXN0IG9iamVjdCBhZnRlciByb3VuZCAxJyk7XG5cbiAgICBjb25zdCBzaWduYXR1cmVTaGFyZXMxID1cbiAgICAgIHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS50eFxuICAgICAgICA/IGxhdGVzdFR4UmVxdWVzdC50cmFuc2FjdGlvbnMhWzBdLnNpZ25hdHVyZVNoYXJlc1xuICAgICAgICA6IGxhdGVzdFR4UmVxdWVzdC5tZXNzYWdlcyFbMF0uc2lnbmF0dXJlU2hhcmVzO1xuXG4gICAgY29uc3QgYml0Z29TaGFyZVJvdW5kT25lID0gZ2V0Qml0Z29TaWduYXR1cmVTaGFyZShzaWduYXR1cmVTaGFyZXMxLCBzaWduZXJTaGFyZVR5cGUpO1xuICAgIGNvbnN0IHBhcnNlZEJpdEdvVG9Vc2VyU2lnU2hhcmVSb3VuZE9uZSA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMU91dHB1dCxcbiAgICAgIEpTT04ucGFyc2UoYml0Z29TaGFyZVJvdW5kT25lLnNoYXJlKSxcbiAgICAgICdVbmV4cGVjdGVkIHNpZ25hdHVyZSBzaGFyZSByZXNwb25zZS4gVW5hYmxlIHRvIHBhcnNlIGRhdGEuJ1xuICAgICk7XG5cbiAgICBpZiAocGFyc2VkQml0R29Ub1VzZXJTaWdTaGFyZVJvdW5kT25lLnR5cGUgIT09ICdyb3VuZDFPdXRwdXQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc2lnbmF0dXJlIHNoYXJlIHJlc3BvbnNlLiBVbmFibGUgdG8gcGFyc2UgZGF0YS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzEgPSBhd2FpdCB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lKHBhcnNlZEJpdEdvVG9Vc2VyU2lnU2hhcmVSb3VuZE9uZSwgYml0Z29HcGdQdWJLZXkpO1xuXG4gICAgLy8g4pSA4pSAIFdBU00gUm91bmQgMSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBbdXNlck1zZzJdID0gdXNlckRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFt1c2VyTXNnMSwgYml0Z29EZXNlcmlhbGl6ZWRNc2cxXSk7XG4gICAgYXNzZXJ0KHVzZXJNc2cyLCAnV0FTTSByb3VuZCAxIHByb2R1Y2VkIG5vIG1lc3NhZ2UnKTtcblxuICAgIC8vIOKUgOKUgCBBUEkgUm91bmQgMiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBzaWduYXR1cmVTaGFyZVJvdW5kVHdvID0gYXdhaXQgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFR3byh1c2VyTXNnMiwgdXNlckdwZ1BydktleSwgcGFydHlJZCk7XG4gICAgbGF0ZXN0VHhSZXF1ZXN0ID0gYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlVjIoXG4gICAgICB0aGlzLmJpdGdvLFxuICAgICAgdHhSZXF1ZXN0LndhbGxldElkLFxuICAgICAgdHhSZXF1ZXN0LnR4UmVxdWVzdElkLFxuICAgICAgW3NpZ25hdHVyZVNoYXJlUm91bmRUd29dLFxuICAgICAgcmVxdWVzdFR5cGUsXG4gICAgICB0aGlzLmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpLFxuICAgICAgdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLndhbGxldC5tdWx0aXNpZ1R5cGVWZXJzaW9uKCksXG4gICAgICBwYXJhbXMucmVxSWRcbiAgICApO1xuXG4gICAgYXNzZXJ0KGxhdGVzdFR4UmVxdWVzdC50cmFuc2FjdGlvbnMgfHwgbGF0ZXN0VHhSZXF1ZXN0Lm1lc3NhZ2VzLCAnSW52YWxpZCB0eFJlcXVlc3Qgb2JqZWN0IGFmdGVyIHJvdW5kIDInKTtcblxuICAgIGNvbnN0IHR4UmVxdWVzdFNpZ25hdHVyZVNoYXJlcyA9XG4gICAgICByZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUudHhcbiAgICAgICAgPyBsYXRlc3RUeFJlcXVlc3QudHJhbnNhY3Rpb25zIVswXS5zaWduYXR1cmVTaGFyZXNcbiAgICAgICAgOiBsYXRlc3RUeFJlcXVlc3QubWVzc2FnZXMhWzBdLnNpZ25hdHVyZVNoYXJlcztcblxuICAgIGNvbnN0IGJpdGdvU2hhcmVSb3VuZFR3byA9IGdldEJpdGdvU2lnbmF0dXJlU2hhcmUodHhSZXF1ZXN0U2lnbmF0dXJlU2hhcmVzLCBzaWduZXJTaGFyZVR5cGUpO1xuICAgIGNvbnN0IHBhcnNlZEJpdEdvVG9Vc2VyU2lnU2hhcmVSb3VuZFR3byA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCxcbiAgICAgIEpTT04ucGFyc2UoYml0Z29TaGFyZVJvdW5kVHdvLnNoYXJlKSxcbiAgICAgICdVbmV4cGVjdGVkIHNpZ25hdHVyZSBzaGFyZSByZXNwb25zZS4gVW5hYmxlIHRvIHBhcnNlIGRhdGEuJ1xuICAgICk7XG5cbiAgICBpZiAocGFyc2VkQml0R29Ub1VzZXJTaWdTaGFyZVJvdW5kVHdvLnR5cGUgIT09ICdyb3VuZDJPdXRwdXQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc2lnbmF0dXJlIHNoYXJlIHJlc3BvbnNlLiBVbmFibGUgdG8gcGFyc2UgZGF0YS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzIgPSBhd2FpdCB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvKHBhcnNlZEJpdEdvVG9Vc2VyU2lnU2hhcmVSb3VuZFR3bywgYml0Z29HcGdQdWJLZXkpO1xuXG4gICAgLy8g4pSA4pSAIFdBU00gUm91bmQgMiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBbdXNlck1zZzNdID0gdXNlckRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFt1c2VyTXNnMiwgYml0Z29EZXNlcmlhbGl6ZWRNc2cyXSk7XG4gICAgYXNzZXJ0KHVzZXJNc2czLCAnV0FTTSByb3VuZCAyIHByb2R1Y2VkIG5vIG1lc3NhZ2UnKTtcblxuICAgIC8vIOKUgOKUgCBBUEkgUm91bmQgMyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAvLyBObyBCaXRHbyByZXNwb25zZSB0byB2ZXJpZnk7IFdQIGZpbmFsaXNlcyB0aGUgc2lnbmluZyBzZXJ2ZXItc2lkZVxuICAgIGNvbnN0IHNpZ25hdHVyZVNoYXJlUm91bmQzID0gYXdhaXQgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFRocmVlKHVzZXJNc2czLCB1c2VyR3BnUHJ2S2V5LCBwYXJ0eUlkKTtcbiAgICBjb25zdCByb3VuZDNUeFJlcXVlc3QgPSBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmVWMihcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0eFJlcXVlc3Qud2FsbGV0SWQsXG4gICAgICB0eFJlcXVlc3QudHhSZXF1ZXN0SWQsXG4gICAgICBbc2lnbmF0dXJlU2hhcmVSb3VuZDNdLFxuICAgICAgcmVxdWVzdFR5cGUsXG4gICAgICB0aGlzLmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpLFxuICAgICAgdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLndhbGxldC5tdWx0aXNpZ1R5cGVWZXJzaW9uKCksXG4gICAgICBwYXJhbXMucmVxSWRcbiAgICApO1xuICAgIGFzc2VydChyb3VuZDNUeFJlcXVlc3Q/LnR4UmVxdWVzdElkID09PSB0eFJlcXVlc3QudHhSZXF1ZXN0SWQsICdJbnZhbGlkIHR4UmVxdWVzdCBvYmplY3QgYWZ0ZXIgcm91bmQgMycpO1xuXG4gICAgcmV0dXJuIHNlbmRUeFJlcXVlc3QodGhpcy5iaXRnbywgdHhSZXF1ZXN0LndhbGxldElkLCB0eFJlcXVlc3QudHhSZXF1ZXN0SWQsIHJlcXVlc3RUeXBlLCBwYXJhbXMucmVxSWQpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txRequest.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/txRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGhD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"txRequest.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/txRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGhD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,GAAG,IAAI,CAiBlG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,UAAU,GAAG,UAAU,CAcpG"}
|
|
@@ -12,9 +12,11 @@ function validateTxRequestApiVersion(wallet, requestedApiVersion) {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
if (wallet.baseCoin.getMPCAlgorithm() === 'ecdsa') {
|
|
15
|
-
// ecdsa wallets can only use full, even if they are hot wallets
|
|
16
15
|
(0, assert_1.default)(requestedApiVersion === 'full', 'For ECDSA tss wallets, parameter `apiVersion` must be `full`.');
|
|
17
16
|
}
|
|
17
|
+
else if (wallet.multisigTypeVersion() === 'MPCv2') {
|
|
18
|
+
(0, assert_1.default)(requestedApiVersion === 'full', 'For EdDSA MPCv2 tss wallets, parameter `apiVersion` must be `full`.');
|
|
19
|
+
}
|
|
18
20
|
else if (wallet.type() !== 'hot') {
|
|
19
21
|
// all other cases should use full!
|
|
20
22
|
(0, assert_1.default)(requestedApiVersion === 'full', 'For non self-custodial (hot) tss wallets, parameter `apiVersion` must be `full`.');
|
|
@@ -32,11 +34,11 @@ function getTxRequestApiVersion(wallet, requestedApiVersion) {
|
|
|
32
34
|
validateTxRequestApiVersion(wallet, requestedApiVersion);
|
|
33
35
|
return requestedApiVersion;
|
|
34
36
|
}
|
|
35
|
-
if (wallet.baseCoin.getMPCAlgorithm() === 'ecdsa') {
|
|
37
|
+
if (wallet.baseCoin.getMPCAlgorithm() === 'ecdsa' || wallet.multisigTypeVersion() === 'MPCv2') {
|
|
36
38
|
return 'full';
|
|
37
39
|
}
|
|
38
40
|
else if (wallet.type() === 'hot') {
|
|
39
|
-
// default to lite for hot eddsa tss wallets
|
|
41
|
+
// default to lite for hot eddsa tss wallets (v1 only)
|
|
40
42
|
return 'lite';
|
|
41
43
|
}
|
|
42
44
|
else {
|
|
@@ -44,4 +46,4 @@ function getTxRequestApiVersion(wallet, requestedApiVersion) {
|
|
|
44
46
|
return 'full';
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3R4UmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGtFQWlCQztBQVFELHdEQWNDO0FBekNELG9EQUE0QjtBQUU1QixTQUFnQiwyQkFBMkIsQ0FBQyxNQUFlLEVBQUUsbUJBQStCO0lBQzFGLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3BDLGlEQUFpRDtRQUNqRCxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxJQUFBLGdCQUFNLEVBQUMsbUJBQW1CLEtBQUssTUFBTSxFQUFFLCtEQUErRCxDQUFDLENBQUM7SUFDMUcsQ0FBQztTQUFNLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBQSxnQkFBTSxFQUFDLG1CQUFtQixLQUFLLE1BQU0sRUFBRSxxRUFBcUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7U0FBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxtQ0FBbUM7UUFDbkMsSUFBQSxnQkFBTSxFQUNKLG1CQUFtQixLQUFLLE1BQU0sRUFDOUIsa0ZBQWtGLENBQ25GLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztBQUNULENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE1BQWUsRUFBRSxtQkFBZ0M7SUFDdEYsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hCLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDOUYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztTQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ25DLHNEQUFzRDtRQUN0RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO1NBQU0sQ0FBQztRQUNOLDZDQUE2QztRQUM3QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaVZlcnNpb24sIElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUeFJlcXVlc3RBcGlWZXJzaW9uKHdhbGxldDogSVdhbGxldCwgcmVxdWVzdGVkQXBpVmVyc2lvbjogQXBpVmVyc2lvbik6IHZvaWQge1xuICBpZiAod2FsbGV0Lm11bHRpc2lnVHlwZSgpICE9PSAndHNzJykge1xuICAgIC8vIG9ubHkgdHNzIHdhbGxldHMgaGF2ZSBhcGkgdmVyc2lvbiByZXF1aXJlbWVudHNcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHdhbGxldC5iYXNlQ29pbi5nZXRNUENBbGdvcml0aG0oKSA9PT0gJ2VjZHNhJykge1xuICAgIGFzc2VydChyZXF1ZXN0ZWRBcGlWZXJzaW9uID09PSAnZnVsbCcsICdGb3IgRUNEU0EgdHNzIHdhbGxldHMsIHBhcmFtZXRlciBgYXBpVmVyc2lvbmAgbXVzdCBiZSBgZnVsbGAuJyk7XG4gIH0gZWxzZSBpZiAod2FsbGV0Lm11bHRpc2lnVHlwZVZlcnNpb24oKSA9PT0gJ01QQ3YyJykge1xuICAgIGFzc2VydChyZXF1ZXN0ZWRBcGlWZXJzaW9uID09PSAnZnVsbCcsICdGb3IgRWREU0EgTVBDdjIgdHNzIHdhbGxldHMsIHBhcmFtZXRlciBgYXBpVmVyc2lvbmAgbXVzdCBiZSBgZnVsbGAuJyk7XG4gIH0gZWxzZSBpZiAod2FsbGV0LnR5cGUoKSAhPT0gJ2hvdCcpIHtcbiAgICAvLyBhbGwgb3RoZXIgY2FzZXMgc2hvdWxkIHVzZSBmdWxsIVxuICAgIGFzc2VydChcbiAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb24gPT09ICdmdWxsJyxcbiAgICAgICdGb3Igbm9uIHNlbGYtY3VzdG9kaWFsIChob3QpIHRzcyB3YWxsZXRzLCBwYXJhbWV0ZXIgYGFwaVZlcnNpb25gIG11c3QgYmUgYGZ1bGxgLidcbiAgICApO1xuICB9XG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFwaSB2ZXJzaW9uIGZvciB0aGUgcHJvdmlkZWQgd2FsbGV0LlxuICogSWYgdGhlIHVzZXIgcmVxdWVzdGVkIGFwaSB2ZXJzaW9uIGlzIGludmFsaWQsIHRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAqIEBwYXJhbSB3YWxsZXRcbiAqIEBwYXJhbSByZXF1ZXN0ZWRBcGlWZXJzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeFJlcXVlc3RBcGlWZXJzaW9uKHdhbGxldDogSVdhbGxldCwgcmVxdWVzdGVkQXBpVmVyc2lvbj86IEFwaVZlcnNpb24pOiBBcGlWZXJzaW9uIHtcbiAgaWYgKHJlcXVlc3RlZEFwaVZlcnNpb24pIHtcbiAgICB2YWxpZGF0ZVR4UmVxdWVzdEFwaVZlcnNpb24od2FsbGV0LCByZXF1ZXN0ZWRBcGlWZXJzaW9uKTtcbiAgICByZXR1cm4gcmVxdWVzdGVkQXBpVmVyc2lvbjtcbiAgfVxuICBpZiAod2FsbGV0LmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpID09PSAnZWNkc2EnIHx8IHdhbGxldC5tdWx0aXNpZ1R5cGVWZXJzaW9uKCkgPT09ICdNUEN2MicpIHtcbiAgICByZXR1cm4gJ2Z1bGwnO1xuICB9IGVsc2UgaWYgKHdhbGxldC50eXBlKCkgPT09ICdob3QnKSB7XG4gICAgLy8gZGVmYXVsdCB0byBsaXRlIGZvciBob3QgZWRkc2EgdHNzIHdhbGxldHMgKHYxIG9ubHkpXG4gICAgcmV0dXJuICdsaXRlJztcbiAgfSBlbHNlIHtcbiAgICAvLyBkZWZhdWx0IHRvIGZ1bGwgZm9yIGFsbCBvdGhlciB3YWxsZXQgdHlwZXNcbiAgICByZXR1cm4gJ2Z1bGwnO1xuICB9XG59XG4iXX0=
|
|
@@ -35,6 +35,19 @@ export declare const BuildParamsStacks: t.PartialC<{
|
|
|
35
35
|
functionName: t.UnknownC;
|
|
36
36
|
functionArgs: t.UnknownC;
|
|
37
37
|
}>;
|
|
38
|
+
export declare const SbtcWithdrawParams: t.PartialC<{
|
|
39
|
+
amount: t.StringC;
|
|
40
|
+
btcAddress: t.StringC;
|
|
41
|
+
maxFee: t.StringC;
|
|
42
|
+
}>;
|
|
43
|
+
export declare const BuildParamsSbtc: t.PartialC<{
|
|
44
|
+
sbtcWithdrawParams: t.PartialC<{
|
|
45
|
+
amount: t.StringC;
|
|
46
|
+
btcAddress: t.StringC;
|
|
47
|
+
maxFee: t.StringC;
|
|
48
|
+
}>;
|
|
49
|
+
sbtcDepositParams: t.UnknownC;
|
|
50
|
+
}>;
|
|
38
51
|
export declare const BuildParamsOffchain: t.PartialC<{
|
|
39
52
|
idfSignedTimestamp: t.UnknownC;
|
|
40
53
|
idfVersion: t.UnknownC;
|
|
@@ -70,6 +83,13 @@ export declare const BuildParams: t.ExactC<t.IntersectionC<[t.PartialC<{
|
|
|
70
83
|
contractName: t.UnknownC;
|
|
71
84
|
functionName: t.UnknownC;
|
|
72
85
|
functionArgs: t.UnknownC;
|
|
86
|
+
}>, t.PartialC<{
|
|
87
|
+
sbtcWithdrawParams: t.PartialC<{
|
|
88
|
+
amount: t.StringC;
|
|
89
|
+
btcAddress: t.StringC;
|
|
90
|
+
maxFee: t.StringC;
|
|
91
|
+
}>;
|
|
92
|
+
sbtcDepositParams: t.UnknownC;
|
|
73
93
|
}>, t.PartialC<{
|
|
74
94
|
idfSignedTimestamp: t.UnknownC;
|
|
75
95
|
idfVersion: t.UnknownC;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildParams.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/BuildParams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"BuildParams.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/BuildParams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AACvD,eAAO,MAAM,cAAc,UAAkC,CAAC"}
|
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.buildParamKeys = exports.BuildParams = exports.BuildParamsOffchain = exports.BuildParamsStacks = exports.BuildParamsUTXO = exports.Bip322Message = void 0;
|
|
37
|
+
exports.buildParamKeys = exports.BuildParams = exports.BuildParamsOffchain = exports.BuildParamsSbtc = exports.SbtcWithdrawParams = exports.BuildParamsStacks = exports.BuildParamsUTXO = exports.Bip322Message = void 0;
|
|
38
38
|
const t = __importStar(require("io-ts"));
|
|
39
39
|
const codecProps_1 = require("../utils/codecProps");
|
|
40
40
|
exports.Bip322Message = t.type({
|
|
@@ -77,6 +77,15 @@ exports.BuildParamsStacks = t.partial({
|
|
|
77
77
|
functionName: t.unknown,
|
|
78
78
|
functionArgs: t.unknown,
|
|
79
79
|
});
|
|
80
|
+
exports.SbtcWithdrawParams = t.partial({
|
|
81
|
+
amount: t.string,
|
|
82
|
+
btcAddress: t.string,
|
|
83
|
+
maxFee: t.string,
|
|
84
|
+
});
|
|
85
|
+
exports.BuildParamsSbtc = t.partial({
|
|
86
|
+
sbtcWithdrawParams: exports.SbtcWithdrawParams,
|
|
87
|
+
sbtcDepositParams: t.unknown,
|
|
88
|
+
});
|
|
80
89
|
exports.BuildParamsOffchain = t.partial({
|
|
81
90
|
idfSignedTimestamp: t.unknown,
|
|
82
91
|
idfVersion: t.unknown,
|
|
@@ -85,6 +94,7 @@ exports.BuildParamsOffchain = t.partial({
|
|
|
85
94
|
exports.BuildParams = t.exact(t.intersection([
|
|
86
95
|
exports.BuildParamsUTXO,
|
|
87
96
|
exports.BuildParamsStacks,
|
|
97
|
+
exports.BuildParamsSbtc,
|
|
88
98
|
exports.BuildParamsOffchain,
|
|
89
99
|
t.partial({
|
|
90
100
|
apiVersion: t.unknown,
|
|
@@ -152,4 +162,4 @@ exports.BuildParams = t.exact(t.intersection([
|
|
|
152
162
|
}),
|
|
153
163
|
]));
|
|
154
164
|
exports.buildParamKeys = (0, codecProps_1.getCodecProperties)(exports.BuildParams);
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L0J1aWxkUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4QkFBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5Qix5Q0FBMkI7QUFDM0Isb0RBQXlEO0FBRTVDLFFBQUEsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTTtDQUNsQixDQUFDLENBQUM7QUFFVSxRQUFBLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLHlDQUF5QztJQUN6QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDdEIsNkJBQTZCO0lBQzdCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQzVCLDRCQUE0QjtJQUM1QixhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDeEIsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQ3RCLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNwQixRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbkIsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQ25CLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTztJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbkIsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDL0IsZ0NBQWdDO0lBQ2hDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNuQixxQkFBcUIsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNoQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDeEIsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbEMs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bGludCBuby1yZWRlY2xhcmU6IG9mZiAqL1xuXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IGdldENvZGVjUHJvcGVydGllcyB9IGZyb20gJy4uL3V0aWxzL2NvZGVjUHJvcHMnO1xuXG5leHBvcnQgY29uc3QgQmlwMzIyTWVzc2FnZSA9IHQudHlwZSh7XG4gIG1lc3NhZ2U6IHQuc3RyaW5nLFxuICBhZGRyZXNzOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgQnVpbGRQYXJhbXNVVFhPID0gdC5wYXJ0aWFsKHtcbiAgLyogZGVwcmVjYXRlZC4gdGhlIGNoYW5nZSBhZGRyZXNzIHR5cGUgKi9cbiAgYWRkcmVzc1R5cGU6IHQudW5rbm93bixcbiAgLyogdGhlIGNoYW5nZSBhZGRyZXNzIHR5cGUgKi9cbiAgY2hhbmdlQWRkcmVzc1R5cGU6IHQudW5rbm93bixcbiAgLyogYSBmaXhlZCBjaGFuZ2UgYWRkcmVzcyAqL1xuICBjaGFuZ2VBZGRyZXNzOiB0LnVua25vd24sXG4gIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzOiB0LmJvb2xlYW4sXG4gIGNwZnBGZWVSYXRlOiB0LnVua25vd24sXG4gIGNwZnBUeElkczogdC51bmtub3duLFxuICB1bnNwZW50czogdC51bmtub3duLFxuICBtaW5WYWx1ZTogdC51bmtub3duLFxuICBtaW5Db25maXJtczogdC51bmtub3duLFxuICBtYXhWYWx1ZTogdC51bmtub3duLFxuICB0YXJnZXRXYWxsZXRVbnNwZW50czogdC51bmtub3duLFxuICAvKiB1bnNwZW50IHNlbGVjdGlvbiBzdHJhdGVneSAqL1xuICBzdHJhdGVneTogdC51bmtub3duLFxuICBzdHJhdGVneUFsbG93RmFsbGJhY2s6IHQudW5rbm93bixcbiAgbm9TcGxpdENoYW5nZTogdC51bmtub3duLFxuICBzbWFsbGVzdENoYW5nZVNwbGl0U2l6ZTogdC51bmtub3duLFxuICBlbmZvcmNlTWluQ29uZmlybXNGb3JDaGFuZ2U6IHQudW5rbm93bixcbiAgLyogbGVnYWN5IG9yIHBzYnQgKi9cbiAgdHhGb3JtYXQ6IHQudW5rbm93bixcbiAgLyogcmVzdHJpY3Qgd2hpY2ggaW5wdXQgc2NyaXB0IHR5cGVzIFdQIG1heSBzZWxlY3QgKGUuZy4gZm9yIGxlZ2FjeSBmb3JtYXQgY29tcGF0aWJpbGl0eSkgKi9cbiAgYWxsb3dlZElucHV0U2NyaXB0VHlwZXM6IHQudW5rbm93bixcbiAgbWF4Q2hhbmdlT3V0cHV0czogdC51bmtub3duLFxuICAvKiByYmYgKi9cbiAgcmJmVHhJZHM6IHQuYXJyYXkodC5zdHJpbmcpLFxuICBpc1JlcGxhY2VhYmxlQnlGZWU6IHQuYm9vbGVhbixcbiAgbWVzc2FnZXM6IHQuYXJyYXkoQmlwMzIyTWVzc2FnZSksXG59KTtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkUGFyYW1zU3RhY2tzID0gdC5wYXJ0aWFsKHtcbiAgY29udHJhY3ROYW1lOiB0LnVua25vd24sXG4gIGZ1bmN0aW9uTmFtZTogdC51bmtub3duLFxuICBmdW5jdGlvbkFyZ3M6IHQudW5rbm93bixcbn0pO1xuXG5leHBvcnQgY29uc3QgQnVpbGRQYXJhbXNPZmZjaGFpbiA9IHQucGFydGlhbCh7XG4gIGlkZlNpZ25lZFRpbWVzdGFtcDogdC51bmtub3duLFxuICBpZGZWZXJzaW9uOiB0LnVua25vd24sXG4gIGlkZlVzZXJJZDogdC51bmtub3duLFxufSk7XG5cbmV4cG9ydCBjb25zdCBCdWlsZFBhcmFtcyA9IHQuZXhhY3QoXG4gIHQuaW50ZXJzZWN0aW9uKFtcbiAgICBCdWlsZFBhcmFtc1VUWE8sXG4gICAgQnVpbGRQYXJhbXNTdGFja3MsXG4gICAgQnVpbGRQYXJhbXNPZmZjaGFpbixcbiAgICB0LnBhcnRpYWwoe1xuICAgICAgYXBpVmVyc2lvbjogdC51bmtub3duLFxuICAgICAgY29uc29saWRhdGVBZGRyZXNzZXM6IHQudW5rbm93bixcbiAgICAgIGNvbnNvbGlkYXRlSWQ6IHQudW5rbm93bixcbiAgICAgIGNvbW1lbnQ6IHQuc3RyaW5nLFxuICAgICAgZGVsYXlNczogdC51bmtub3duLFxuICAgICAgZmVlOiB0LnVua25vd24sXG4gICAgICBmZWVSYXRlOiB0LnVua25vd24sXG4gICAgICBmZWVNdWx0aXBsaWVyOiB0LnVua25vd24sXG4gICAgICBlbmFibGVUb2tlbnM6IHQudW5rbm93bixcbiAgICAgIGdhc0xpbWl0OiB0LnVua25vd24sXG4gICAgICBnYXNQcmljZTogdC51bmtub3duLFxuICAgICAgaG9wUGFyYW1zOiB0LnVua25vd24sXG4gICAgICBpbnN0YW50OiB0LnVua25vd24sXG4gICAgICBsYXN0TGVkZ2VyU2VxdWVuY2U6IHQudW5rbm93bixcbiAgICAgIGxlZGdlclNlcXVlbmNlRGVsdGE6IHQudW5rbm93bixcbiAgICAgIG1heEZlZTogdC51bmtub3duLFxuICAgICAgbWF4RmVlUmF0ZTogdC51bmtub3duLFxuICAgICAgbWVtbzogdC51bmtub3duLFxuICAgICAgdHJhbnNmZXJJZDogdC51bmtub3duLFxuICAgICAgbWVzc2FnZTogdC51bmtub3duLFxuICAgICAgbnVtQmxvY2tzOiB0LnVua25vd24sXG4gICAgICBub25jZTogdC51bmtub3duLFxuICAgICAgcGVuZGluZ0FwcHJvdmFsSWQ6IHQudW5rbm93bixcbiAgICAgIHByZXZpZXc6IHQudW5rbm93bixcbiAgICAgIHByZXZpZXdQZW5kaW5nVHhzOiB0LnVua25vd24sXG4gICAgICBzZW5kZXJBZGRyZXNzOiB0LnVua25vd24sXG4gICAgICByZWNlaXZlQWRkcmVzczogdC51bmtub3duLFxuICAgICAgcmVjaXBpZW50czogdC51bmtub3duLFxuICAgICAgcmVzZXJ2YXRpb246IHQudW5rbm93bixcbiAgICAgIHJlZnVuZE9wdGlvbnM6IHQudW5rbm93bixcbiAgICAgIHNlcXVlbmNlSWQ6IHQudW5rbm93bixcbiAgICAgIHNvdXJjZUNoYWluOiB0LnVua25vd24sXG4gICAgICBkZXN0aW5hdGlvbkNoYWluOiB0LnVua25vd24sXG4gICAgICB0cnVzdGxpbmVzOiB0LnVua25vd24sXG4gICAgICB0eXBlOiB0LnVua25vd24sXG4gICAgICBsaW1pdDogdC51bmtub3duLFxuICAgICAgdGltZUJvdW5kczogdC51bmtub3duLFxuICAgICAgc3RhcnRUaW1lOiB0LnVua25vd24sXG4gICAgICBzdGF0ZVByb29mS2V5OiB0LnVua25vd24sXG4gICAgICBub25QYXJ0aWNpcGF0aW9uOiB0LnVua25vd24sXG4gICAgICB2YWxpZEZyb21CbG9jazogdC51bmtub3duLFxuICAgICAgdmFsaWRUb0Jsb2NrOiB0LnVua25vd24sXG4gICAgICBtZXNzYWdlS2V5OiB0LnVua25vd24sXG4gICAgICBzdGFraW5nUGFyYW1zOiB0LnVua25vd24sXG4gICAgICBzdGFraW5nT3B0aW9uczogdC51bmtub3duLFxuICAgICAgdW5zdGFraW5nT3B0aW9uczogdC51bmtub3duLFxuICAgICAgZWlwMTU1OTogdC51bmtub3duLFxuICAgICAga2V5cmVnVHhCYXNlNjQ6IHQudW5rbm93bixcbiAgICAgIGNsb3NlUmVtYWluZGVyVG86IHQudW5rbm93bixcbiAgICAgIHRva2VuTmFtZTogdC51bmtub3duLFxuICAgICAgcHJlYnVpbGRUeDogdC51bmtub3duLFxuICAgICAgLy8gcGFyYW0gdG8gc2V0IGVtZXJnZW5jeSBmbGFnIG9uIGEgY3VzdG9kaWFsIHRyYW5zYWN0aW9uLlxuICAgICAgLy8gVGhpcyB0cmFuc2FjdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIGluIGxlc3MgdGhhbiAxIGhvdXIgb3IgaXQgd2lsbCBmYWlsLlxuICAgICAgZW1lcmdlbmN5OiB0LnVua25vd24sXG4gICAgICAvLyBTb2xhbmEgY3VzdG9tIGluc3RydWN0aW9ucyBmb3IgdHJhbnNhY3Rpb24gYnVpbGRpbmdcbiAgICAgIHNvbEluc3RydWN0aW9uczogdC51bmtub3duLFxuICAgICAgLy8gU29sYW5hIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhIGZvciB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICAgICAgc29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhOiB0LnVua25vd24sXG4gICAgICAvLyBBcHRvcyBjdXN0b20gdHJhbnNhY3Rpb24gcGFyYW1ldGVycyBmb3Igc21hcnQgY29udHJhY3QgY2FsbHNcbiAgICAgIGFwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXM6IHQudW5rbm93bixcbiAgICAgIGlzVGVzdFRyYW5zYWN0aW9uOiB0LnVua25vd24sXG4gICAgICBmZWVUb2tlbjogdC51bmtub3duLFxuICAgIH0pLFxuICBdKVxuKTtcblxuZXhwb3J0IHR5cGUgQnVpbGRQYXJhbXMgPSB0LlR5cGVPZjx0eXBlb2YgQnVpbGRQYXJhbXM+O1xuZXhwb3J0IGNvbnN0IGJ1aWxkUGFyYW1LZXlzID0gZ2V0Q29kZWNQcm9wZXJ0aWVzKEJ1aWxkUGFyYW1zKTtcbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L0J1aWxkUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4QkFBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5Qix5Q0FBMkI7QUFDM0Isb0RBQXlEO0FBRTVDLFFBQUEsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTTtDQUNsQixDQUFDLENBQUM7QUFFVSxRQUFBLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLHlDQUF5QztJQUN6QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDdEIsNkJBQTZCO0lBQzdCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQzVCLDRCQUE0QjtJQUM1QixhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDeEIsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQ3RCLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNwQixRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbkIsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPO0lBQ25CLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTztJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbkIsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDL0IsZ0NBQWdDO0lBQ2hDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNuQixxQkFBcUIsRUFBRSxDQUFDLENBQUMsT0FBTztJQUNoQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDeEIsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDbEMs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LENBQUMsT0FBTztRQUMxQiw2REFBNkQ7UUFDN0QsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLE9BQU87UUFDdEMsK0RBQStEO1FBQy9ELDRCQUE0QixFQUFFLENBQUMsQ0FBQyxPQUFPO1FBQ3ZDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPO1FBQzVCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTztLQUNwQixDQUFDO0NBQ0gsQ0FBQyxDQUNILENBQUM7QUFHVyxRQUFBLGNBQWMsR0FBRyxJQUFBLCtCQUFrQixFQUFDLG1CQUFXLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1yZWRlY2xhcmU6IG9mZiAqL1xuXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IGdldENvZGVjUHJvcGVydGllcyB9IGZyb20gJy4uL3V0aWxzL2NvZGVjUHJvcHMnO1xuXG5leHBvcnQgY29uc3QgQmlwMzIyTWVzc2FnZSA9IHQudHlwZSh7XG4gIG1lc3NhZ2U6IHQuc3RyaW5nLFxuICBhZGRyZXNzOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgQnVpbGRQYXJhbXNVVFhPID0gdC5wYXJ0aWFsKHtcbiAgLyogZGVwcmVjYXRlZC4gdGhlIGNoYW5nZSBhZGRyZXNzIHR5cGUgKi9cbiAgYWRkcmVzc1R5cGU6IHQudW5rbm93bixcbiAgLyogdGhlIGNoYW5nZSBhZGRyZXNzIHR5cGUgKi9cbiAgY2hhbmdlQWRkcmVzc1R5cGU6IHQudW5rbm93bixcbiAgLyogYSBmaXhlZCBjaGFuZ2UgYWRkcmVzcyAqL1xuICBjaGFuZ2VBZGRyZXNzOiB0LnVua25vd24sXG4gIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzOiB0LmJvb2xlYW4sXG4gIGNwZnBGZWVSYXRlOiB0LnVua25vd24sXG4gIGNwZnBUeElkczogdC51bmtub3duLFxuICB1bnNwZW50czogdC51bmtub3duLFxuICBtaW5WYWx1ZTogdC51bmtub3duLFxuICBtaW5Db25maXJtczogdC51bmtub3duLFxuICBtYXhWYWx1ZTogdC51bmtub3duLFxuICB0YXJnZXRXYWxsZXRVbnNwZW50czogdC51bmtub3duLFxuICAvKiB1bnNwZW50IHNlbGVjdGlvbiBzdHJhdGVneSAqL1xuICBzdHJhdGVneTogdC51bmtub3duLFxuICBzdHJhdGVneUFsbG93RmFsbGJhY2s6IHQudW5rbm93bixcbiAgbm9TcGxpdENoYW5nZTogdC51bmtub3duLFxuICBzbWFsbGVzdENoYW5nZVNwbGl0U2l6ZTogdC51bmtub3duLFxuICBlbmZvcmNlTWluQ29uZmlybXNGb3JDaGFuZ2U6IHQudW5rbm93bixcbiAgLyogbGVnYWN5IG9yIHBzYnQgKi9cbiAgdHhGb3JtYXQ6IHQudW5rbm93bixcbiAgLyogcmVzdHJpY3Qgd2hpY2ggaW5wdXQgc2NyaXB0IHR5cGVzIFdQIG1heSBzZWxlY3QgKGUuZy4gZm9yIGxlZ2FjeSBmb3JtYXQgY29tcGF0aWJpbGl0eSkgKi9cbiAgYWxsb3dlZElucHV0U2NyaXB0VHlwZXM6IHQudW5rbm93bixcbiAgbWF4Q2hhbmdlT3V0cHV0czogdC51bmtub3duLFxuICAvKiByYmYgKi9cbiAgcmJmVHhJZHM6IHQuYXJyYXkodC5zdHJpbmcpLFxuICBpc1JlcGxhY2VhYmxlQnlGZWU6IHQuYm9vbGVhbixcbiAgbWVzc2FnZXM6IHQuYXJyYXkoQmlwMzIyTWVzc2FnZSksXG59KTtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkUGFyYW1zU3RhY2tzID0gdC5wYXJ0aWFsKHtcbiAgY29udHJhY3ROYW1lOiB0LnVua25vd24sXG4gIGZ1bmN0aW9uTmFtZTogdC51bmtub3duLFxuICBmdW5jdGlvbkFyZ3M6IHQudW5rbm93bixcbn0pO1xuXG5leHBvcnQgY29uc3QgU2J0Y1dpdGhkcmF3UGFyYW1zID0gdC5wYXJ0aWFsKHtcbiAgYW1vdW50OiB0LnN0cmluZyxcbiAgYnRjQWRkcmVzczogdC5zdHJpbmcsXG4gIG1heEZlZTogdC5zdHJpbmcsXG59KTtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkUGFyYW1zU2J0YyA9IHQucGFydGlhbCh7XG4gIHNidGNXaXRoZHJhd1BhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zLFxuICBzYnRjRGVwb3NpdFBhcmFtczogdC51bmtub3duLFxufSk7XG5cbmV4cG9ydCBjb25zdCBCdWlsZFBhcmFtc09mZmNoYWluID0gdC5wYXJ0aWFsKHtcbiAgaWRmU2lnbmVkVGltZXN0YW1wOiB0LnVua25vd24sXG4gIGlkZlZlcnNpb246IHQudW5rbm93bixcbiAgaWRmVXNlcklkOiB0LnVua25vd24sXG59KTtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkUGFyYW1zID0gdC5leGFjdChcbiAgdC5pbnRlcnNlY3Rpb24oW1xuICAgIEJ1aWxkUGFyYW1zVVRYTyxcbiAgICBCdWlsZFBhcmFtc1N0YWNrcyxcbiAgICBCdWlsZFBhcmFtc1NidGMsXG4gICAgQnVpbGRQYXJhbXNPZmZjaGFpbixcbiAgICB0LnBhcnRpYWwoe1xuICAgICAgYXBpVmVyc2lvbjogdC51bmtub3duLFxuICAgICAgY29uc29saWRhdGVBZGRyZXNzZXM6IHQudW5rbm93bixcbiAgICAgIGNvbnNvbGlkYXRlSWQ6IHQudW5rbm93bixcbiAgICAgIGNvbW1lbnQ6IHQuc3RyaW5nLFxuICAgICAgZGVsYXlNczogdC51bmtub3duLFxuICAgICAgZmVlOiB0LnVua25vd24sXG4gICAgICBmZWVSYXRlOiB0LnVua25vd24sXG4gICAgICBmZWVNdWx0aXBsaWVyOiB0LnVua25vd24sXG4gICAgICBlbmFibGVUb2tlbnM6IHQudW5rbm93bixcbiAgICAgIGdhc0xpbWl0OiB0LnVua25vd24sXG4gICAgICBnYXNQcmljZTogdC51bmtub3duLFxuICAgICAgaG9wUGFyYW1zOiB0LnVua25vd24sXG4gICAgICBpbnN0YW50OiB0LnVua25vd24sXG4gICAgICBsYXN0TGVkZ2VyU2VxdWVuY2U6IHQudW5rbm93bixcbiAgICAgIGxlZGdlclNlcXVlbmNlRGVsdGE6IHQudW5rbm93bixcbiAgICAgIG1heEZlZTogdC51bmtub3duLFxuICAgICAgbWF4RmVlUmF0ZTogdC51bmtub3duLFxuICAgICAgbWVtbzogdC51bmtub3duLFxuICAgICAgdHJhbnNmZXJJZDogdC51bmtub3duLFxuICAgICAgbWVzc2FnZTogdC51bmtub3duLFxuICAgICAgbnVtQmxvY2tzOiB0LnVua25vd24sXG4gICAgICBub25jZTogdC51bmtub3duLFxuICAgICAgcGVuZGluZ0FwcHJvdmFsSWQ6IHQudW5rbm93bixcbiAgICAgIHByZXZpZXc6IHQudW5rbm93bixcbiAgICAgIHByZXZpZXdQZW5kaW5nVHhzOiB0LnVua25vd24sXG4gICAgICBzZW5kZXJBZGRyZXNzOiB0LnVua25vd24sXG4gICAgICByZWNlaXZlQWRkcmVzczogdC51bmtub3duLFxuICAgICAgcmVjaXBpZW50czogdC51bmtub3duLFxuICAgICAgcmVzZXJ2YXRpb246IHQudW5rbm93bixcbiAgICAgIHJlZnVuZE9wdGlvbnM6IHQudW5rbm93bixcbiAgICAgIHNlcXVlbmNlSWQ6IHQudW5rbm93bixcbiAgICAgIHNvdXJjZUNoYWluOiB0LnVua25vd24sXG4gICAgICBkZXN0aW5hdGlvbkNoYWluOiB0LnVua25vd24sXG4gICAgICB0cnVzdGxpbmVzOiB0LnVua25vd24sXG4gICAgICB0eXBlOiB0LnVua25vd24sXG4gICAgICBsaW1pdDogdC51bmtub3duLFxuICAgICAgdGltZUJvdW5kczogdC51bmtub3duLFxuICAgICAgc3RhcnRUaW1lOiB0LnVua25vd24sXG4gICAgICBzdGF0ZVByb29mS2V5OiB0LnVua25vd24sXG4gICAgICBub25QYXJ0aWNpcGF0aW9uOiB0LnVua25vd24sXG4gICAgICB2YWxpZEZyb21CbG9jazogdC51bmtub3duLFxuICAgICAgdmFsaWRUb0Jsb2NrOiB0LnVua25vd24sXG4gICAgICBtZXNzYWdlS2V5OiB0LnVua25vd24sXG4gICAgICBzdGFraW5nUGFyYW1zOiB0LnVua25vd24sXG4gICAgICBzdGFraW5nT3B0aW9uczogdC51bmtub3duLFxuICAgICAgdW5zdGFraW5nT3B0aW9uczogdC51bmtub3duLFxuICAgICAgZWlwMTU1OTogdC51bmtub3duLFxuICAgICAga2V5cmVnVHhCYXNlNjQ6IHQudW5rbm93bixcbiAgICAgIGNsb3NlUmVtYWluZGVyVG86IHQudW5rbm93bixcbiAgICAgIHRva2VuTmFtZTogdC51bmtub3duLFxuICAgICAgcHJlYnVpbGRUeDogdC51bmtub3duLFxuICAgICAgLy8gcGFyYW0gdG8gc2V0IGVtZXJnZW5jeSBmbGFnIG9uIGEgY3VzdG9kaWFsIHRyYW5zYWN0aW9uLlxuICAgICAgLy8gVGhpcyB0cmFuc2FjdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIGluIGxlc3MgdGhhbiAxIGhvdXIgb3IgaXQgd2lsbCBmYWlsLlxuICAgICAgZW1lcmdlbmN5OiB0LnVua25vd24sXG4gICAgICAvLyBTb2xhbmEgY3VzdG9tIGluc3RydWN0aW9ucyBmb3IgdHJhbnNhY3Rpb24gYnVpbGRpbmdcbiAgICAgIHNvbEluc3RydWN0aW9uczogdC51bmtub3duLFxuICAgICAgLy8gU29sYW5hIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhIGZvciB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICAgICAgc29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhOiB0LnVua25vd24sXG4gICAgICAvLyBBcHRvcyBjdXN0b20gdHJhbnNhY3Rpb24gcGFyYW1ldGVycyBmb3Igc21hcnQgY29udHJhY3QgY2FsbHNcbiAgICAgIGFwdG9zQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXM6IHQudW5rbm93bixcbiAgICAgIGlzVGVzdFRyYW5zYWN0aW9uOiB0LnVua25vd24sXG4gICAgICBmZWVUb2tlbjogdC51bmtub3duLFxuICAgIH0pLFxuICBdKVxuKTtcblxuZXhwb3J0IHR5cGUgQnVpbGRQYXJhbXMgPSB0LlR5cGVPZjx0eXBlb2YgQnVpbGRQYXJhbXM+O1xuZXhwb3J0IGNvbnN0IGJ1aWxkUGFyYW1LZXlzID0gZ2V0Q29kZWNQcm9wZXJ0aWVzKEJ1aWxkUGFyYW1zKTtcbiJdfQ==
|