@bitgo/sdk-coin-starknet 1.3.4 → 1.5.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.
@@ -17,8 +17,10 @@ exports.encodeShortString = encodeShortString;
17
17
  exports.getSelectorFromName = getSelectorFromName;
18
18
  exports.compileExecuteCalldata = compileExecuteCalldata;
19
19
  exports.calculateInvokeTransactionHash = calculateInvokeTransactionHash;
20
+ exports.calculateDeployAccountTransactionHash = calculateDeployAccountTransactionHash;
20
21
  const starknet_1 = require("@scure/starknet");
21
22
  const constants_1 = require("./constants");
23
+ const iface_1 = require("./iface");
22
24
  const secp256k1_1 = require("@bitgo/secp256k1");
23
25
  /**
24
26
  * Normalize a Starknet address to canonical form: 0x + 64 hex chars, zero-padded.
@@ -193,6 +195,17 @@ function validateRawTransaction(tx) {
193
195
  if (!isValidAddress(tx.senderAddress)) {
194
196
  throw new Error(`Invalid sender address: ${tx.senderAddress}`);
195
197
  }
198
+ if (tx.transactionType === iface_1.StarknetTransactionType.DEPLOY_ACCOUNT) {
199
+ if (!tx.classHash) {
200
+ throw new Error('Missing class hash for deploy account transaction');
201
+ }
202
+ if (!tx.constructorCalldata || tx.constructorCalldata.length === 0) {
203
+ throw new Error('Missing constructor calldata for deploy account transaction');
204
+ }
205
+ if (!tx.contractAddressSalt) {
206
+ throw new Error('Missing contract address salt for deploy account transaction');
207
+ }
208
+ }
196
209
  }
197
210
  /**
198
211
  * Encode an ASCII string (max 31 chars) as a felt252.
@@ -268,6 +281,34 @@ function calculateInvokeTransactionHash(params) {
268
281
  const hash = (0, starknet_1.poseidonHashMany)(hashFields);
269
282
  return '0x' + hash.toString(16);
270
283
  }
284
+ /**
285
+ * Compute the Poseidon V3 DEPLOY_ACCOUNT transaction hash per SNIP-8 (starknet.js v3).
286
+ */
287
+ function calculateDeployAccountTransactionHash(params) {
288
+ const { contractAddress, classHash, constructorCalldata, contractAddressSalt, chainId, nonce, resourceBounds, tip = '0x0', nonceDataAvailabilityMode = 0, feeDataAvailabilityMode = 0, paymasterData = [], } = params;
289
+ const feeFieldHash = (0, starknet_1.poseidonHashMany)([
290
+ BigInt(tip),
291
+ encodeResourceBound(constants_1.L1_GAS_NAME, resourceBounds.l1_gas.max_amount, resourceBounds.l1_gas.max_price_per_unit),
292
+ encodeResourceBound(constants_1.L2_GAS_NAME, resourceBounds.l2_gas.max_amount, resourceBounds.l2_gas.max_price_per_unit),
293
+ encodeResourceBound(constants_1.L1_DATA_GAS_NAME, resourceBounds.l1_data_gas.max_amount, resourceBounds.l1_data_gas.max_price_per_unit),
294
+ ]);
295
+ const daMode = (BigInt(nonceDataAvailabilityMode) << 32n) | BigInt(feeDataAvailabilityMode);
296
+ const hashFields = [
297
+ constants_1.DEPLOY_ACCOUNT_TX_PREFIX,
298
+ constants_1.TRANSACTION_VERSION_3,
299
+ BigInt(contractAddress),
300
+ feeFieldHash,
301
+ (0, starknet_1.poseidonHashMany)(paymasterData.map(BigInt)),
302
+ BigInt(chainId),
303
+ BigInt(nonce),
304
+ daMode,
305
+ (0, starknet_1.poseidonHashMany)(constructorCalldata.map(BigInt)),
306
+ BigInt(classHash),
307
+ BigInt(contractAddressSalt),
308
+ ];
309
+ const hash = (0, starknet_1.poseidonHashMany)(hashFields);
310
+ return '0x' + hash.toString(16);
311
+ }
271
312
  exports.default = {
272
313
  isValidAddress,
273
314
  isValidPublicKey,
@@ -286,5 +327,6 @@ exports.default = {
286
327
  getSelectorFromName,
287
328
  compileExecuteCalldata,
288
329
  calculateInvokeTransactionHash,
330
+ calculateDeployAccountTransactionHash,
289
331
  };
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLDRDQUdDO0FBTUQsd0NBU0M7QUFLRCw0Q0FnQkM7QUFLRCw4Q0FHQztBQUtELDREQWFDO0FBTUQsb0ZBVUM7QUFNRCw0RUFlQztBQUtELHdEQWFDO0FBS0QsMERBSUM7QUFNRCw4REFZQztBQU1ELDhDQVlDO0FBS0QsMENBUUM7QUFLRCx3REFPQztBQUtELDhDQWVDO0FBTUQsa0RBRUM7QUFNRCx3REFVQztBQVNELHdFQStDQztBQXJURCw4Q0FBa0Y7QUFDbEYsMkNBV3FCO0FBRXJCLGdEQUF1QztBQUV2Qzs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQWU7SUFDOUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xFLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3BELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLG9CQUFRLENBQUM7SUFDcEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8s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LENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNiLE1BQU07UUFDTixJQUFBLDJCQUFnQixFQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFBLDJCQUFnQixFQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQyxDQUFDO0lBRUYsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUEsMkJBQWdCLEVBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUEsMkJBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsa0JBQWU7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQix3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLGdDQUFnQztJQUNoQyxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQix5QkFBeUI7SUFDekIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsOEJBQThCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMsIHBvc2VpZG9uSGFzaE1hbnksIGtlY2NhayB9IGZyb20gJ0BzY3VyZS9zdGFya25ldCc7XG5pbXBvcnQge1xuICBGRUxUX01BWCxcbiAgTUFTS18xMjgsXG4gIE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0gsXG4gIEFERFJfQk9VTkQsXG4gIENPTlRSQUNUX0FERFJFU1NfUFJFRklYLFxuICBJTlZPS0VfVFhfUFJFRklYLFxuICBUUkFOU0FDVElPTl9WRVJTSU9OXzMsXG4gIEwxX0dBU19OQU1FLFxuICBMMl9HQVNfTkFNRSxcbiAgTDFfREFUQV9HQVNfTkFNRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEsIFN0YXJrbmV0Q2FsbCwgUGFyc2VkVHJhbnNmZXJEYXRhLCBJbnZva2VUcmFuc2FjdGlvbkhhc2hQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGVjYyB9IGZyb20gJ0BiaXRnby9zZWNwMjU2azEnO1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIFN0YXJrbmV0IGFkZHJlc3MgdG8gY2Fub25pY2FsIGZvcm06IDB4ICsgNjQgaGV4IGNoYXJzLCB6ZXJvLXBhZGRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGV4ID0gYWRkcmVzcy5zdGFydHNXaXRoKCcweCcpID8gYWRkcmVzcy5zbGljZSgyKSA6IGFkZHJlc3M7XG4gIHJldHVybiAnMHgnICsgaGV4LnBhZFN0YXJ0KDY0LCAnMCcpLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogU3RhcmtuZXQgYWRkcmVzc2VzIGFyZSBmZWx0MjUyIHZhbHVlcyByZXByZXNlbnRlZCBhcyAweC1wcmVmaXhlZCBoZXguXG4gKiBWYWxpZCByYW5nZTogMCA8IGFkZHJlc3MgPCBGRUxUX01BWCwgd2l0aCAweCBwcmVmaXggYW5kIGhleCBjaGFycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGFkZHJlc3MgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gIGlmICghYWRkcmVzcy5tYXRjaCgvXjB4WzAtOWEtZkEtRl17MSw2NH0kLykpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWwgPSBCaWdJbnQoYWRkcmVzcyk7XG4gICAgcmV0dXJuIHZhbCA+IDBuICYmIHZhbCA8IEZFTFRfTUFYO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHNlY3AyNTZrMSBwdWJsaWMga2V5IChjb21wcmVzc2VkIDMzIGJ5dGVzIG9yIHVuY29tcHJlc3NlZCA2NSBieXRlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGtleSwgJ2hleCcpO1xuICAgIGlmIChidWYubGVuZ3RoID09PSAzMyAmJiAoYnVmWzBdID09PSAweDAyIHx8IGJ1ZlswXSA9PT0gMHgwMykpIHtcbiAgICAgIGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDY1ICYmIGJ1ZlswXSA9PT0gMHgwNCkge1xuICAgICAgZWNjLnBvaW50Q29tcHJlc3MoYnVmLCB0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgc2VjcDI1NmsxIHByaXZhdGUga2V5ICgzMiBieXRlcyBoZXgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiAvXlswLTlhLWZBLUZdezY0fSQvLnRlc3Qoa2V5KTtcbn1cblxuLyoqXG4gKiBHZXQgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkgKHggfHwgeSwgMTI4IGhleCBjaGFycywgbm8gMDQgcHJlZml4KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVuY29tcHJlc3NlZFB1YmxpY0tleShjb21wcmVzc2VkSGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShjb21wcmVzc2VkSGV4LCAnaGV4Jyk7XG4gIGlmIChidWYubGVuZ3RoID09PSA2NSAmJiBidWZbMF0gPT09IDB4MDQpIHtcbiAgICByZXR1cm4gY29tcHJlc3NlZEhleC5zbGljZSgyKTtcbiAgfVxuICBpZiAoYnVmLmxlbmd0aCA9PT0gMzMgJiYgKGJ1ZlswXSA9PT0gMHgwMiB8fCBidWZbMF0gPT09IDB4MDMpKSB7XG4gICAgY29uc3QgdW5jb21wcmVzc2VkID0gQnVmZmVyLmZyb20oZWNjLnBvaW50Q29tcHJlc3MoYnVmLCBmYWxzZSkpO1xuICAgIHJldHVybiB1bmNvbXByZXNzZWQudG9TdHJpbmcoJ2hleCcpLnNsaWNlKDIpO1xuICB9XG4gIGlmIChidWYubGVuZ3RoID09PSA2NCkge1xuICAgIHJldHVybiBjb21wcmVzc2VkSGV4O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwdWJsaWMga2V5IGZvcm1hdDogJHtjb21wcmVzc2VkSGV4LnN1YnN0cmluZygwLCAxMCl9Li4uYCk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBFdGhBY2NvdW50IGNvbnN0cnVjdG9yIGNhbGxkYXRhIGZyb20gZnVsbCBzZWNwMjU2azEgcHVibGljIGtleS5cbiAqIFJldHVybnMgW3hfbG93LCB4X2hpZ2gsIHlfbG93LCB5X2hpZ2hdIGFzIGZlbHQyNTIgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YShmdWxsUHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHB1YlggPSBCaWdJbnQoJzB4JyArIGZ1bGxQdWJsaWNLZXkuc2xpY2UoMCwgNjQpKTtcbiAgY29uc3QgcHViWSA9IEJpZ0ludCgnMHgnICsgZnVsbFB1YmxpY0tleS5zbGljZSg2NCkpO1xuXG4gIHJldHVybiBbXG4gICAgJzB4JyArIChwdWJYICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlggPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWSAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJZID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgXTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIFN0YXJrbmV0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBoYXNoIGNvbXBvbmVudHMuXG4gKiBSZXBsaWNhdGVzIHN0YXJrbmV0LmpzIGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoIHVzaW5nIEBzY3VyZS9zdGFya25ldCBwZWRlcnNlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoKFxuICBzYWx0OiBzdHJpbmcsXG4gIGNsYXNzSGFzaDogc3RyaW5nLFxuICBjb25zdHJ1Y3RvckNhbGxkYXRhOiBzdHJpbmdbXSxcbiAgZGVwbG95ZXJBZGRyZXNzOiBudW1iZXIgfCBiaWdpbnRcbik6IHN0cmluZyB7XG4gIGNvbnN0IGNhbGxkYXRhSGFzaCA9IGNvbXB1dGVIYXNoT25FbGVtZW50cyhjb25zdHJ1Y3RvckNhbGxkYXRhLm1hcChCaWdJbnQpKSBhcyBzdHJpbmc7XG4gIGNvbnN0IHJhd0hhc2ggPSBjb21wdXRlSGFzaE9uRWxlbWVudHMoW1xuICAgIENPTlRSQUNUX0FERFJFU1NfUFJFRklYLFxuICAgIEJpZ0ludChkZXBsb3llckFkZHJlc3MpLFxuICAgIEJpZ0ludChzYWx0KSxcbiAgICBCaWdJbnQoY2xhc3NIYXNoKSxcbiAgICBCaWdJbnQoY2FsbGRhdGFIYXNoKSxcbiAgXSkgYXMgc3RyaW5nO1xuICByZXR1cm4gbm9ybWFsaXplQWRkcmVzcygnMHgnICsgKEJpZ0ludChyYXdIYXNoKSAlIEFERFJfQk9VTkQpLnRvU3RyaW5nKDE2KSk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBTdGFya25ldCBFdGhBY2NvdW50IGNvdW50ZXJmYWN0dWFsIGFkZHJlc3MgZnJvbSBwdWJsaWMga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVN0YXJrbmV0QWRkcmVzcyhmdWxsUHVibGljS2V5OiBzdHJpbmcpOiB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgY29uc3RydWN0b3JDYWxsZGF0YTogc3RyaW5nW107XG4gIHNhbHQ6IHN0cmluZztcbn0ge1xuICBjb25zdCBjb25zdHJ1Y3RvckNhbGxkYXRhID0gY29tcGlsZUV0aEFjY291bnRDb25zdHJ1Y3RvckNhbGxkYXRhKGZ1bGxQdWJsaWNLZXkpO1xuXG4gIGNvbnN0IHB1YlggPSBCaWdJbnQoJzB4JyArIGZ1bGxQdWJsaWNLZXkuc2xpY2UoMCwgNjQpKTtcbiAgY29uc3Qgc2FsdCA9ICcweCcgKyAocHViWCAlIEZFTFRfTUFYKS50b1N0cmluZygxNik7XG5cbiAgY29uc3QgYWRkcmVzcyA9IGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoKHNhbHQsIE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0gsIGNvbnN0cnVjdG9yQ2FsbGRhdGEsIDApO1xuXG4gIHJldHVybiB7IGFkZHJlc3MsIGNvbnN0cnVjdG9yQ2FsbGRhdGEsIHNhbHQgfTtcbn1cblxuLyoqXG4gKiBEZXJpdmUgU3RhcmtuZXQgRXRoQWNjb3VudCBhZGRyZXNzIGZyb20gY29tcHJlc3NlZCBzZWNwMjU2azEgcHVibGljIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KGNvbXByZXNzZWRQdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGZ1bGxQdWJsaWNLZXkgPSBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXkoY29tcHJlc3NlZFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgYWRkcmVzcyB9ID0gY29tcHV0ZVN0YXJrbmV0QWRkcmVzcyhmdWxsUHVibGljS2V5KTtcbiAgcmV0dXJuIGFkZHJlc3M7XG59XG5cbi8qKlxuICogRm9ybWF0IEVDRFNBIHNpZ25hdHVyZSBmb3IgU3RhcmtuZXQgRXRoQWNjb3VudC5cbiAqIFJldHVybnMgW3JfbG93LCByX2hpZ2gsIHNfbG93LCBzX2hpZ2gsIHZdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXRoQWNjb3VudFNpZ25hdHVyZShyOiBzdHJpbmcsIHM6IHN0cmluZywgcmVjaWQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgY29uc3QgckJpZyA9IEJpZ0ludCgnMHgnICsgcik7XG4gIGNvbnN0IHNCaWcgPSBCaWdJbnQoJzB4JyArIHMpO1xuICBjb25zdCB2ID0gQmlnSW50KHJlY2lkKTtcblxuICByZXR1cm4gW1xuICAgICcweCcgKyAockJpZyAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChyQmlnID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHNCaWcgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAoc0JpZyA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIHYudG9TdHJpbmcoMTYpLFxuICBdO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgcmVjaXBpZW50LCBhbW91bnQsIGFuZCB0b2tlbiBjb250cmFjdCBmcm9tIGEgdHJhbnNmZXIgY2FsbC5cbiAqIFJldmVyc2Ugb2YgVHJhbnNmZXJCdWlsZGVyLmNvbXBpbGVUcmFuc2ZlckNhbGxkYXRhOiBjYWxsZGF0YSA9IFtyZWNpcGllbnQsIGFtb3VudF9sb3csIGFtb3VudF9oaWdoXS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJhbnNmZXJDYWxsKGNhbGw6IFN0YXJrbmV0Q2FsbCk6IFBhcnNlZFRyYW5zZmVyRGF0YSB8IHVuZGVmaW5lZCB7XG4gIGlmIChjYWxsLmVudHJ5cG9pbnQgIT09ICd0cmFuc2ZlcicgfHwgY2FsbC5jYWxsZGF0YS5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBhbW91bnRMb3cgPSBCaWdJbnQoY2FsbC5jYWxsZGF0YVsxXSk7XG4gIGNvbnN0IGFtb3VudEhpZ2ggPSBCaWdJbnQoY2FsbC5jYWxsZGF0YVsyXSk7XG4gIGNvbnN0IGFtb3VudCA9ICgoYW1vdW50SGlnaCA8PCAxMjhuKSB8IGFtb3VudExvdykudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHtcbiAgICByZWNpcGllbnQ6IGNhbGwuY2FsbGRhdGFbMF0sXG4gICAgYW1vdW50LFxuICAgIHRva2VuQ29udHJhY3Q6IGNhbGwuY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgbmV3IHNlY3AyNTZrMSBrZXkgcGFpci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogeyBwdWI6IHN0cmluZzsgcHJ2OiBzdHJpbmcgfSB7XG4gIGNvbnN0IHsgS2V5UGFpcjogU3RhcmtuZXRLZXlQYWlyIH0gPSByZXF1aXJlKCcuL2tleVBhaXInKTtcbiAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgU3RhcmtuZXRLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBTdGFya25ldEtleVBhaXIoKTtcbiAgY29uc3QgeyBwdWIsIHBydiB9ID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gIGlmICghcHJ2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcml2YXRlIGtleSBpcyBtaXNzaW5nIGluIHRoZSBnZW5lcmF0ZWQga2V5IHBhaXIuJyk7XG4gIH1cbiAgcmV0dXJuIHsgcHViLCBwcnYgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSByYXcgdHJhbnNhY3Rpb24gZGF0YSBoYXMgcmVxdWlyZWQgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSYXdUcmFuc2FjdGlvbih0eDogU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEpOiB2b2lkIHtcbiAgaWYgKCF0eC5zZW5kZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHNlbmRlciBhZGRyZXNzJyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyh0eC5zZW5kZXJBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW5kZXIgYWRkcmVzczogJHt0eC5zZW5kZXJBZGRyZXNzfWApO1xuICB9XG59XG5cbi8qKlxuICogRW5jb2RlIGFuIEFTQ0lJIHN0cmluZyAobWF4IDMxIGNoYXJzKSBhcyBhIGZlbHQyNTIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTaG9ydFN0cmluZyhzdHI6IHN0cmluZyk6IGJpZ2ludCB7XG4gIGlmIChzdHIubGVuZ3RoID4gMzEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNob3J0IHN0cmluZyB0b28gbG9uZzogJHtzdHIubGVuZ3RofSA+IDMxYCk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPiAxMjcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm9uLUFTQ0lJIGNoYXJhY3RlciBhdCBpbmRleCAke2l9OiBjb2RlICR7Y29kZX1gKTtcbiAgICB9XG4gIH1cbiAgbGV0IHJlc3VsdCA9IDBuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgOG4pIHwgQmlnSW50KHN0ci5jaGFyQ29kZUF0KGkpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIFN0YXJrbmV0IGZ1bmN0aW9uIHNlbGVjdG9yOiBrZWNjYWsyNTYobmFtZSkgbWFza2VkIHRvIDI1MCBiaXRzLlxuICogQHNjdXJlL3N0YXJrbmV0J3Mga2VjY2FrKCkgYWxyZWFkeSBhcHBsaWVzIHRoZSAyNTAtYml0IG1hc2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RvckZyb21OYW1lKG5hbWU6IHN0cmluZyk6IGJpZ2ludCB7XG4gIHJldHVybiBrZWNjYWsoQnVmZmVyLmZyb20obmFtZSwgJ2FzY2lpJykpO1xufVxuXG4vKipcbiAqIENvbXBpbGUgY2FsbHMgaW50byB0aGUgQ2Fpcm8gMSBtdWx0aWNhbGwgX19leGVjdXRlX18gY2FsbGRhdGEgZm9ybWF0LlxuICogRm9ybWF0OiBbbnVtX2NhbGxzLCB0b18wLCBzZWxlY3Rvcl8wLCBkYXRhX2xlbl8wLCAuLi5kYXRhXzAsIHRvXzEsIC4uLl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVFeGVjdXRlQ2FsbGRhdGEoY2FsbHM6IFN0YXJrbmV0Q2FsbFtdKTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIHJlc3VsdC5wdXNoKCcweCcgKyBCaWdJbnQoY2FsbHMubGVuZ3RoKS50b1N0cmluZygxNikpO1xuICBmb3IgKGNvbnN0IGNhbGwgb2YgY2FsbHMpIHtcbiAgICByZXN1bHQucHVzaChjYWxsLmNvbnRyYWN0QWRkcmVzcyk7XG4gICAgcmVzdWx0LnB1c2goJzB4JyArIGdldFNlbGVjdG9yRnJvbU5hbWUoY2FsbC5lbnRyeXBvaW50KS50b1N0cmluZygxNikpO1xuICAgIHJlc3VsdC5wdXNoKCcweCcgKyBCaWdJbnQoY2FsbC5jYWxsZGF0YS5sZW5ndGgpLnRvU3RyaW5nKDE2KSk7XG4gICAgcmVzdWx0LnB1c2goLi4uY2FsbC5jYWxsZGF0YSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlUmVzb3VyY2VCb3VuZCh0eXBlTmFtZTogYmlnaW50LCBtYXhBbW91bnQ6IHN0cmluZywgbWF4UHJpY2VQZXJVbml0OiBzdHJpbmcpOiBiaWdpbnQge1xuICByZXR1cm4gKHR5cGVOYW1lIDw8IDE5Mm4pIHwgKEJpZ0ludChtYXhBbW91bnQpIDw8IDEyOG4pIHwgQmlnSW50KG1heFByaWNlUGVyVW5pdCk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgUG9zZWlkb24gVjMgSU5WT0tFIHRyYW5zYWN0aW9uIGhhc2ggcGVyIFNOSVAtOC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUludm9rZVRyYW5zYWN0aW9uSGFzaChwYXJhbXM6IEludm9rZVRyYW5zYWN0aW9uSGFzaFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBzZW5kZXJBZGRyZXNzLFxuICAgIGNvbXBpbGVkQ2FsbGRhdGEsXG4gICAgY2hhaW5JZCxcbiAgICBub25jZSxcbiAgICByZXNvdXJjZUJvdW5kcyxcbiAgICB0aXAgPSAnMHgwJyxcbiAgICBub25jZURhdGFBdmFpbGFiaWxpdHlNb2RlID0gMCxcbiAgICBmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSA9IDAsXG4gICAgcGF5bWFzdGVyRGF0YSA9IFtdLFxuICAgIGFjY291bnREZXBsb3ltZW50RGF0YSA9IFtdLFxuICAgIHByb29mRmFjdHMsXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZmVlRmllbGRIYXNoID0gcG9zZWlkb25IYXNoTWFueShbXG4gICAgQmlnSW50KHRpcCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMV9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwxX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoTDJfR0FTX05BTUUsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfYW1vdW50LCByZXNvdXJjZUJvdW5kcy5sMl9nYXMubWF4X3ByaWNlX3Blcl91bml0KSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKFxuICAgICAgTDFfREFUQV9HQVNfTkFNRSxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9hbW91bnQsXG4gICAgICByZXNvdXJjZUJvdW5kcy5sMV9kYXRhX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXRcbiAgICApLFxuICBdKTtcblxuICBjb25zdCBkYU1vZGUgPSAoQmlnSW50KG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUpIDw8IDMybikgfCBCaWdJbnQoZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGUpO1xuXG4gIGNvbnN0IGhhc2hGaWVsZHM6IGJpZ2ludFtdID0gW1xuICAgIElOVk9LRV9UWF9QUkVGSVgsXG4gICAgVFJBTlNBQ1RJT05fVkVSU0lPTl8zLFxuICAgIEJpZ0ludChzZW5kZXJBZGRyZXNzKSxcbiAgICBmZWVGaWVsZEhhc2gsXG4gICAgcG9zZWlkb25IYXNoTWFueShwYXltYXN0ZXJEYXRhLm1hcChCaWdJbnQpKSxcbiAgICBCaWdJbnQoY2hhaW5JZCksXG4gICAgQmlnSW50KG5vbmNlKSxcbiAgICBkYU1vZGUsXG4gICAgcG9zZWlkb25IYXNoTWFueShhY2NvdW50RGVwbG95bWVudERhdGEubWFwKEJpZ0ludCkpLFxuICAgIHBvc2VpZG9uSGFzaE1hbnkoY29tcGlsZWRDYWxsZGF0YS5tYXAoQmlnSW50KSksXG4gIF07XG5cbiAgaWYgKHByb29mRmFjdHMgJiYgcHJvb2ZGYWN0cy5sZW5ndGggPiAwKSB7XG4gICAgaGFzaEZpZWxkcy5wdXNoKHBvc2VpZG9uSGFzaE1hbnkocHJvb2ZGYWN0cy5tYXAoQmlnSW50KSkpO1xuICB9XG5cbiAgY29uc3QgaGFzaCA9IHBvc2VpZG9uSGFzaE1hbnkoaGFzaEZpZWxkcyk7XG4gIHJldHVybiAnMHgnICsgaGFzaC50b1N0cmluZygxNik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNWYWxpZEFkZHJlc3MsXG4gIGlzVmFsaWRQdWJsaWNLZXksXG4gIGlzVmFsaWRQcml2YXRlS2V5LFxuICBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXksXG4gIGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YSxcbiAgY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2gsXG4gIGNvbXB1dGVTdGFya25ldEFkZHJlc3MsXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5LFxuICBub3JtYWxpemVBZGRyZXNzLFxuICBmb3JtYXRFdGhBY2NvdW50U2lnbmF0dXJlLFxuICBwYXJzZVRyYW5zZmVyQ2FsbCxcbiAgZ2VuZXJhdGVLZXlQYWlyLFxuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uLFxuICBlbmNvZGVTaG9ydFN0cmluZyxcbiAgZ2V0U2VsZWN0b3JGcm9tTmFtZSxcbiAgY29tcGlsZUV4ZWN1dGVDYWxsZGF0YSxcbiAgY2FsY3VsYXRlSW52b2tlVHJhbnNhY3Rpb25IYXNoLFxufTtcbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkJBLDRDQUdDO0FBTUQsd0NBU0M7QUFLRCw0Q0FnQkM7QUFLRCw4Q0FHQztBQUtELDREQWFDO0FBTUQsb0ZBVUM7QUFNRCw0RUFlQztBQUtELHdEQWFDO0FBS0QsMERBSUM7QUFNRCw4REFZQztBQU1ELDhDQVlDO0FBS0QsMENBUUM7QUFLRCx3REFrQkM7QUFLRCw4Q0FlQztBQU1ELGtEQUVDO0FBTUQsd0RBVUM7QUFTRCx3RUErQ0M7QUFLRCxzRkE0Q0M7QUF6WEQsOENBQWtGO0FBQ2xGLDJDQVlxQjtBQUNyQixtQ0FPaUI7QUFDakIsZ0RBQXVDO0FBRXZDOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEUsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsb0JBQVEsQ0FBQztJQUNwQyxDQUFD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QUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztLQUM1QixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBZ0IsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxrQkFBZTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLHdCQUF3QjtJQUN4QixvQ0FBb0M7SUFDcEMsZ0NBQWdDO0lBQ2hDLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0Qiw4QkFBOEI7SUFDOUIscUNBQXFDO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMsIHBvc2VpZG9uSGFzaE1hbnksIGtlY2NhayB9IGZyb20gJ0BzY3VyZS9zdGFya25ldCc7XG5pbXBvcnQge1xuICBGRUxUX01BWCxcbiAgTUFTS18xMjgsXG4gIE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0gsXG4gIEFERFJfQk9VTkQsXG4gIENPTlRSQUNUX0FERFJFU1NfUFJFRklYLFxuICBJTlZPS0VfVFhfUFJFRklYLFxuICBERVBMT1lfQUNDT1VOVF9UWF9QUkVGSVgsXG4gIFRSQU5TQUNUSU9OX1ZFUlNJT05fMyxcbiAgTDFfR0FTX05BTUUsXG4gIEwyX0dBU19OQU1FLFxuICBMMV9EQVRBX0dBU19OQU1FLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSxcbiAgU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUsXG4gIFN0YXJrbmV0Q2FsbCxcbiAgUGFyc2VkVHJhbnNmZXJEYXRhLFxuICBJbnZva2VUcmFuc2FjdGlvbkhhc2hQYXJhbXMsXG4gIERlcGxveUFjY291bnRUcmFuc2FjdGlvbkhhc2hQYXJhbXMsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5cbi8qKlxuICogTm9ybWFsaXplIGEgU3RhcmtuZXQgYWRkcmVzcyB0byBjYW5vbmljYWwgZm9ybTogMHggKyA2NCBoZXggY2hhcnMsIHplcm8tcGFkZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoZXggPSBhZGRyZXNzLnN0YXJ0c1dpdGgoJzB4JykgPyBhZGRyZXNzLnNsaWNlKDIpIDogYWRkcmVzcztcbiAgcmV0dXJuICcweCcgKyBoZXgucGFkU3RhcnQoNjQsICcwJykudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBTdGFya25ldCBhZGRyZXNzZXMgYXJlIGZlbHQyNTIgdmFsdWVzIHJlcHJlc2VudGVkIGFzIDB4LXByZWZpeGVkIGhleC5cbiAqIFZhbGlkIHJhbmdlOiAwIDwgYWRkcmVzcyA8IEZFTFRfTUFYLCB3aXRoIDB4IHByZWZpeCBhbmQgaGV4IGNoYXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgYWRkcmVzcyAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFhZGRyZXNzLm1hdGNoKC9eMHhbMC05YS1mQS1GXXsxLDY0fSQvKSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHZhbCA9IEJpZ0ludChhZGRyZXNzKTtcbiAgICByZXR1cm4gdmFsID4gMG4gJiYgdmFsIDwgRkVMVF9NQVg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgc2VjcDI1NmsxIHB1YmxpYyBrZXkgKGNvbXByZXNzZWQgMzMgYnl0ZXMgb3IgdW5jb21wcmVzc2VkIDY1IGJ5dGVzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oa2V5LCAnaGV4Jyk7XG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDMzICYmIChidWZbMF0gPT09IDB4MDIgfHwgYnVmWzBdID09PSAweDAzKSkge1xuICAgICAgZWNjLnBvaW50Q29tcHJlc3MoYnVmLCB0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gNjUgJiYgYnVmWzBdID09PSAweDA0KSB7XG4gICAgICBlY2MucG9pbnRDb21wcmVzcyhidWYsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBzZWNwMjU2azEgcHJpdmF0ZSBrZXkgKDMyIGJ5dGVzIGhleCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIC9eWzAtOWEtZkEtRl17NjR9JC8udGVzdChrZXkpO1xufVxuXG4vKipcbiAqIEdldCB1bmNvbXByZXNzZWQgcHVibGljIGtleSAoeCB8fCB5LCAxMjggaGV4IGNoYXJzLCBubyAwNCBwcmVmaXgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KGNvbXByZXNzZWRIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGNvbXByZXNzZWRIZXgsICdoZXgnKTtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDY1ICYmIGJ1ZlswXSA9PT0gMHgwNCkge1xuICAgIHJldHVybiBjb21wcmVzc2VkSGV4LnNsaWNlKDIpO1xuICB9XG4gIGlmIChidWYubGVuZ3RoID09PSAzMyAmJiAoYnVmWzBdID09PSAweDAyIHx8IGJ1ZlswXSA9PT0gMHgwMykpIHtcbiAgICBjb25zdCB1bmNvbXByZXNzZWQgPSBCdWZmZXIuZnJvbShlY2MucG9pbnRDb21wcmVzcyhidWYsIGZhbHNlKSk7XG4gICAgcmV0dXJuIHVuY29tcHJlc3NlZC50b1N0cmluZygnaGV4Jykuc2xpY2UoMik7XG4gIH1cbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDY0KSB7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRIZXg7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHB1YmxpYyBrZXkgZm9ybWF0OiAke2NvbXByZXNzZWRIZXguc3Vic3RyaW5nKDAsIDEwKX0uLi5gKTtcbn1cblxuLyoqXG4gKiBDb21waWxlIEV0aEFjY291bnQgY29uc3RydWN0b3IgY2FsbGRhdGEgZnJvbSBmdWxsIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICogUmV0dXJucyBbeF9sb3csIHhfaGlnaCwgeV9sb3csIHlfaGlnaF0gYXMgZmVsdDI1MiBzdHJpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUV0aEFjY291bnRDb25zdHJ1Y3RvckNhbGxkYXRhKGZ1bGxQdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcHViWCA9IEJpZ0ludCgnMHgnICsgZnVsbFB1YmxpY0tleS5zbGljZSgwLCA2NCkpO1xuICBjb25zdCBwdWJZID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDY0KSk7XG5cbiAgcmV0dXJuIFtcbiAgICAnMHgnICsgKHB1YlggJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWCA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJZICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlkgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICBdO1xufVxuXG4vKipcbiAqIENvbXB1dGUgU3RhcmtuZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGhhc2ggY29tcG9uZW50cy5cbiAqIFJlcGxpY2F0ZXMgc3RhcmtuZXQuanMgY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2ggdXNpbmcgQHNjdXJlL3N0YXJrbmV0IHBlZGVyc2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2goXG4gIHNhbHQ6IHN0cmluZyxcbiAgY2xhc3NIYXNoOiBzdHJpbmcsXG4gIGNvbnN0cnVjdG9yQ2FsbGRhdGE6IHN0cmluZ1tdLFxuICBkZXBsb3llckFkZHJlc3M6IG51bWJlciB8IGJpZ2ludFxuKTogc3RyaW5nIHtcbiAgY29uc3QgY2FsbGRhdGFIYXNoID0gY29tcHV0ZUhhc2hPbkVsZW1lbnRzKGNvbnN0cnVjdG9yQ2FsbGRhdGEubWFwKEJpZ0ludCkpIGFzIHN0cmluZztcbiAgY29uc3QgcmF3SGFzaCA9IGNvbXB1dGVIYXNoT25FbGVtZW50cyhbXG4gICAgQ09OVFJBQ1RfQUREUkVTU19QUkVGSVgsXG4gICAgQmlnSW50KGRlcGxveWVyQWRkcmVzcyksXG4gICAgQmlnSW50KHNhbHQpLFxuICAgIEJpZ0ludChjbGFzc0hhc2gpLFxuICAgIEJpZ0ludChjYWxsZGF0YUhhc2gpLFxuICBdKSBhcyBzdHJpbmc7XG4gIHJldHVybiBub3JtYWxpemVBZGRyZXNzKCcweCcgKyAoQmlnSW50KHJhd0hhc2gpICUgQUREUl9CT1VORCkudG9TdHJpbmcoMTYpKTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIFN0YXJrbmV0IEV0aEFjY291bnQgY291bnRlcmZhY3R1YWwgYWRkcmVzcyBmcm9tIHB1YmxpYyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU3RhcmtuZXRBZGRyZXNzKGZ1bGxQdWJsaWNLZXk6IHN0cmluZyk6IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjb25zdHJ1Y3RvckNhbGxkYXRhOiBzdHJpbmdbXTtcbiAgc2FsdDogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yQ2FsbGRhdGEgPSBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEoZnVsbFB1YmxpY0tleSk7XG5cbiAgY29uc3QgcHViWCA9IEJpZ0ludCgnMHgnICsgZnVsbFB1YmxpY0tleS5zbGljZSgwLCA2NCkpO1xuICBjb25zdCBzYWx0ID0gJzB4JyArIChwdWJYICUgRkVMVF9NQVgpLnRvU3RyaW5nKDE2KTtcblxuICBjb25zdCBhZGRyZXNzID0gY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2goc2FsdCwgT1pfRVRIX0FDQ09VTlRfQ0xBU1NfSEFTSCwgY29uc3RydWN0b3JDYWxsZGF0YSwgMCk7XG5cbiAgcmV0dXJuIHsgYWRkcmVzcywgY29uc3RydWN0b3JDYWxsZGF0YSwgc2FsdCB9O1xufVxuXG4vKipcbiAqIERlcml2ZSBTdGFya25ldCBFdGhBY2NvdW50IGFkZHJlc3MgZnJvbSBjb21wcmVzc2VkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoY29tcHJlc3NlZFB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZnVsbFB1YmxpY0tleSA9IGdldFVuY29tcHJlc3NlZFB1YmxpY0tleShjb21wcmVzc2VkUHVibGljS2V5KTtcbiAgY29uc3QgeyBhZGRyZXNzIH0gPSBjb21wdXRlU3RhcmtuZXRBZGRyZXNzKGZ1bGxQdWJsaWNLZXkpO1xuICByZXR1cm4gYWRkcmVzcztcbn1cblxuLyoqXG4gKiBGb3JtYXQgRUNEU0Egc2lnbmF0dXJlIGZvciBTdGFya25ldCBFdGhBY2NvdW50LlxuICogUmV0dXJucyBbcl9sb3csIHJfaGlnaCwgc19sb3csIHNfaGlnaCwgdl0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFdGhBY2NvdW50U2lnbmF0dXJlKHI6IHN0cmluZywgczogc3RyaW5nLCByZWNpZDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBjb25zdCByQmlnID0gQmlnSW50KCcweCcgKyByKTtcbiAgY29uc3Qgc0JpZyA9IEJpZ0ludCgnMHgnICsgcyk7XG4gIGNvbnN0IHYgPSBCaWdJbnQocmVjaWQpO1xuXG4gIHJldHVybiBbXG4gICAgJzB4JyArIChyQmlnICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHJCaWcgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAoc0JpZyAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChzQmlnID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgdi50b1N0cmluZygxNiksXG4gIF07XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWNpcGllbnQsIGFtb3VudCwgYW5kIHRva2VuIGNvbnRyYWN0IGZyb20gYSB0cmFuc2ZlciBjYWxsLlxuICogUmV2ZXJzZSBvZiBUcmFuc2ZlckJ1aWxkZXIuY29tcGlsZVRyYW5zZmVyQ2FsbGRhdGE6IGNhbGxkYXRhID0gW3JlY2lwaWVudCwgYW1vdW50X2xvdywgYW1vdW50X2hpZ2hdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmFuc2ZlckNhbGwoY2FsbDogU3RhcmtuZXRDYWxsKTogUGFyc2VkVHJhbnNmZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNhbGwuZW50cnlwb2ludCAhPT0gJ3RyYW5zZmVyJyB8fCBjYWxsLmNhbGxkYXRhLmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGFtb3VudExvdyA9IEJpZ0ludChjYWxsLmNhbGxkYXRhWzFdKTtcbiAgY29uc3QgYW1vdW50SGlnaCA9IEJpZ0ludChjYWxsLmNhbGxkYXRhWzJdKTtcbiAgY29uc3QgYW1vdW50ID0gKChhbW91bnRIaWdoIDw8IDEyOG4pIHwgYW1vdW50TG93KS50b1N0cmluZygpO1xuICByZXR1cm4ge1xuICAgIHJlY2lwaWVudDogY2FsbC5jYWxsZGF0YVswXSxcbiAgICBhbW91bnQsXG4gICAgdG9rZW5Db250cmFjdDogY2FsbC5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBuZXcgc2VjcDI1NmsxIGtleSBwYWlyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiB7IHB1Yjogc3RyaW5nOyBwcnY6IHN0cmluZyB9IHtcbiAgY29uc3QgeyBLZXlQYWlyOiBTdGFya25ldEtleVBhaXIgfSA9IHJlcXVpcmUoJy4va2V5UGFpcicpO1xuICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBTdGFya25ldEtleVBhaXIoeyBzZWVkIH0pIDogbmV3IFN0YXJrbmV0S2V5UGFpcigpO1xuICBjb25zdCB7IHB1YiwgcHJ2IH0gPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgaWYgKCFwcnYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByaXZhdGUga2V5IGlzIG1pc3NpbmcgaW4gdGhlIGdlbmVyYXRlZCBrZXkgcGFpci4nKTtcbiAgfVxuICByZXR1cm4geyBwdWIsIHBydiB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHJhdyB0cmFuc2FjdGlvbiBkYXRhIGhhcyByZXF1aXJlZCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHR4OiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSk6IHZvaWQge1xuICBpZiAoIXR4LnNlbmRlckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2VuZGVyIGFkZHJlc3MnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKHR4LnNlbmRlckFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbmRlciBhZGRyZXNzOiAke3R4LnNlbmRlckFkZHJlc3N9YCk7XG4gIH1cbiAgaWYgKHR4LnRyYW5zYWN0aW9uVHlwZSA9PT0gU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUuREVQTE9ZX0FDQ09VTlQpIHtcbiAgICBpZiAoIXR4LmNsYXNzSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNsYXNzIGhhc2ggZm9yIGRlcGxveSBhY2NvdW50IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdHguY29uc3RydWN0b3JDYWxsZGF0YSB8fCB0eC5jb25zdHJ1Y3RvckNhbGxkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbnN0cnVjdG9yIGNhbGxkYXRhIGZvciBkZXBsb3kgYWNjb3VudCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXR4LmNvbnRyYWN0QWRkcmVzc1NhbHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBjb250cmFjdCBhZGRyZXNzIHNhbHQgZm9yIGRlcGxveSBhY2NvdW50IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5jb2RlIGFuIEFTQ0lJIHN0cmluZyAobWF4IDMxIGNoYXJzKSBhcyBhIGZlbHQyNTIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTaG9ydFN0cmluZyhzdHI6IHN0cmluZyk6IGJpZ2ludCB7XG4gIGlmIChzdHIubGVuZ3RoID4gMzEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNob3J0IHN0cmluZyB0b28gbG9uZzogJHtzdHIubGVuZ3RofSA+IDMxYCk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPiAxMjcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm9uLUFTQ0lJIGNoYXJhY3RlciBhdCBpbmRleCAke2l9OiBjb2RlICR7Y29kZX1gKTtcbiAgICB9XG4gIH1cbiAgbGV0IHJlc3VsdCA9IDBuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgOG4pIHwgQmlnSW50KHN0ci5jaGFyQ29kZUF0KGkpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIFN0YXJrbmV0IGZ1bmN0aW9uIHNlbGVjdG9yOiBrZWNjYWsyNTYobmFtZSkgbWFza2VkIHRvIDI1MCBiaXRzLlxuICogQHNjdXJlL3N0YXJrbmV0J3Mga2VjY2FrKCkgYWxyZWFkeSBhcHBsaWVzIHRoZSAyNTAtYml0IG1hc2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RvckZyb21OYW1lKG5hbWU6IHN0cmluZyk6IGJpZ2ludCB7XG4gIHJldHVybiBrZWNjYWsoQnVmZmVyLmZyb20obmFtZSwgJ2FzY2lpJykpO1xufVxuXG4vKipcbiAqIENvbXBpbGUgY2FsbHMgaW50byB0aGUgQ2Fpcm8gMSBtdWx0aWNhbGwgX19leGVjdXRlX18gY2FsbGRhdGEgZm9ybWF0LlxuICogRm9ybWF0OiBbbnVtX2NhbGxzLCB0b18wLCBzZWxlY3Rvcl8wLCBkYXRhX2xlbl8wLCAuLi5kYXRhXzAsIHRvXzEsIC4uLl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVFeGVjdXRlQ2FsbGRhdGEoY2FsbHM6IFN0YXJrbmV0Q2FsbFtdKTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIHJlc3VsdC5wdXNoKCcweCcgKyBCaWdJbnQoY2FsbHMubGVuZ3RoKS50b1N0cmluZygxNikpO1xuICBmb3IgKGNvbnN0IGNhbGwgb2YgY2FsbHMpIHtcbiAgICByZXN1bHQucHVzaChjYWxsLmNvbnRyYWN0QWRkcmVzcyk7XG4gICAgcmVzdWx0LnB1c2goJzB4JyArIGdldFNlbGVjdG9yRnJvbU5hbWUoY2FsbC5lbnRyeXBvaW50KS50b1N0cmluZygxNikpO1xuICAgIHJlc3VsdC5wdXNoKCcweCcgKyBCaWdJbnQoY2FsbC5jYWxsZGF0YS5sZW5ndGgpLnRvU3RyaW5nKDE2KSk7XG4gICAgcmVzdWx0LnB1c2goLi4uY2FsbC5jYWxsZGF0YSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlUmVzb3VyY2VCb3VuZCh0eXBlTmFtZTogYmlnaW50LCBtYXhBbW91bnQ6IHN0cmluZywgbWF4UHJpY2VQZXJVbml0OiBzdHJpbmcpOiBiaWdpbnQge1xuICByZXR1cm4gKHR5cGVOYW1lIDw8IDE5Mm4pIHwgKEJpZ0ludChtYXhBbW91bnQpIDw8IDEyOG4pIHwgQmlnSW50KG1heFByaWNlUGVyVW5pdCk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgUG9zZWlkb24gVjMgSU5WT0tFIHRyYW5zYWN0aW9uIGhhc2ggcGVyIFNOSVAtOC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUludm9rZVRyYW5zYWN0aW9uSGFzaChwYXJhbXM6IEludm9rZVRyYW5zYWN0aW9uSGFzaFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBzZW5kZXJBZGRyZXNzLFxuICAgIGNvbXBpbGVkQ2FsbGRhdGEsXG4gICAgY2hhaW5JZCxcbiAgICBub25jZSxcbiAgICByZXNvdXJjZUJvdW5kcyxcbiAgICB0aXAgPSAnMHgwJyxcbiAgICBub25jZURhdGFBdmFpbGFiaWxpdHlNb2RlID0gMCxcbiAgICBmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSA9IDAsXG4gICAgcGF5bWFzdGVyRGF0YSA9IFtdLFxuICAgIGFjY291bnREZXBsb3ltZW50RGF0YSA9IFtdLFxuICAgIHByb29mRmFjdHMsXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZmVlRmllbGRIYXNoID0gcG9zZWlkb25IYXNoTWFueShbXG4gICAgQmlnSW50KHRpcCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMV9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwxX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoTDJfR0FTX05BTUUsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfYW1vdW50LCByZXNvdXJjZUJvdW5kcy5sMl9nYXMubWF4X3ByaWNlX3Blcl91bml0KSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKFxuICAgICAgTDFfREFUQV9HQVNfTkFNRSxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9hbW91bnQsXG4gICAgICByZXNvdXJjZUJvdW5kcy5sMV9kYXRhX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXRcbiAgICApLFxuICBdKTtcblxuICBjb25zdCBkYU1vZGUgPSAoQmlnSW50KG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUpIDw8IDMybikgfCBCaWdJbnQoZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGUpO1xuXG4gIGNvbnN0IGhhc2hGaWVsZHM6IGJpZ2ludFtdID0gW1xuICAgIElOVk9LRV9UWF9QUkVGSVgsXG4gICAgVFJBTlNBQ1RJT05fVkVSU0lPTl8zLFxuICAgIEJpZ0ludChzZW5kZXJBZGRyZXNzKSxcbiAgICBmZWVGaWVsZEhhc2gsXG4gICAgcG9zZWlkb25IYXNoTWFueShwYXltYXN0ZXJEYXRhLm1hcChCaWdJbnQpKSxcbiAgICBCaWdJbnQoY2hhaW5JZCksXG4gICAgQmlnSW50KG5vbmNlKSxcbiAgICBkYU1vZGUsXG4gICAgcG9zZWlkb25IYXNoTWFueShhY2NvdW50RGVwbG95bWVudERhdGEubWFwKEJpZ0ludCkpLFxuICAgIHBvc2VpZG9uSGFzaE1hbnkoY29tcGlsZWRDYWxsZGF0YS5tYXAoQmlnSW50KSksXG4gIF07XG5cbiAgaWYgKHByb29mRmFjdHMgJiYgcHJvb2ZGYWN0cy5sZW5ndGggPiAwKSB7XG4gICAgaGFzaEZpZWxkcy5wdXNoKHBvc2VpZG9uSGFzaE1hbnkocHJvb2ZGYWN0cy5tYXAoQmlnSW50KSkpO1xuICB9XG5cbiAgY29uc3QgaGFzaCA9IHBvc2VpZG9uSGFzaE1hbnkoaGFzaEZpZWxkcyk7XG4gIHJldHVybiAnMHgnICsgaGFzaC50b1N0cmluZygxNik7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgUG9zZWlkb24gVjMgREVQTE9ZX0FDQ09VTlQgdHJhbnNhY3Rpb24gaGFzaCBwZXIgU05JUC04IChzdGFya25ldC5qcyB2MykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVEZXBsb3lBY2NvdW50VHJhbnNhY3Rpb25IYXNoKHBhcmFtczogRGVwbG95QWNjb3VudFRyYW5zYWN0aW9uSGFzaFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgY2xhc3NIYXNoLFxuICAgIGNvbnN0cnVjdG9yQ2FsbGRhdGEsXG4gICAgY29udHJhY3RBZGRyZXNzU2FsdCxcbiAgICBjaGFpbklkLFxuICAgIG5vbmNlLFxuICAgIHJlc291cmNlQm91bmRzLFxuICAgIHRpcCA9ICcweDAnLFxuICAgIG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUgPSAwLFxuICAgIGZlZURhdGFBdmFpbGFiaWxpdHlNb2RlID0gMCxcbiAgICBwYXltYXN0ZXJEYXRhID0gW10sXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZmVlRmllbGRIYXNoID0gcG9zZWlkb25IYXNoTWFueShbXG4gICAgQmlnSW50KHRpcCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMV9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwxX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoTDJfR0FTX05BTUUsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfYW1vdW50LCByZXNvdXJjZUJvdW5kcy5sMl9nYXMubWF4X3ByaWNlX3Blcl91bml0KSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKFxuICAgICAgTDFfREFUQV9HQVNfTkFNRSxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9hbW91bnQsXG4gICAgICByZXNvdXJjZUJvdW5kcy5sMV9kYXRhX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXRcbiAgICApLFxuICBdKTtcblxuICBjb25zdCBkYU1vZGUgPSAoQmlnSW50KG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUpIDw8IDMybikgfCBCaWdJbnQoZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGUpO1xuXG4gIGNvbnN0IGhhc2hGaWVsZHM6IGJpZ2ludFtdID0gW1xuICAgIERFUExPWV9BQ0NPVU5UX1RYX1BSRUZJWCxcbiAgICBUUkFOU0FDVElPTl9WRVJTSU9OXzMsXG4gICAgQmlnSW50KGNvbnRyYWN0QWRkcmVzcyksXG4gICAgZmVlRmllbGRIYXNoLFxuICAgIHBvc2VpZG9uSGFzaE1hbnkocGF5bWFzdGVyRGF0YS5tYXAoQmlnSW50KSksXG4gICAgQmlnSW50KGNoYWluSWQpLFxuICAgIEJpZ0ludChub25jZSksXG4gICAgZGFNb2RlLFxuICAgIHBvc2VpZG9uSGFzaE1hbnkoY29uc3RydWN0b3JDYWxsZGF0YS5tYXAoQmlnSW50KSksXG4gICAgQmlnSW50KGNsYXNzSGFzaCksXG4gICAgQmlnSW50KGNvbnRyYWN0QWRkcmVzc1NhbHQpLFxuICBdO1xuXG4gIGNvbnN0IGhhc2ggPSBwb3NlaWRvbkhhc2hNYW55KGhhc2hGaWVsZHMpO1xuICByZXR1cm4gJzB4JyArIGhhc2gudG9TdHJpbmcoMTYpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICBpc1ZhbGlkUHJpdmF0ZUtleSxcbiAgZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5LFxuICBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEsXG4gIGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoLFxuICBjb21wdXRlU3RhcmtuZXRBZGRyZXNzLFxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSxcbiAgbm9ybWFsaXplQWRkcmVzcyxcbiAgZm9ybWF0RXRoQWNjb3VudFNpZ25hdHVyZSxcbiAgcGFyc2VUcmFuc2ZlckNhbGwsXG4gIGdlbmVyYXRlS2V5UGFpcixcbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbixcbiAgZW5jb2RlU2hvcnRTdHJpbmcsXG4gIGdldFNlbGVjdG9yRnJvbU5hbWUsXG4gIGNvbXBpbGVFeGVjdXRlQ2FsbGRhdGEsXG4gIGNhbGN1bGF0ZUludm9rZVRyYW5zYWN0aW9uSGFzaCxcbiAgY2FsY3VsYXRlRGVwbG95QWNjb3VudFRyYW5zYWN0aW9uSGFzaCxcbn07XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ import { Transaction } from './transaction';
4
+ import { StarknetTransactionType } from './iface';
5
+ /**
6
+ * Builds DEPLOY_ACCOUNT v3 transactions for counterfactual EthAccount activation.
7
+ */
8
+ export declare class WalletInitializationBuilder extends TransactionBuilder {
9
+ protected _classHash: string;
10
+ protected _constructorCalldata?: string[];
11
+ protected _contractAddressSalt?: string;
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ protected get transactionType(): StarknetTransactionType;
14
+ /**
15
+ * Set deploy parameters from a secp256k1 public key (compressed or uncompressed).
16
+ * Derives counterfactual address, constructor calldata, and salt.
17
+ */
18
+ fromPublicKey(pubKey: string): this;
19
+ classHash(classHash: string): this;
20
+ /** @inheritdoc */
21
+ initBuilder(tx: Transaction): void;
22
+ /** @inheritdoc */
23
+ protected buildImplementation(): Promise<Transaction>;
24
+ private ensureDeployFields;
25
+ }
26
+ //# sourceMappingURL=walletInitializationBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/walletInitializationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA2B,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAI3E;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,SAAS,CAAC,UAAU,EAAE,MAAM,CAA6B;IACzD,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,uBAAuB,CAEvD;IAED;;;OAGG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWnC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAsC3D,OAAO,CAAC,kBAAkB;CA4B3B"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WalletInitializationBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const iface_1 = require("./iface");
10
+ const constants_1 = require("./constants");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ /**
13
+ * Builds DEPLOY_ACCOUNT v3 transactions for counterfactual EthAccount activation.
14
+ */
15
+ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ this._classHash = constants_1.OZ_ETH_ACCOUNT_CLASS_HASH;
19
+ }
20
+ get transactionType() {
21
+ return iface_1.StarknetTransactionType.DEPLOY_ACCOUNT;
22
+ }
23
+ /**
24
+ * Set deploy parameters from a secp256k1 public key (compressed or uncompressed).
25
+ * Derives counterfactual address, constructor calldata, and salt.
26
+ */
27
+ fromPublicKey(pubKey) {
28
+ if (!utils_1.default.isValidPublicKey(pubKey)) {
29
+ throw new sdk_core_1.BuildTransactionError('Invalid pubKey, got: ' + pubKey);
30
+ }
31
+ const fullPublicKey = utils_1.default.getUncompressedPublicKey(pubKey);
32
+ const { address, constructorCalldata, salt } = utils_1.default.computeStarknetAddress(fullPublicKey);
33
+ this._constructorCalldata = constructorCalldata;
34
+ this._contractAddressSalt = salt;
35
+ return this.sender(address, pubKey);
36
+ }
37
+ classHash(classHash) {
38
+ if (!classHash || !utils_1.default.isValidAddress(classHash)) {
39
+ throw new sdk_core_1.BuildTransactionError('Invalid class hash, got: ' + classHash);
40
+ }
41
+ this._classHash = classHash;
42
+ return this;
43
+ }
44
+ /** @inheritdoc */
45
+ initBuilder(tx) {
46
+ super.initBuilder(tx);
47
+ const data = tx.starknetTransactionData;
48
+ if (data.classHash) {
49
+ this._classHash = data.classHash;
50
+ }
51
+ if (data.constructorCalldata) {
52
+ this._constructorCalldata = data.constructorCalldata;
53
+ }
54
+ if (data.contractAddressSalt) {
55
+ this._contractAddressSalt = data.contractAddressSalt;
56
+ }
57
+ }
58
+ /** @inheritdoc */
59
+ async buildImplementation() {
60
+ this.ensureDeployFields();
61
+ const contractAddress = this._sender;
62
+ const chainId = this._chainId;
63
+ const nonce = this._nonce;
64
+ const constructorCalldata = this._constructorCalldata;
65
+ const contractAddressSalt = this._contractAddressSalt;
66
+ const transactionHash = utils_1.default.calculateDeployAccountTransactionHash({
67
+ contractAddress,
68
+ classHash: this._classHash,
69
+ constructorCalldata,
70
+ contractAddressSalt,
71
+ chainId,
72
+ nonce,
73
+ resourceBounds: this._resourceBounds,
74
+ tip: this._tip,
75
+ });
76
+ const data = {
77
+ senderAddress: contractAddress,
78
+ calls: [],
79
+ nonce,
80
+ chainId,
81
+ transactionType: iface_1.StarknetTransactionType.DEPLOY_ACCOUNT,
82
+ resourceBounds: this._resourceBounds,
83
+ tip: this._tip,
84
+ transactionHash,
85
+ classHash: this._classHash,
86
+ constructorCalldata,
87
+ contractAddressSalt,
88
+ };
89
+ this._transaction.starknetTransactionData = data;
90
+ return this._transaction;
91
+ }
92
+ ensureDeployFields() {
93
+ if (!this._sender) {
94
+ throw new sdk_core_1.BuildTransactionError('Sender (counterfactual address) is required');
95
+ }
96
+ if (this._publicKey && (!this._constructorCalldata || !this._contractAddressSalt)) {
97
+ this.fromPublicKey(this._publicKey);
98
+ }
99
+ if (!this._constructorCalldata || !this._contractAddressSalt) {
100
+ throw new sdk_core_1.BuildTransactionError('Deploy account requires public key (fromPublicKey) or explicit constructor calldata and salt');
101
+ }
102
+ const fullPublicKey = this._publicKey ? utils_1.default.getUncompressedPublicKey(this._publicKey) : undefined;
103
+ if (fullPublicKey) {
104
+ const derived = utils_1.default.computeStarknetAddress(fullPublicKey);
105
+ if (utils_1.default.normalizeAddress(derived.address) !== utils_1.default.normalizeAddress(this._sender)) {
106
+ throw new sdk_core_1.BuildTransactionError(`Address does not match public key. Expected ${derived.address}, got ${this._sender}`);
107
+ }
108
+ if (derived.constructorCalldata.join(',') !== this._constructorCalldata.join(',') ||
109
+ derived.salt !== this._contractAddressSalt) {
110
+ throw new sdk_core_1.BuildTransactionError('Constructor calldata or salt does not match public key');
111
+ }
112
+ }
113
+ }
114
+ }
115
+ exports.WalletInitializationBuilder = WalletInitializationBuilder;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXdEO0FBRXhELDZEQUEwRDtBQUUxRCxtQ0FBMkU7QUFDM0UsMkNBQXdEO0FBQ3hELG9EQUE0QjtBQUU1Qjs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsdUNBQWtCO0lBS2pFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTFgsZUFBVSxHQUFXLHFDQUF5QixDQUFDO0lBTXpELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywrQkFBdUIsQ0FBQyxjQUFjLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxHQUFHLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxTQUFTLENBQUMsU0FBaUI7UUFDaEMsSUFBSSxDQUFDLFNBQVMs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RkFBOEYsQ0FDL0YsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUQsSUFBSSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckYsTUFBTSxJQUFJLGdDQUFxQixDQUM3QiwrQ0FBK0MsT0FBTyxDQUFDLE9BQU8sU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQ3RGLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFDRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUM3RSxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFDMUMsQ0FBQztnQkFDRCxNQUFNLElBQUksZ0NBQXFCLENBQUMsd0RBQXdELENBQUMsQ0FBQztZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRIRCxrRUFzSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSwgU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0ggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQnVpbGRzIERFUExPWV9BQ0NPVU5UIHYzIHRyYW5zYWN0aW9ucyBmb3IgY291bnRlcmZhY3R1YWwgRXRoQWNjb3VudCBhY3RpdmF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9jbGFzc0hhc2g6IHN0cmluZyA9IE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0g7XG4gIHByb3RlY3RlZCBfY29uc3RydWN0b3JDYWxsZGF0YT86IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0QWRkcmVzc1NhbHQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5ERVBMT1lfQUNDT1VOVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGVwbG95IHBhcmFtZXRlcnMgZnJvbSBhIHNlY3AyNTZrMSBwdWJsaWMga2V5IChjb21wcmVzc2VkIG9yIHVuY29tcHJlc3NlZCkuXG4gICAqIERlcml2ZXMgY291bnRlcmZhY3R1YWwgYWRkcmVzcywgY29uc3RydWN0b3IgY2FsbGRhdGEsIGFuZCBzYWx0LlxuICAgKi9cbiAgcHVibGljIGZyb21QdWJsaWNLZXkocHViS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJLZXksIGdvdDogJyArIHB1YktleSk7XG4gICAgfVxuICAgIGNvbnN0IGZ1bGxQdWJsaWNLZXkgPSB1dGlscy5nZXRVbmNvbXByZXNzZWRQdWJsaWNLZXkocHViS2V5KTtcbiAgICBjb25zdCB7IGFkZHJlc3MsIGNvbnN0cnVjdG9yQ2FsbGRhdGEsIHNhbHQgfSA9IHV0aWxzLmNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleSk7XG4gICAgdGhpcy5fY29uc3RydWN0b3JDYWxsZGF0YSA9IGNvbnN0cnVjdG9yQ2FsbGRhdGE7XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzU2FsdCA9IHNhbHQ7XG4gICAgcmV0dXJuIHRoaXMuc2VuZGVyKGFkZHJlc3MsIHB1YktleSk7XG4gIH1cblxuICBwdWJsaWMgY2xhc3NIYXNoKGNsYXNzSGFzaDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFjbGFzc0hhc2ggfHwgIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGNsYXNzSGFzaCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgY2xhc3MgaGFzaCwgZ290OiAnICsgY2xhc3NIYXNoKTtcbiAgICB9XG4gICAgdGhpcy5fY2xhc3NIYXNoID0gY2xhc3NIYXNoO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBkYXRhID0gdHguc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGE7XG4gICAgaWYgKGRhdGEuY2xhc3NIYXNoKSB7XG4gICAgICB0aGlzLl9jbGFzc0hhc2ggPSBkYXRhLmNsYXNzSGFzaDtcbiAgICB9XG4gICAgaWYgKGRhdGEuY29uc3RydWN0b3JDYWxsZGF0YSkge1xuICAgICAgdGhpcy5fY29uc3RydWN0b3JDYWxsZGF0YSA9IGRhdGEuY29uc3RydWN0b3JDYWxsZGF0YTtcbiAgICB9XG4gICAgaWYgKGRhdGEuY29udHJhY3RBZGRyZXNzU2FsdCkge1xuICAgICAgdGhpcy5fY29udHJhY3RBZGRyZXNzU2FsdCA9IGRhdGEuY29udHJhY3RBZGRyZXNzU2FsdDtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuZW5zdXJlRGVwbG95RmllbGRzKCk7XG5cbiAgICBjb25zdCBjb250cmFjdEFkZHJlc3MgPSB0aGlzLl9zZW5kZXIgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGNoYWluSWQgPSB0aGlzLl9jaGFpbklkIGFzIHN0cmluZztcbiAgICBjb25zdCBub25jZSA9IHRoaXMuX25vbmNlIGFzIHN0cmluZztcbiAgICBjb25zdCBjb25zdHJ1Y3RvckNhbGxkYXRhID0gdGhpcy5fY29uc3RydWN0b3JDYWxsZGF0YSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBjb250cmFjdEFkZHJlc3NTYWx0ID0gdGhpcy5fY29udHJhY3RBZGRyZXNzU2FsdCBhcyBzdHJpbmc7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbkhhc2ggPSB1dGlscy5jYWxjdWxhdGVEZXBsb3lBY2NvdW50VHJhbnNhY3Rpb25IYXNoKHtcbiAgICAgIGNvbnRyYWN0QWRkcmVzcyxcbiAgICAgIGNsYXNzSGFzaDogdGhpcy5fY2xhc3NIYXNoLFxuICAgICAgY29uc3RydWN0b3JDYWxsZGF0YSxcbiAgICAgIGNvbnRyYWN0QWRkcmVzc1NhbHQsXG4gICAgICBjaGFpbklkLFxuICAgICAgbm9uY2UsXG4gICAgICByZXNvdXJjZUJvdW5kczogdGhpcy5fcmVzb3VyY2VCb3VuZHMsXG4gICAgICB0aXA6IHRoaXMuX3RpcCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGE6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgc2VuZGVyQWRkcmVzczogY29udHJhY3RBZGRyZXNzLFxuICAgICAgY2FsbHM6IFtdLFxuICAgICAgbm9uY2UsXG4gICAgICBjaGFpbklkLFxuICAgICAgdHJhbnNhY3Rpb25UeXBlOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5ERVBMT1lfQUNDT1VOVCxcbiAgICAgIHJlc291cmNlQm91bmRzOiB0aGlzLl9yZXNvdXJjZUJvdW5kcyxcbiAgICAgIHRpcDogdGhpcy5fdGlwLFxuICAgICAgdHJhbnNhY3Rpb25IYXNoLFxuICAgICAgY2xhc3NIYXNoOiB0aGlzLl9jbGFzc0hhc2gsXG4gICAgICBjb25zdHJ1Y3RvckNhbGxkYXRhLFxuICAgICAgY29udHJhY3RBZGRyZXNzU2FsdCxcbiAgICB9O1xuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlRGVwbG95RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc2VuZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTZW5kZXIgKGNvdW50ZXJmYWN0dWFsIGFkZHJlc3MpIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9wdWJsaWNLZXkgJiYgKCF0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhIHx8ICF0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0KSkge1xuICAgICAgdGhpcy5mcm9tUHVibGljS2V5KHRoaXMuX3B1YmxpY0tleSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fY29uc3RydWN0b3JDYWxsZGF0YSB8fCAhdGhpcy5fY29udHJhY3RBZGRyZXNzU2FsdCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgJ0RlcGxveSBhY2NvdW50IHJlcXVpcmVzIHB1YmxpYyBrZXkgKGZyb21QdWJsaWNLZXkpIG9yIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGNhbGxkYXRhIGFuZCBzYWx0J1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZnVsbFB1YmxpY0tleSA9IHRoaXMuX3B1YmxpY0tleSA/IHV0aWxzLmdldFVuY29tcHJlc3NlZFB1YmxpY0tleSh0aGlzLl9wdWJsaWNLZXkpIDogdW5kZWZpbmVkO1xuICAgIGlmIChmdWxsUHVibGljS2V5KSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gdXRpbHMuY29tcHV0ZVN0YXJrbmV0QWRkcmVzcyhmdWxsUHVibGljS2V5KTtcbiAgICAgIGlmICh1dGlscy5ub3JtYWxpemVBZGRyZXNzKGRlcml2ZWQuYWRkcmVzcykgIT09IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3ModGhpcy5fc2VuZGVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgIGBBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHB1YmxpYyBrZXkuIEV4cGVjdGVkICR7ZGVyaXZlZC5hZGRyZXNzfSwgZ290ICR7dGhpcy5fc2VuZGVyfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGVyaXZlZC5jb25zdHJ1Y3RvckNhbGxkYXRhLmpvaW4oJywnKSAhPT0gdGhpcy5fY29uc3RydWN0b3JDYWxsZGF0YS5qb2luKCcsJykgfHxcbiAgICAgICAgZGVyaXZlZC5zYWx0ICE9PSB0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0XG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ29uc3RydWN0b3IgY2FsbGRhdGEgb3Igc2FsdCBkb2VzIG5vdCBtYXRjaCBwdWJsaWMga2V5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -25,6 +25,8 @@ export declare class Starknet extends BaseCoin {
25
25
  /** inherited doc */
26
26
  getDefaultMultisigType(): MultisigType;
27
27
  /** @inheritDoc */
28
+ requiresWalletInitializationTransaction(): boolean;
29
+ /** @inheritDoc */
28
30
  getMPCAlgorithm(): MPCAlgorithm;
29
31
  /** @inheritDoc **/
30
32
  getHashFunction(): Hash;
@@ -1 +1 @@
1
- {"version":3,"file":"starknet.d.ts","sourceRoot":"","sources":["../../src/starknet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EAET,OAAO,EAEP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EAGzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAS,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAKpH,qBAAa,QAAS,SAAQ,QAAQ;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;IAIjB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAOzF,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BrE,eAAe,CAAC,MAAM,EAAE,+BAA+B,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB1E,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5E,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAI9C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlC,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIlF,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B,mBAAmB;IACnB,eAAe,IAAI,IAAI;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;CAMnF"}
1
+ {"version":3,"file":"starknet.d.ts","sourceRoot":"","sources":["../../src/starknet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EAET,OAAO,EAEP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EAGzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAS,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAKpH,qBAAa,QAAS,SAAQ,QAAQ;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;IAIjB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAOzF,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmCrE,eAAe,CAAC,MAAM,EAAE,+BAA+B,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB1E,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5E,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAI9C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlC,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIlF,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,kBAAkB;IAClB,uCAAuC,IAAI,OAAO;IAIlD,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B,mBAAmB;IACnB,eAAe,IAAI,IAAI;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;CAMnF"}
@@ -45,8 +45,11 @@ class Starknet extends sdk_core_1.BaseCoin {
45
45
  async verifyTransaction(params) {
46
46
  const { txParams, txPrebuild } = params;
47
47
  const txHex = txPrebuild?.txHex;
48
- if (!txHex) {
49
- throw new Error('txHex is required');
48
+ // 0x-prefixed txHex means this is the Starknet transaction hash (signableHex), not the
49
+ // full serialized transaction. Recipient verification already happened in prebuildAndSignTransaction
50
+ // using serializedTxHex — nothing to verify from a hash alone.
51
+ if (!txHex || txHex.startsWith('0x')) {
52
+ return true;
50
53
  }
51
54
  const explainedTx = await this.explainTransaction({ transactionHex: txHex });
52
55
  if (Array.isArray(txParams.recipients) && txParams.recipients.length > 0) {
@@ -105,6 +108,10 @@ class Starknet extends sdk_core_1.BaseCoin {
105
108
  return sdk_core_1.multisigTypes.tss;
106
109
  }
107
110
  /** @inheritDoc */
111
+ requiresWalletInitializationTransaction() {
112
+ return true;
113
+ }
114
+ /** @inheritDoc */
108
115
  getMPCAlgorithm() {
109
116
  return 'ecdsa';
110
117
  }
@@ -124,4 +131,4 @@ class Starknet extends sdk_core_1.BaseCoin {
124
131
  }
125
132
  }
126
133
  exports.Starknet = Starknet;
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBaUJ5QjtBQUN6Qiw0Q0FBb0U7QUFDcEUsbUNBQTBDO0FBRzFDLCtFQUE0RTtBQUM1RSx3REFBZ0M7QUFDaEMsb0RBQTBEO0FBRTFELE1BQWEsUUFBUyxTQUFRLG1CQUFRO0lBRXBDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUE0QjtRQUNuRCxNQUFNLE9B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QUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBQSxrQ0FBb0IsRUFBQyxHQUFhLEVBQUUsU0FBbUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQXRKRCw0QkFzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvbkhleFBhcmFtcywgVHNzVmVyaWZ5U3RhcmtuZXRBZGRyZXNzT3B0aW9ucyB9IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhdWRpdEVjZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFya25ldCBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFN0YXJrbmV0KGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IFRyYW5zYWN0aW9uSGV4UGFyYW1zKTogUHJvbWlzZTxTdGFya25ldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyRmFjdG9yeSgpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGF3YWl0IGZhY3RvcnkuZnJvbShwYXJhbXMudHJhbnNhY3Rpb25IZXgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdHhIZXggPSB0eFByZWJ1aWxkPy50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4SGV4IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih7IHRyYW5zYWN0aW9uSGV4OiB0eEhleCB9KTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGhpcy5nZXRDaGFpbigpfSBkb2Vzbid0IHN1cHBvcnQgc2VuZGluZyB0byBtb3JlIHRoYW4gMSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVHJ5IGFnYWluLCB1c2luZyBvbmx5IGEgc2luZ2xlIHJlY2lwaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChleHBsYWluZWRUeC5vdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG91dHB1dCA9IGV4cGxhaW5lZFR4Lm91dHB1dHNbMF07XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0eFBhcmFtcy5yZWNpcGllbnRzWzBdO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE91dHB1dCA9IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3Mob3V0cHV0LmFkZHJlc3MpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFJlY2lwaWVudCA9IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3MocmVjaXBpZW50LmFkZHJlc3MpO1xuICAgICAgaWYgKG5vcm1hbGl6ZWRPdXRwdXQgIT09IG5vcm1hbGl6ZWRSZWNpcGllbnQgfHwgb3V0cHV0LmFtb3VudCAhPT0gcmVjaXBpZW50LmFtb3VudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVHNzVmVyaWZ5U3RhcmtuZXRBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgIHsgLi4ucGFyYW1zLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIHRoaXMuaXNWYWxpZEFkZHJlc3MuYmluZCh0aGlzKSxcbiAgICAgIChwdWJLZXkpID0+IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleSlcbiAgICApO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogYWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHdhbGxldCBhZGRyZXNzYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIHV0aWxzLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8vIFN0YXJrbmV0IGlzIFRTUy1vbmx5OyBzaWduaW5nIGlzIGhhbmRsZWQgYnkgdGhyZXNob2xkIEVDRFNBIGluIHdhbGxldC1wbGF0Zm9ybS9PVkMuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihfcGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCdzaWduVHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGlzVmFsaWRQdWIoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgaXNWYWxpZFBydihrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLnRzcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0SGFzaEZ1bmN0aW9uKCk6IEhhc2gge1xuICAgIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlckZhY3RvcnkoKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXVkaXREZWNyeXB0ZWRLZXkoeyBtdWx0aVNpZ1R5cGUsIHBydiwgcHVibGljS2V5IH06IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKG11bHRpU2lnVHlwZSAhPT0gJ3RzcycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbXVsdGlzaWd0eXBlJyk7XG4gICAgfVxuICAgIGF1ZGl0RWNkc2FQcml2YXRlS2V5KHBydiBhcyBzdHJpbmcsIHB1YmxpY0tleSBhcyBzdHJpbmcpO1xuICB9XG59XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBaUJ5QjtBQUN6Qiw0Q0FBb0U7QUFDcEUsbUNBQTBDO0FBRzFDLCtFQUE0RTtBQUM1RSx3REFBZ0M7QUFDaEMsb0RBQTBEO0FBRTFELE1BQWEsUUFBUyxTQUFRLG1CQUFRO0lBRXBDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUE0QjtRQUNuRCxNQUFNLE9B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QVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQTJCO1FBQ3pFLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBQSxrQ0FBb0IsRUFBQyxHQUFhLEVBQUUsU0FBbUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQS9KRCw0QkErSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvbkhleFBhcmFtcywgVHNzVmVyaWZ5U3RhcmtuZXRBZGRyZXNzT3B0aW9ucyB9IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhdWRpdEVjZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFya25ldCBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFN0YXJrbmV0KGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IFRyYW5zYWN0aW9uSGV4UGFyYW1zKTogUHJvbWlzZTxTdGFya25ldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyRmFjdG9yeSgpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGF3YWl0IGZhY3RvcnkuZnJvbShwYXJhbXMudHJhbnNhY3Rpb25IZXgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdHhIZXggPSB0eFByZWJ1aWxkPy50eEhleDtcblxuICAgIC8vIDB4LXByZWZpeGVkIHR4SGV4IG1lYW5zIHRoaXMgaXMgdGhlIFN0YXJrbmV0IHRyYW5zYWN0aW9uIGhhc2ggKHNpZ25hYmxlSGV4KSwgbm90IHRoZVxuICAgIC8vIGZ1bGwgc2VyaWFsaXplZCB0cmFuc2FjdGlvbi4gUmVjaXBpZW50IHZlcmlmaWNhdGlvbiBhbHJlYWR5IGhhcHBlbmVkIGluIHByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uXG4gICAgLy8gdXNpbmcgc2VyaWFsaXplZFR4SGV4IOKAlCBub3RoaW5nIHRvIHZlcmlmeSBmcm9tIGEgaGFzaCBhbG9uZS5cbiAgICBpZiAoIXR4SGV4IHx8IHR4SGV4LnN0YXJ0c1dpdGgoJzB4JykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0cmFuc2FjdGlvbkhleDogdHhIZXggfSk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eFBhcmFtcy5yZWNpcGllbnRzKSAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3RoaXMuZ2V0Q2hhaW4oKX0gZG9lc24ndCBzdXBwb3J0IHNlbmRpbmcgdG8gbW9yZSB0aGFuIDEgZGVzdGluYXRpb24gYWRkcmVzcyB3aXRoaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uIFRyeSBhZ2FpbiwgdXNpbmcgb25seSBhIHNpbmdsZSByZWNpcGllbnQuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXhwbGFpbmVkVHgub3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRwdXQgPSBleHBsYWluZWRUeC5vdXRwdXRzWzBdO1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdHhQYXJhbXMucmVjaXBpZW50c1swXTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPdXRwdXQgPSB1dGlscy5ub3JtYWxpemVBZGRyZXNzKG91dHB1dC5hZGRyZXNzKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWNpcGllbnQgPSB1dGlscy5ub3JtYWxpemVBZGRyZXNzKHJlY2lwaWVudC5hZGRyZXNzKTtcbiAgICAgIGlmIChub3JtYWxpemVkT3V0cHV0ICE9PSBub3JtYWxpemVkUmVjaXBpZW50IHx8IG91dHB1dC5hbW91bnQgIT09IHJlY2lwaWVudC5hbW91bnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFRzc1ZlcmlmeVN0YXJrbmV0QWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGFkZHJlc3MgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeU1QQ1dhbGxldEFkZHJlc3MoXG4gICAgICB7IC4uLnBhcmFtcywga2V5Q3VydmU6ICdzZWNwMjU2azEnIH0sXG4gICAgICB0aGlzLmlzVmFsaWRBZGRyZXNzLmJpbmQodGhpcyksXG4gICAgICAocHViS2V5KSA9PiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXkpXG4gICAgKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6IGFkZHJlc3MgJHthZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2ApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIHJldHVybiB1dGlscy5nZW5lcmF0ZUtleVBhaXIoc2VlZCk7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvLyBTdGFya25ldCBpcyBUU1Mtb25seTsgc2lnbmluZyBpcyBoYW5kbGVkIGJ5IHRocmVzaG9sZCBFQ0RTQSBpbiB3YWxsZXQtcGxhdGZvcm0vT1ZDLlxuICBhc3luYyBzaWduVHJhbnNhY3Rpb24oX3BhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcignc2lnblRyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBpc1ZhbGlkUHViKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRQcnYoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcmVxdWlyZXNXYWxsZXRJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRIYXNoRnVuY3Rpb24oKTogSGFzaCB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyRmFjdG9yeSgpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleSh7IG11bHRpU2lnVHlwZSwgcHJ2LCBwdWJsaWNLZXkgfTogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAobXVsdGlTaWdUeXBlICE9PSAndHNzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBtdWx0aXNpZ3R5cGUnKTtcbiAgICB9XG4gICAgYXVkaXRFY2RzYVByaXZhdGVLZXkocHJ2IGFzIHN0cmluZywgcHVibGljS2V5IGFzIHN0cmluZyk7XG4gIH1cbn1cbiJdfQ==
@@ -122,5 +122,35 @@ describe('Starknet', function () {
122
122
  kp1.pub.should.not.equal(kp2.pub);
123
123
  });
124
124
  });
125
+ describe('verifyTransaction', () => {
126
+ it('should return true when txHex is a 0x-prefixed signableHex (deploy_account, no recipients)', async function () {
127
+ // During TSS ECDSA signing, sdk-core passes signableHex (0x-prefixed transaction hash)
128
+ // as txHex. It cannot be decoded as internal JSON hex, so verification must short-circuit.
129
+ const result = await basecoin.verifyTransaction({
130
+ txParams: { recipients: [] },
131
+ txPrebuild: { txHex: '0xdeadbeefcafe1234567890abcdef' },
132
+ wallet: {},
133
+ });
134
+ result.should.equal(true);
135
+ });
136
+ it('should return true when txHex is a 0x-prefixed signableHex (transfer with recipients)', async function () {
137
+ // Same signing path for transfers — signableHex is 0x-prefixed, full verification
138
+ // is already done in prebuildAndSignTransaction with serializedTxHex.
139
+ const result = await basecoin.verifyTransaction({
140
+ txParams: { recipients: [{ address: '0xabc', amount: '1000' }] },
141
+ txPrebuild: { txHex: '0xdeadbeefcafe1234567890abcdef' },
142
+ wallet: {},
143
+ });
144
+ result.should.equal(true);
145
+ });
146
+ it('should return true when txHex is absent', async function () {
147
+ const result = await basecoin.verifyTransaction({
148
+ txParams: { recipients: [] },
149
+ txPrebuild: {},
150
+ wallet: {},
151
+ });
152
+ result.should.equal(true);
153
+ });
154
+ });
125
155
  });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLDJDQUEyQztBQUMzQyxnRUFBa0Q7QUFDbEQsb0RBQTRCO0FBQzVCLCtDQUE4RDtBQUU5RCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQVEsQ0FBQztJQUViLE1BQU0sQ0FBQyxLQUFLO1FBQ1YsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxnQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7UUFDakMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxD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QztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRTtZQUNsRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgU3RhcmtuZXQgfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3N0YXJrbmV0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGdldEFkZHJlc3NGcm9tUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdTdGFya25ldCcsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgIGJpdGdvLnNhZmVSZWdpc3Rlcignc3RhcmtuZXQnLCBTdGFya25ldC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0c3RhcmtuZXQnLCBTdGFya25ldC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCdzdGFya25ldCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdGFya25ldCA9IGJpdGdvLmNvaW4oJ3N0YXJrbmV0Jyk7XG4gICAgY29uc3QgdHN0YXJrbmV0ID0gYml0Z28uY29pbigndHN0YXJrbmV0Jyk7XG5cbiAgICBzdGFya25ldC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnc3RhcmtuZXQnKTtcbiAgICBzdGFya25ldC5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3N0YXJrbmV0Jyk7XG4gICAgc3RhcmtuZXQuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1N0YXJrbmV0Jyk7XG4gICAgc3RhcmtuZXQuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICBzdGFya25ldC5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcblxuICAgIHRzdGFya25ldC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgndHN0YXJrbmV0Jyk7XG4gICAgdHN0YXJrbmV0LmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnc3RhcmtuZXQnKTtcbiAgICB0c3RhcmtuZXQuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgU3RhcmtuZXQnKTtcbiAgICB0c3RhcmtuZXQuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICB0c3RhcmtuZXQuc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGNvcnJlY3QgU3RhcmtuZXQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBzZWNvbmQgY29ycmVjdCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3ModGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgYW4gb2J2aW91c2x5IGludmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKCdub3RfYW5fYWRkcmVzcycpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBhbiBlbXB0eSBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoJycpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIGRlcml2YXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDMucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQzLmFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUHVibGljIGtleSB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBjb3JyZWN0IHVuY29tcHJlc3NlZCBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1Yih0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoJ2ludmFsaWQtcHVibGljLWtleScpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdNUEMgc3VwcG9ydCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1cHBvcnQgVFNTJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBFQ0RTQSBhcyBNUEMgYWxnb3JpdGhtJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkuc2hvdWxkLmVxdWFsKCdlY2RzYScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5IHBhaXIgZ2VuZXJhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5IHBhaXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpci5wdWIpO1xuICAgICAgc2hvdWxkLmV4aXN0KGtleVBhaXIucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgZGlmZmVyZW50IGtleSBwYWlycyBlYWNoIHRpbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBrcDEgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGNvbnN0IGtwMiA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAga3AxLnB1Yi5zaG91bGQubm90LmVxdWFsKGtwMi5wdWIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLDJDQUEyQztBQUMzQyxnRUFBa0Q7QUFDbEQsb0RBQTRCO0FBQzVCLCtDQUE4RDtBQUU5RCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQVEsQ0FBQztJQUViLE1BQU0sQ0FBQyxLQUFLO1FBQ1YsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxnQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7UUFDakMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxD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QU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUUsS0FBSztZQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDOUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtnQkFDNUIsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLEVBQVM7YUFDbEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBTdGFya25ldCB9IGZyb20gJy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvc3RhcmtuZXQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkgfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ1N0YXJrbmV0JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdzdGFya25ldCcsIFN0YXJrbmV0LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RzdGFya25ldCcsIFN0YXJrbmV0LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3N0YXJrbmV0Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHN0YXJrbmV0ID0gYml0Z28uY29pbignc3RhcmtuZXQnKTtcbiAgICBjb25zdCB0c3RhcmtuZXQgPSBiaXRnby5jb2luKCd0c3RhcmtuZXQnKTtcblxuICAgIHN0YXJrbmV0LmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdzdGFya25ldCcpO1xuICAgIHN0YXJrbmV0LmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnc3RhcmtuZXQnKTtcbiAgICBzdGFya25ldC5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnU3RhcmtuZXQnKTtcbiAgICBzdGFya25ldC5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgIHN0YXJrbmV0LnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuXG4gICAgdHN0YXJrbmV0LmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0c3RhcmtuZXQnKTtcbiAgICB0c3RhcmtuZXQuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdzdGFya25ldCcpO1xuICAgIHRzdGFya25ldC5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnVGVzdG5ldCBTdGFya25ldCcpO1xuICAgIHRzdGFya25ldC5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgIHRzdGFya25ldC5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgY29ycmVjdCBTdGFya25ldCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3ModGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIHNlY29uZCBjb3JyZWN0IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyh0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBhbiBvYnZpb3VzbHkgaW52YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoJ25vdF9hbl9hZGRyZXNzJykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGFuIGVtcHR5IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcygnJykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgZGVyaXZhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGRlcml2ZSBjb3JyZWN0IGFkZHJlc3MgZnJvbSBwdWJsaWMga2V5IGZvciBhY2NvdW50MScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSh0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpO1xuICAgICAgZGVyaXZlZC5zaG91bGQuZXF1YWwodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSBjb3JyZWN0IGFkZHJlc3MgZnJvbSBwdWJsaWMga2V5IGZvciBhY2NvdW50MicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSh0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5wdWJsaWNLZXkpO1xuICAgICAgZGVyaXZlZC5zaG91bGQuZXF1YWwodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSBjb3JyZWN0IGFkZHJlc3MgZnJvbSBwdWJsaWMga2V5IGZvciBhY2NvdW50MycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSh0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50My5wdWJsaWNLZXkpO1xuICAgICAgZGVyaXZlZC5zaG91bGQuZXF1YWwodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDMuYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQdWJsaWMga2V5IHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGNvcnJlY3QgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgYW4gaW52YWxpZCBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YignaW52YWxpZC1wdWJsaWMta2V5Jykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ01QQyBzdXBwb3J0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc3VwcG9ydCBUU1MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIEVDRFNBIGFzIE1QQyBhbGdvcml0aG0nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5nZXRNUENBbGdvcml0aG0oKS5zaG91bGQuZXF1YWwoJ2VjZHNhJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXkgcGFpciBnZW5lcmF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXkgcGFpcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlQYWlyLnB1Yik7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpci5wcnYpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBkaWZmZXJlbnQga2V5IHBhaXJzIGVhY2ggdGltZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGtwMSA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAgY29uc3Qga3AyID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBrcDEucHViLnNob3VsZC5ub3QuZXF1YWwoa3AyLnB1Yik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2ZXJpZnlUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdHhIZXggaXMgYSAweC1wcmVmaXhlZCBzaWduYWJsZUhleCAoZGVwbG95X2FjY291bnQsIG5vIHJlY2lwaWVudHMpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gRHVyaW5nIFRTUyBFQ0RTQSBzaWduaW5nLCBzZGstY29yZSBwYXNzZXMgc2lnbmFibGVIZXggKDB4LXByZWZpeGVkIHRyYW5zYWN0aW9uIGhhc2gpXG4gICAgICAvLyBhcyB0eEhleC4gSXQgY2Fubm90IGJlIGRlY29kZWQgYXMgaW50ZXJuYWwgSlNPTiBoZXgsIHNvIHZlcmlmaWNhdGlvbiBtdXN0IHNob3J0LWNpcmN1aXQuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6ICcweGRlYWRiZWVmY2FmZTEyMzQ1Njc4OTBhYmNkZWYnIH0sXG4gICAgICAgIHdhbGxldDoge30gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHR4SGV4IGlzIGEgMHgtcHJlZml4ZWQgc2lnbmFibGVIZXggKHRyYW5zZmVyIHdpdGggcmVjaXBpZW50cyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTYW1lIHNpZ25pbmcgcGF0aCBmb3IgdHJhbnNmZXJzIOKAlCBzaWduYWJsZUhleCBpcyAweC1wcmVmaXhlZCwgZnVsbCB2ZXJpZmljYXRpb25cbiAgICAgIC8vIGlzIGFscmVhZHkgZG9uZSBpbiBwcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbiB3aXRoIHNlcmlhbGl6ZWRUeEhleC5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4YWJjJywgYW1vdW50OiAnMTAwMCcgfV0gfSxcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogJzB4ZGVhZGJlZWZjYWZlMTIzNDU2Nzg5MGFiY2RlZicgfSxcbiAgICAgICAgd2FsbGV0OiB7fSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdHhIZXggaXMgYWJzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgd2FsbGV0OiB7fSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":"AAQA,OAAO,QAAQ,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":"AAWA,OAAO,QAAQ,CAAC"}