@bitgo-beta/sdk-coin-trx 1.0.2-beta.95 → 1.0.2-beta.950

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +837 -0
  2. package/dist/src/index.d.ts +1 -0
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +7 -2
  5. package/dist/src/lib/contractCallBuilder.js +11 -11
  6. package/dist/src/lib/enum.js +3 -3
  7. package/dist/src/lib/iface.d.ts +11 -0
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +2 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +25 -9
  13. package/dist/src/lib/keyPair.d.ts +0 -1
  14. package/dist/src/lib/keyPair.d.ts.map +1 -1
  15. package/dist/src/lib/keyPair.js +28 -15
  16. package/dist/src/lib/tokenTransferBuilder.d.ts +23 -0
  17. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/tokenTransferBuilder.js +42 -0
  19. package/dist/src/lib/transaction.d.ts.map +1 -1
  20. package/dist/src/lib/transaction.js +26 -5
  21. package/dist/src/lib/transactionBuilder.js +28 -14
  22. package/dist/src/lib/utils.d.ts +19 -3
  23. package/dist/src/lib/utils.d.ts.map +1 -1
  24. package/dist/src/lib/utils.js +105 -34
  25. package/dist/src/lib/wrappedBuilder.d.ts +2 -0
  26. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
  27. package/dist/src/lib/wrappedBuilder.js +6 -2
  28. package/dist/src/register.d.ts +3 -0
  29. package/dist/src/register.d.ts.map +1 -0
  30. package/dist/src/register.js +15 -0
  31. package/dist/src/trx.d.ts +90 -14
  32. package/dist/src/trx.d.ts.map +1 -1
  33. package/dist/src/trx.js +376 -71
  34. package/dist/src/trxToken.d.ts +8 -1
  35. package/dist/src/trxToken.d.ts.map +1 -1
  36. package/dist/src/trxToken.js +23 -1
  37. package/package.json +16 -14
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,45 +15,86 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
21
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
22
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
37
  };
24
38
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.toHex = exports.isValidRawTransactionFormat = exports.isValidTxJsonString = exports.decodeAccountPermissionUpdateContract = exports.decodeTriggerSmartContract = exports.decodeTransferContract = exports.isValidHex = exports.decodeRawTransaction = exports.decodeTransaction = exports.getRawAddressFromPubKey = exports.signString = exports.signTransaction = exports.getBase58AddressFromHex = exports.getBase58AddressFromByteArray = exports.getAddressFromPriKey = exports.getPubKeyFromPriKey = exports.getHexAddressFromBase58Address = exports.verifySignature = exports.getHexAddressFromByteArray = exports.getByteArrayFromHexAddress = exports.isBase58Address = void 0;
39
+ exports.tokenTestnetContractAddresses = exports.tokenMainnetContractAddresses = void 0;
40
+ exports.isBase58Address = isBase58Address;
41
+ exports.getByteArrayFromHexAddress = getByteArrayFromHexAddress;
42
+ exports.getHexAddressFromByteArray = getHexAddressFromByteArray;
43
+ exports.verifySignature = verifySignature;
44
+ exports.getHexAddressFromBase58Address = getHexAddressFromBase58Address;
45
+ exports.getPubKeyFromPriKey = getPubKeyFromPriKey;
46
+ exports.getAddressFromPriKey = getAddressFromPriKey;
47
+ exports.getBase58AddressFromByteArray = getBase58AddressFromByteArray;
48
+ exports.getBase58AddressFromHex = getBase58AddressFromHex;
49
+ exports.signTransaction = signTransaction;
50
+ exports.signString = signString;
51
+ exports.getRawAddressFromPubKey = getRawAddressFromPubKey;
52
+ exports.decodeTransaction = decodeTransaction;
53
+ exports.decodeRawTransaction = decodeRawTransaction;
54
+ exports.isValidHex = isValidHex;
55
+ exports.decodeTransferContract = decodeTransferContract;
56
+ exports.decodeTriggerSmartContract = decodeTriggerSmartContract;
57
+ exports.decodeAccountPermissionUpdateContract = decodeAccountPermissionUpdateContract;
58
+ exports.isValidTxJsonString = isValidTxJsonString;
59
+ exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
60
+ exports.toHex = toHex;
61
+ exports.encodeDataParams = encodeDataParams;
62
+ exports.decodeDataParams = decodeDataParams;
26
63
  const assert_1 = __importDefault(require("assert"));
27
64
  const hex = __importStar(require("@stablelib/hex"));
28
65
  const tronweb = __importStar(require("tronweb"));
29
66
  const tron_1 = require("../../resources/protobuf/tron");
30
67
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
68
+ const statics_1 = require("@bitgo-beta/statics");
31
69
  const enum_1 = require("./enum");
70
+ const utils_1 = require("ethers/lib/utils");
71
+ const ADDRESS_PREFIX_REGEX = /^(41)/;
72
+ const ADDRESS_PREFIX = '41';
73
+ const getTronTokens = (network = 'mainnet') => {
74
+ return statics_1.coins
75
+ .filter((coin) => coin.family === 'trx')
76
+ .filter((trx) => trx.network.type === network && trx.isToken).map((coins) => coins.contractAddress.toString());
77
+ };
78
+ exports.tokenMainnetContractAddresses = getTronTokens('mainnet');
79
+ exports.tokenTestnetContractAddresses = getTronTokens('testnet');
32
80
  /**
33
81
  * @param address
34
82
  */
35
83
  function isBase58Address(address) {
36
84
  return tronweb.utils.crypto.isAddressValid(address);
37
85
  }
38
- exports.isBase58Address = isBase58Address;
39
86
  /**
40
87
  * @param str
41
88
  */
42
89
  function getByteArrayFromHexAddress(str) {
43
90
  return tronweb.utils.code.hexStr2byteArray(str.replace('0x', ''));
44
91
  }
45
- exports.getByteArrayFromHexAddress = getByteArrayFromHexAddress;
46
92
  /**
47
93
  * @param arr
48
94
  */
49
95
  function getHexAddressFromByteArray(arr) {
50
96
  return tronweb.utils.code.byteArray2hexStr(arr);
51
97
  }
52
- exports.getHexAddressFromByteArray = getHexAddressFromByteArray;
53
98
  /**
54
99
  * @param messageToVerify
55
100
  * @param base58Address
@@ -68,7 +113,6 @@ function verifySignature(messageToVerify, base58Address, sigHex, useTronHeader =
68
113
  }
69
114
  return tronweb.Trx.verifySignature(messageToVerify, base58Address, sigHex, useTronHeader);
70
115
  }
71
- exports.verifySignature = verifySignature;
72
116
  /**
73
117
  * @param base58
74
118
  */
@@ -78,28 +122,24 @@ function getHexAddressFromBase58Address(base58) {
78
122
  const bytes = tronweb.utils.crypto.decodeBase58Address(base58);
79
123
  return getHexAddressFromByteArray(bytes);
80
124
  }
81
- exports.getHexAddressFromBase58Address = getHexAddressFromBase58Address;
82
125
  /**
83
126
  * @param privateKey
84
127
  */
85
128
  function getPubKeyFromPriKey(privateKey) {
86
129
  return tronweb.utils.crypto.getPubKeyFromPriKey(privateKey);
87
130
  }
88
- exports.getPubKeyFromPriKey = getPubKeyFromPriKey;
89
131
  /**
90
132
  * @param privateKey
91
133
  */
92
134
  function getAddressFromPriKey(privateKey) {
93
135
  return tronweb.utils.crypto.getAddressFromPriKey(privateKey);
94
136
  }
95
- exports.getAddressFromPriKey = getAddressFromPriKey;
96
137
  /**
97
138
  * @param address
98
139
  */
99
140
  function getBase58AddressFromByteArray(address) {
100
141
  return tronweb.utils.crypto.getBase58CheckAddress(address);
101
142
  }
102
- exports.getBase58AddressFromByteArray = getBase58AddressFromByteArray;
103
143
  /**
104
144
  * @param hex
105
145
  */
@@ -107,7 +147,6 @@ function getBase58AddressFromHex(hex) {
107
147
  const arr = getByteArrayFromHexAddress(hex);
108
148
  return getBase58AddressFromByteArray(arr);
109
149
  }
110
- exports.getBase58AddressFromHex = getBase58AddressFromHex;
111
150
  /**
112
151
  * @param privateKey
113
152
  * @param transaction
@@ -115,7 +154,6 @@ exports.getBase58AddressFromHex = getBase58AddressFromHex;
115
154
  function signTransaction(privateKey, transaction) {
116
155
  return tronweb.utils.crypto.signTransaction(privateKey, transaction);
117
156
  }
118
- exports.signTransaction = signTransaction;
119
157
  /**
120
158
  * @param message
121
159
  * @param privateKey
@@ -124,14 +162,12 @@ exports.signTransaction = signTransaction;
124
162
  function signString(message, privateKey, useTronHeader = true) {
125
163
  return tronweb.Trx.signString(message, privateKey, useTronHeader);
126
164
  }
127
- exports.signString = signString;
128
165
  /**
129
166
  * @param pubBytes
130
167
  */
131
168
  function getRawAddressFromPubKey(pubBytes) {
132
169
  return tronweb.utils.crypto.computeAddress(pubBytes);
133
170
  }
134
- exports.getRawAddressFromPubKey = getRawAddressFromPubKey;
135
171
  /**
136
172
  * Decodes a hex encoded transaction in its protobuf representation.
137
173
  *
@@ -172,7 +208,6 @@ function decodeTransaction(hexString) {
172
208
  fee_limit: +rawTransaction.feeLimit,
173
209
  };
174
210
  }
175
- exports.decodeTransaction = decodeTransaction;
176
211
  /**
177
212
  * Decodes a transaction's raw field from a base64 encoded string. This is a protobuf representation.
178
213
  *
@@ -199,7 +234,6 @@ function decodeRawTransaction(hexString) {
199
234
  blockHash: toHex(raw.refBlockHash),
200
235
  };
201
236
  }
202
- exports.decodeRawTransaction = decodeRawTransaction;
203
237
  /**
204
238
  * Indicates whether the passed string is a safe hex string for tron's purposes.
205
239
  *
@@ -208,7 +242,6 @@ exports.decodeRawTransaction = decodeRawTransaction;
208
242
  function isValidHex(hex) {
209
243
  return /^(0x)?([0-9a-f]{2})+$/i.test(hex);
210
244
  }
211
- exports.isValidHex = isValidHex;
212
245
  /** Deserialize the segment of the txHex which corresponds with the details of the transfer
213
246
  *
214
247
  * @param transferHex is the value property of the "parameter" field of contractList[0]
@@ -247,7 +280,6 @@ function decodeTransferContract(transferHex) {
247
280
  },
248
281
  ];
249
282
  }
250
- exports.decodeTransferContract = decodeTransferContract;
251
283
  /**
252
284
  * Deserialize the segment of the txHex corresponding with trigger smart contract
253
285
  *
@@ -287,7 +319,6 @@ function decodeTriggerSmartContract(base64) {
287
319
  },
288
320
  ];
289
321
  }
290
- exports.decodeTriggerSmartContract = decodeTriggerSmartContract;
291
322
  /**
292
323
  * Deserialize the segment of the txHex corresponding with the details of the contract which updates
293
324
  * account permission
@@ -297,9 +328,9 @@ exports.decodeTriggerSmartContract = decodeTriggerSmartContract;
297
328
  */
298
329
  function decodeAccountPermissionUpdateContract(base64) {
299
330
  const accountUpdateContract = tron_1.protocol.AccountPermissionUpdateContract.decode(Buffer.from(base64, 'base64')).toJSON();
300
- assert_1.default(accountUpdateContract.ownerAddress);
301
- assert_1.default(accountUpdateContract.owner);
302
- assert_1.default(accountUpdateContract.hasOwnProperty('actives'));
331
+ (0, assert_1.default)(accountUpdateContract.ownerAddress);
332
+ (0, assert_1.default)(accountUpdateContract.owner);
333
+ (0, assert_1.default)(accountUpdateContract.hasOwnProperty('actives'));
303
334
  const ownerAddress = getBase58AddressFromByteArray(getByteArrayFromHexAddress(Buffer.from(accountUpdateContract.ownerAddress, 'base64').toString('hex')));
304
335
  const owner = createPermission(accountUpdateContract.owner);
305
336
  let witness = undefined;
@@ -314,7 +345,6 @@ function decodeAccountPermissionUpdateContract(base64) {
314
345
  actives: activeList,
315
346
  };
316
347
  }
317
- exports.decodeAccountPermissionUpdateContract = decodeAccountPermissionUpdateContract;
318
348
  /**
319
349
  * @param raw
320
350
  */
@@ -342,7 +372,6 @@ function isValidTxJsonString(rawTransaction) {
342
372
  const transaction = JSON.parse(rawTransaction);
343
373
  return transaction.hasOwnProperty('txID');
344
374
  }
345
- exports.isValidTxJsonString = isValidTxJsonString;
346
375
  /**
347
376
  * Returns whether the provided raw transaction accommodates to bitgo's preferred format
348
377
  *
@@ -355,7 +384,6 @@ function isValidRawTransactionFormat(rawTransaction) {
355
384
  }
356
385
  return false;
357
386
  }
358
- exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
359
387
  /**
360
388
  * Returns an hex string of the given buffer
361
389
  *
@@ -365,5 +393,48 @@ exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
365
393
  function toHex(buffer) {
366
394
  return hex.encode(buffer, true);
367
395
  }
368
- exports.toHex = toHex;
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQXNDO0FBQ3RDLGlEQUFtQztBQUNuQyx3REFBeUQ7QUFFekQsbURBQWtEO0FBU2xELGlDQUFzRDtBQVF0RDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlO0lBQzdDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFGRCwwQ0FFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsR0FBVztJQUNwRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUZELGdFQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxHQUFjO0lBQ3ZELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELGdFQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQzdCLGVBQXVCLEVBQ3ZCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxhQUFhLEdBQUcsSUFBSTtJQUVwQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxxQkFBVSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7S0FDckY7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7S0FDbkY7SUFF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YyxHQUFHLHFCQUFjLENBQUMsT0FBTyxDQUFDO0tBQ3pDO1NBQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDL0MsY0FBYyxHQUFHLHFCQUFjLENBQUMsTUFBTSxDQUFDO0tBQ3hDO1NBQU07UUFDTCxNQUFNLElBQUkscUJBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM1RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxjQUFzQjtJQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBSEQsa0RBR0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLGNBQW1CO0lBQzdELElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7UUFDN0csT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUxELGtFQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixLQUFLLENBQUMsTUFBMkI7SUFDL0MsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRkQsc0JBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgdHJvbndlYiBmcm9tICd0cm9ud2ViJztcbmltcG9ydCB7IHByb3RvY29sIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvYnVmL3Ryb24nO1xuXG5pbXBvcnQgeyBVdGlsc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgVHJhbnNmZXJDb250cmFjdCxcbiAgUmF3RGF0YSxcbiAgQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCxcbiAgVHJhbnNhY3Rpb25SZWNlaXB0LFxuICBQZXJtaXNzaW9uLFxuICBUcmlnZ2VyU21hcnRDb250cmFjdCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDb250cmFjdFR5cGUsIFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9lbnVtJztcblxuLyoqXG4gKiBUcm9uLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgVHJvbkJpbmFyeUxpa2UgPSBCeXRlQXJyYXkgfCBCdWZmZXIgfCBVaW50OEFycmF5IHwgc3RyaW5nO1xuZXhwb3J0IHR5cGUgQnl0ZUFycmF5ID0gbnVtYmVyW107XG5cbi8qKlxuICogQHBhcmFtIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmFzZTU4QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmlzQWRkcmVzc1ZhbGlkKGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBzdHJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHN0cjogc3RyaW5nKTogQnl0ZUFycmF5IHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY29kZS5oZXhTdHIyYnl0ZUFycmF5KHN0ci5yZXBsYWNlKCcweCcsICcnKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIGFyclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGV4QWRkcmVzc0Zyb21CeXRlQXJyYXkoYXJyOiBCeXRlQXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jb2RlLmJ5dGVBcnJheTJoZXhTdHIoYXJyKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbWVzc2FnZVRvVmVyaWZ5XG4gKiBAcGFyYW0gYmFzZTU4QWRkcmVzc1xuICogQHBhcmFtIHNpZ0hleFxuICogQHBhcmFtIHVzZVRyb25IZWFkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZShcbiAgbWVzc2FnZVRvVmVyaWZ5OiBzdHJpbmcsXG4gIGJhc2U1OEFkZHJlc3M6IHN0cmluZyxcbiAgc2lnSGV4OiBzdHJpbmcsXG4gIHVzZVRyb25IZWFkZXIgPSB0cnVlXG4pOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkSGV4KHNpZ0hleCkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignc2lnbmF0dXJlIGlzIG5vdCBpbiBhIHZhbGlkIGZvcm1hdCwgbmVlZHMgdG8gYmUgaGV4YWRlY2ltYWwnKTtcbiAgfVxuXG4gIGlmICghaXNWYWxpZEhleChtZXNzYWdlVG9WZXJpZnkpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ21lc3NhZ2UgaXMgbm90IGluIGEgdmFsaWQgZm9ybWF0LCBuZWVkcyB0byBiZSBoZXhhZGVjaW1hbCcpO1xuICB9XG5cbiAgaWYgKCFpc0Jhc2U1OEFkZHJlc3MoYmFzZTU4QWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignYWRkcmVzcyBuZWVkcyB0byBiZSBiYXNlNTggZW5jb2RlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHRyb253ZWIuVHJ4LnZlcmlmeVNpZ25hdHVyZShtZXNzYWdlVG9WZXJpZnksIGJhc2U1OEFkZHJlc3MsIHNpZ0hleCwgdXNlVHJvbkhlYWRlcik7XG59XG5cbi8qKlxuICogQHBhcmFtIGJhc2U1OFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzKGJhc2U1ODogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gcHVsbGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9UUk9OLVVTL3Ryb253ZWIvYmxvYi9kY2I4ZWZhMzZhNWViYjY1YzRkYWIzNjI2ZTkwMjU2YTQ1M2YzYjBkL3NyYy91dGlscy9oZWxwLmpzI0wxN1xuICAvLyBidXQgdGhleSBkb24ndCBzdXJmYWNlIHRoaXMgY2FsbCBpbiBpbmRleC5qc1xuICBjb25zdCBieXRlcyA9IHRyb253ZWIudXRpbHMuY3J5cHRvLmRlY29kZUJhc2U1OEFkZHJlc3MoYmFzZTU4KTtcbiAgcmV0dXJuIGdldEhleEFkZHJlc3NGcm9tQnl0ZUFycmF5KGJ5dGVzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHViS2V5RnJvbVByaUtleShwcml2YXRlS2V5OiBUcm9uQmluYXJ5TGlrZSk6IEJ5dGVBcnJheSB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5nZXRQdWJLZXlGcm9tUHJpS2V5KHByaXZhdGVLZXkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzRnJvbVByaUtleShwcml2YXRlS2V5OiBUcm9uQmluYXJ5TGlrZSk6IEJ5dGVBcnJheSB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5nZXRBZGRyZXNzRnJvbVByaUtleShwcml2YXRlS2V5KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoYWRkcmVzczogQnl0ZUFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmdldEJhc2U1OENoZWNrQWRkcmVzcyhhZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gaGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFyciA9IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKGhleCk7XG4gIHJldHVybiBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShhcnIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihwcml2YXRlS2V5OiBzdHJpbmcgfCBCeXRlQXJyYXksIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQpOiBUcmFuc2FjdGlvblJlY2VpcHQge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uc2lnblRyYW5zYWN0aW9uKHByaXZhdGVLZXksIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbWVzc2FnZVxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqIEBwYXJhbSB1c2VUcm9uSGVhZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduU3RyaW5nKG1lc3NhZ2U6IHN0cmluZywgcHJpdmF0ZUtleTogc3RyaW5nIHwgQnl0ZUFycmF5LCB1c2VUcm9uSGVhZGVyID0gdHJ1ZSk6IHN0cmluZyB7XG4gIHJldHVybiB0cm9ud2ViLlRyeC5zaWduU3RyaW5nKG1lc3NhZ2UsIHByaXZhdGVLZXksIHVzZVRyb25IZWFkZXIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwdWJCeXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3QWRkcmVzc0Zyb21QdWJLZXkocHViQnl0ZXM6IFRyb25CaW5hcnlMaWtlKTogQnl0ZUFycmF5IHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmNvbXB1dGVBZGRyZXNzKHB1YkJ5dGVzKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgaGV4IGVuY29kZWQgdHJhbnNhY3Rpb24gaW4gaXRzIHByb3RvYnVmIHJlcHJlc2VudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBoZXhTdHJpbmcgcmF3X2RhdGFfaGV4IGZpZWxkIGZyb20gdHJvbiB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRyYW5zYWN0aW9uKGhleFN0cmluZzogc3RyaW5nKTogUmF3RGF0YSB7XG4gIGNvbnN0IHJhd1RyYW5zYWN0aW9uID0gZGVjb2RlUmF3VHJhbnNhY3Rpb24oaGV4U3RyaW5nKTtcblxuICAvLyB0aGVyZSBzaG91bGQgbm90IGJlIG11bHRpcGxlIGNvbnRyYWN0cyBpbiB0aGlzIGRhdGFcbiAgaWYgKHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignTnVtYmVyIG9mIGNvbnRyYWN0cyBpcyBncmVhdGVyIHRoYW4gMS4nKTtcbiAgfVxuXG4gIGxldCBjb250cmFjdDogVHJhbnNmZXJDb250cmFjdFtdIHwgQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFtdIHwgVHJpZ2dlclNtYXJ0Q29udHJhY3RbXTtcbiAgbGV0IGNvbnRyYWN0VHlwZTogQ29udHJhY3RUeXBlO1xuICAvLyBlbnN1cmUgdGhlIGNvbnRyYWN0IHR5cGUgaXMgc3VwcG9ydGVkXG4gIHN3aXRjaCAocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci50eXBlX3VybCkge1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVHJhbnNmZXI7XG4gICAgICBjb250cmFjdCA9IGV4cG9ydHMuZGVjb2RlVHJhbnNmZXJDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuQWNjb3VudFBlcm1pc3Npb25VcGRhdGU7XG4gICAgICBjb250cmFjdCA9IGV4cG9ydHMuZGVjb2RlQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLlRyaWdnZXJTbWFydENvbnRyYWN0O1xuICAgICAgY29udHJhY3QgPSBleHBvcnRzLmRlY29kZVRyaWdnZXJTbWFydENvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdVbnN1cHBvcnRlZCBjb250cmFjdCB0eXBlJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbnRyYWN0VHlwZSxcbiAgICBjb250cmFjdCxcbiAgICBleHBpcmF0aW9uOiByYXdUcmFuc2FjdGlvbi5leHBpcmF0aW9uLFxuICAgIHRpbWVzdGFtcDogcmF3VHJhbnNhY3Rpb24udGltZXN0YW1wLFxuICAgIHJlZl9ibG9ja19ieXRlczogcmF3VHJhbnNhY3Rpb24uYmxvY2tCeXRlcyxcbiAgICByZWZfYmxvY2tfaGFzaDogcmF3VHJhbnNhY3Rpb24uYmxvY2tIYXNoLFxuICAgIGZlZV9saW1pdDogK3Jhd1RyYW5zYWN0aW9uLmZlZUxpbWl0LFxuICB9O1xufVxuXG4vKipcbiAqIERlY29kZXMgYSB0cmFuc2FjdGlvbidzIHJhdyBmaWVsZCBmcm9tIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLiBUaGlzIGlzIGEgcHJvdG9idWYgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIGhleFN0cmluZyB0aGlzIGlzIHRoZSByYXcgaGV4YWRlY2ltYWwgZW5jb2RlZCBzdHJpbmcuIERvYyBmb3VuZCBpbiB0aGUgZm9sbG93aW5nIGxpbmsuXG4gKiBAZXhhbXBsZVxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL2JpdGdvLWFjY291bnQtbGliL2Jsb2IvNWYyODI1ODg3MDE3NzhhNDQyMWM3NWZhNjFmNDI3MTNmNTZlOTViOS9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbi5wcm90byNMMzE5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUmF3VHJhbnNhY3Rpb24oaGV4U3RyaW5nOiBzdHJpbmcpOiB7XG4gIGV4cGlyYXRpb246IG51bWJlcjtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGNvbnRyYWN0czogQXJyYXk8YW55PjtcbiAgYmxvY2tCeXRlczogc3RyaW5nO1xuICBibG9ja0hhc2g6IHN0cmluZztcbiAgZmVlTGltaXQ6IHN0cmluZztcbn0ge1xuICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKGhleFN0cmluZywgJ2hleCcpO1xuXG4gIGxldCByYXc7XG4gIHRyeSB7XG4gICAgLy8gd2UgbmVlZCB0byBkZWNvZGUgb3VyIHJhd19kYXRhX2hleCBmaWVsZCBmaXJzdFxuICAgIHJhdyA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5kZWNvZGUoYnl0ZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgaW5pdGlhbCByYXdfZGF0YV9oZXggZnJvbSB0aGUgc2VyaWFsaXplZCB0eC4nKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwaXJhdGlvbjogTnVtYmVyKHJhdy5leHBpcmF0aW9uKSxcbiAgICB0aW1lc3RhbXA6IE51bWJlcihyYXcudGltZXN0YW1wKSxcbiAgICBjb250cmFjdHM6IHJhdy5jb250cmFjdCxcbiAgICBibG9ja0J5dGVzOiB0b0hleChyYXcucmVmQmxvY2tCeXRlcyksXG4gICAgZmVlTGltaXQ6IHJhdy5mZWVMaW1pdCxcbiAgICBibG9ja0hhc2g6IHRvSGV4KHJhdy5yZWZCbG9ja0hhc2gpLFxuICB9O1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXNzZWQgc3RyaW5nIGlzIGEgc2FmZSBoZXggc3RyaW5nIGZvciB0cm9uJ3MgcHVycG9zZXMuXG4gKlxuICogQHBhcmFtIGhleCBBIHZhbGlkIGhleCBzdHJpbmcgbXVzdCBiZSBhIHN0cmluZyBtYWRlIG9mIG51bWJlcnMgYW5kIGNoYXJhY3RlcnMgYW5kIGhhcyBhbiBldmVuIGxlbmd0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRIZXgoaGV4OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKDB4KT8oWzAtOWEtZl17Mn0pKyQvaS50ZXN0KGhleCk7XG59XG5cbi8qKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggd2hpY2ggY29ycmVzcG9uZHMgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgdHJhbnNmZXJcbiAqXG4gKiBAcGFyYW0gdHJhbnNmZXJIZXggaXMgdGhlIHZhbHVlIHByb3BlcnR5IG9mIHRoZSBcInBhcmFtZXRlclwiIGZpZWxkIG9mIGNvbnRyYWN0TGlzdFswXVxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmFuc2ZlckNvbnRyYWN0KHRyYW5zZmVySGV4OiBzdHJpbmcpOiBUcmFuc2ZlckNvbnRyYWN0W10ge1xuICBjb25zdCBjb250cmFjdEJ5dGVzID0gQnVmZmVyLmZyb20odHJhbnNmZXJIZXgsICdiYXNlNjQnKTtcbiAgbGV0IHRyYW5zZmVyQ29udHJhY3Q7XG5cbiAgdHJ5IHtcbiAgICB0cmFuc2ZlckNvbnRyYWN0ID0gcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdC5kZWNvZGUoY29udHJhY3RCeXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB0cmFuc2ZlciBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICghdHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHRyYW5zZmVyIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCF0cmFuc2ZlckNvbnRyYWN0Lmhhc093blByb3BlcnR5KCdhbW91bnQnKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdBbW91bnQgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCB0b19hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGFtb3VudCA9IHRyYW5zZmVyQ29udHJhY3QuYW1vdW50O1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgYW1vdW50OiBOdW1iZXIoYW1vdW50KSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHRvX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0cmlnZ2VyIHNtYXJ0IGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmlnZ2VyU21hcnRDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFRyaWdnZXJTbWFydENvbnRyYWN0W10ge1xuICBsZXQgY29udHJhY3RDYWxsRGVjb2RlZDtcbiAgdHJ5IHtcbiAgICBjb250cmFjdENhbGxEZWNvZGVkID0gcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGNvbnRyYWN0IGNhbGwgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCFjb250cmFjdENhbGxEZWNvZGVkLm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIGlmICghY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gY29udHJhY3QgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNvbnRyYWN0IGNhbGwuJyk7XG4gIH1cblxuICBpZiAoIWNvbnRyYWN0Q2FsbERlY29kZWQuZGF0YSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdEYXRhIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKGNvbnRyYWN0Q2FsbERlY29kZWQub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBjb250cmFjdF9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGRhdGEgPSBjb250cmFjdENhbGxEZWNvZGVkLmRhdGE7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIGNvbnRyYWN0X2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY29udHJhY3Qgd2hpY2ggdXBkYXRlc1xuICogYWNjb3VudCBwZXJtaXNzaW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCB7XG4gIGNvbnN0IGFjY291bnRVcGRhdGVDb250cmFjdCA9IHByb3RvY29sLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5vd25lckFkZHJlc3MpO1xuICBhc3NlcnQoYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlcycpKTtcblxuICBjb25zdCBvd25lckFkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShhY2NvdW50VXBkYXRlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBvd25lcjogUGVybWlzc2lvbiA9IGNyZWF0ZVBlcm1pc3Npb24oYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgbGV0IHdpdG5lc3M6IFBlcm1pc3Npb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlmIChhY2NvdW50VXBkYXRlQ29udHJhY3Qud2l0bmVzcykge1xuICAgIHdpdG5lc3MgPSBjcmVhdGVQZXJtaXNzaW9uKGFjY291bnRVcGRhdGVDb250cmFjdC53aXRuZXNzKTtcbiAgfVxuICBjb25zdCBhY3RpdmVMaXN0ID0gYWNjb3VudFVwZGF0ZUNvbnRyYWN0LmFjdGl2ZXMubWFwKChhY3RpdmUpID0+IGNyZWF0ZVBlcm1pc3Npb24oYWN0aXZlKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvd25lckFkZHJlc3MsXG4gICAgb3duZXIsXG4gICAgd2l0bmVzcyxcbiAgICBhY3RpdmVzOiBhY3RpdmVMaXN0LFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByYXdcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUGVybWlzc2lvbihyYXc6IHsgcGVybWlzc2lvbk5hbWU6IHN0cmluZzsgdGhyZXNob2xkOiBudW1iZXIgfSk6IFBlcm1pc3Npb24ge1xuICBsZXQgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlO1xuICBjb25zdCBwZXJtaXNzaW9uID0gcmF3LnBlcm1pc3Npb25OYW1lLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICBpZiAocGVybWlzc2lvbiA9PT0gJ293bmVyJykge1xuICAgIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGUuT3duZXI7XG4gIH0gZWxzZSBpZiAocGVybWlzc2lvbiA9PT0gJ3dpdG5lc3MnKSB7XG4gICAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZS5XaXRuZXNzO1xuICB9IGVsc2UgaWYgKHBlcm1pc3Npb24uc3Vic3RyKDAsIDYpID09PSAnYWN0aXZlJykge1xuICAgIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGUuQWN0aXZlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdQZXJtaXNzaW9uIHR5cGUgbm90IHBhcnNlYWJsZS4nKTtcbiAgfVxuICByZXR1cm4geyB0eXBlOiBwZXJtaXNzaW9uVHlwZSwgdGhyZXNob2xkOiByYXcudGhyZXNob2xkIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHhKc29uU3RyaW5nKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgcmV0dXJuIHRyYW5zYWN0aW9uLmhhc093blByb3BlcnR5KCd0eElEJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCByYXcgdHJhbnNhY3Rpb24gYWNjb21tb2RhdGVzIHRvIGJpdGdvJ3MgcHJlZmVycmVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiAtIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMge2Jvb2xlYW59IHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0KHJhd1RyYW5zYWN0aW9uOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgJiYgKGlzVmFsaWRIZXgocmF3VHJhbnNhY3Rpb24pIHx8IGlzVmFsaWRUeEpzb25TdHJpbmcocmF3VHJhbnNhY3Rpb24pKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7QnVmZmVyIHwgVWludDhBcnJheX0gYnVmZmVyIC0gdGhlIGJ1ZmZlciB0byBiZSBjb252ZXJ0ZWQgdG8gaGV4XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXggdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4KGJ1ZmZlcjogQnVmZmVyIHwgVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBoZXguZW5jb2RlKGJ1ZmZlciwgdHJ1ZSk7XG59XG4iXX0=
396
+ /**
397
+ * Returns a Keccak-256 encoded string of the parameters
398
+ *
399
+ * @param types - strings describing the types of the values
400
+ * @param values - value to encode
401
+ * @param methodId - the first 4 bytes of the function selector
402
+ */
403
+ function encodeDataParams(types, values, methodId) {
404
+ types.forEach((type, index) => {
405
+ if (type == 'address') {
406
+ values[index] = values[index].replace(ADDRESS_PREFIX_REGEX, '0x');
407
+ }
408
+ });
409
+ const abiCoder = new utils_1.AbiCoder();
410
+ let data;
411
+ try {
412
+ data = abiCoder.encode(types, values);
413
+ }
414
+ catch (e) {
415
+ throw new sdk_core_1.UtilsError(`There was an error encoding the data params. Error = ${JSON.stringify(e)}`);
416
+ }
417
+ if (methodId) {
418
+ return (0, utils_1.hexConcat)([methodId, data]).replace(/^(0x)/, '');
419
+ }
420
+ else {
421
+ return data.replace(/^(0x)/, '');
422
+ }
423
+ }
424
+ /**
425
+ * Returns the decoded values according to the array of types
426
+ *
427
+ * @param types - strings describing the types of the values
428
+ * @param data - encoded string
429
+ */
430
+ function decodeDataParams(types, data) {
431
+ const abiCoder = new utils_1.AbiCoder();
432
+ data = '0x' + data.substring(8);
433
+ return abiCoder.decode(types, data).reduce((obj, arg, index) => {
434
+ if (types[index] == 'address')
435
+ arg = ADDRESS_PREFIX + arg.substr(2).toLowerCase();
436
+ obj.push(arg);
437
+ return obj;
438
+ }, []);
439
+ }
440
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdDQSwwQ0FFQztBQUtELGdFQUVDO0FBS0QsZ0VBRUM7QUFRRCwwQ0FtQkM7QUFLRCx3RUFLQztBQUtELGtEQUVDO0FBS0Qsb0RBRUM7QUFLRCxzRUFFQztBQUtELDBEQUdDO0FBTUQsMENBRUM7QUFPRCxnQ0FFQztBQUtELDBEQUVDO0FBT0QsOENBcUNDO0FBU0Qsb0RBMEJDO0FBT0QsZ0NBRUM7QUFNRCx3REEwQ0M7QUFRRCxnRUF1Q0M7QUFTRCxzRkFzQkM7QUF1QkQsa0RBR0M7QUFRRCxrRUFLQztBQVFELHNCQUVDO0FBU0QsNENBbUJDO0FBUUQsNENBUUM7QUFyY0Qsb0RBQTRCO0FBQzVCLG9EQUFzQztBQUN0QyxpREFBbUM7QUFDbkMsd0RBQXlEO0FBRXpELG1EQUFrRDtBQUNsRCxpREFBMkQ7QUFTM0QsaUNBQXNEO0FBQ3RELDRDQUF1RDtBQUV2RCxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUNyQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7QUFFNUIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxFQUFFLEVBQUU7SUFDNUMsT0FDRSxlQUFLO1NBQ0YsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztTQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUMvRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FB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QUFDO1FBQ2xGLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgdHJvbndlYiBmcm9tICd0cm9ud2ViJztcbmltcG9ydCB7IHByb3RvY29sIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvYnVmL3Ryb24nO1xuXG5pbXBvcnQgeyBVdGlsc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJvbkVyYzIwQ29pbiwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIFRyYW5zZmVyQ29udHJhY3QsXG4gIFJhd0RhdGEsXG4gIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QsXG4gIFRyYW5zYWN0aW9uUmVjZWlwdCxcbiAgUGVybWlzc2lvbixcbiAgVHJpZ2dlclNtYXJ0Q29udHJhY3QsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ29udHJhY3RUeXBlLCBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBBYmlDb2RlciwgaGV4Q29uY2F0IH0gZnJvbSAnZXRoZXJzL2xpYi91dGlscyc7XG5cbmNvbnN0IEFERFJFU1NfUFJFRklYX1JFR0VYID0gL14oNDEpLztcbmNvbnN0IEFERFJFU1NfUFJFRklYID0gJzQxJztcblxuY29uc3QgZ2V0VHJvblRva2VucyA9IChuZXR3b3JrID0gJ21haW5uZXQnKSA9PiB7XG4gIHJldHVybiAoXG4gICAgY29pbnNcbiAgICAgIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmFtaWx5ID09PSAndHJ4JylcbiAgICAgIC5maWx0ZXIoKHRyeCkgPT4gdHJ4Lm5ldHdvcmsudHlwZSA9PT0gbmV0d29yayAmJiB0cnguaXNUb2tlbikgYXMgdW5rbm93biBhcyBUcm9uRXJjMjBDb2luW11cbiAgKS5tYXAoKGNvaW5zKSA9PiBjb2lucy5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdG9rZW5NYWlubmV0Q29udHJhY3RBZGRyZXNzZXMgPSBnZXRUcm9uVG9rZW5zKCdtYWlubmV0Jyk7XG5leHBvcnQgY29uc3QgdG9rZW5UZXN0bmV0Q29udHJhY3RBZGRyZXNzZXMgPSBnZXRUcm9uVG9rZW5zKCd0ZXN0bmV0Jyk7XG4vKipcbiAqIFRyb24tc3BlY2lmaWMgaGVscGVyIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgdHlwZSBUcm9uQmluYXJ5TGlrZSA9IEJ5dGVBcnJheSB8IEJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBzdHJpbmc7XG5leHBvcnQgdHlwZSBCeXRlQXJyYXkgPSBudW1iZXJbXTtcblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCYXNlNThBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uaXNBZGRyZXNzVmFsaWQoYWRkcmVzcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHN0clxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3Moc3RyOiBzdHJpbmcpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jb2RlLmhleFN0cjJieXRlQXJyYXkoc3RyLnJlcGxhY2UoJzB4JywgJycpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYXJyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZXhBZGRyZXNzRnJvbUJ5dGVBcnJheShhcnI6IEJ5dGVBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNvZGUuYnl0ZUFycmF5MmhleFN0cihhcnIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBtZXNzYWdlVG9WZXJpZnlcbiAqIEBwYXJhbSBiYXNlNThBZGRyZXNzXG4gKiBAcGFyYW0gc2lnSGV4XG4gKiBAcGFyYW0gdXNlVHJvbkhlYWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICBtZXNzYWdlVG9WZXJpZnk6IHN0cmluZyxcbiAgYmFzZTU4QWRkcmVzczogc3RyaW5nLFxuICBzaWdIZXg6IHN0cmluZyxcbiAgdXNlVHJvbkhlYWRlciA9IHRydWVcbik6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRIZXgoc2lnSGV4KSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdzaWduYXR1cmUgaXMgbm90IGluIGEgdmFsaWQgZm9ybWF0LCBuZWVkcyB0byBiZSBoZXhhZGVjaW1hbCcpO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkSGV4KG1lc3NhZ2VUb1ZlcmlmeSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignbWVzc2FnZSBpcyBub3QgaW4gYSB2YWxpZCBmb3JtYXQsIG5lZWRzIHRvIGJlIGhleGFkZWNpbWFsJyk7XG4gIH1cblxuICBpZiAoIWlzQmFzZTU4QWRkcmVzcyhiYXNlNThBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdhZGRyZXNzIG5lZWRzIHRvIGJlIGJhc2U1OCBlbmNvZGVkJyk7XG4gIH1cblxuICByZXR1cm4gdHJvbndlYi5UcngudmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2VUb1ZlcmlmeSwgYmFzZTU4QWRkcmVzcywgc2lnSGV4LCB1c2VUcm9uSGVhZGVyKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYmFzZTU4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MoYmFzZTU4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBwdWxsZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL1RST04tVVMvdHJvbndlYi9ibG9iL2RjYjhlZmEzNmE1ZWJiNjVjNGRhYjM2MjZlOTAyNTZhNDUzZjNiMGQvc3JjL3V0aWxzL2hlbHAuanMjTDE3XG4gIC8vIGJ1dCB0aGV5IGRvbid0IHN1cmZhY2UgdGhpcyBjYWxsIGluIGluZGV4LmpzXG4gIGNvbnN0IGJ5dGVzID0gdHJvbndlYi51dGlscy5jcnlwdG8uZGVjb2RlQmFzZTU4QWRkcmVzcyhiYXNlNTgpO1xuICByZXR1cm4gZ2V0SGV4QWRkcmVzc0Zyb21CeXRlQXJyYXkoYnl0ZXMpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQdWJLZXlGcm9tUHJpS2V5KHByaXZhdGVLZXk6IFRyb25CaW5hcnlMaWtlKTogQnl0ZUFycmF5IHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmdldFB1YktleUZyb21QcmlLZXkocHJpdmF0ZUtleSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NGcm9tUHJpS2V5KHByaXZhdGVLZXk6IFRyb25CaW5hcnlMaWtlKTogQnl0ZUFycmF5IHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmdldEFkZHJlc3NGcm9tUHJpS2V5KHByaXZhdGVLZXkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShhZGRyZXNzOiBCeXRlQXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uZ2V0QmFzZTU4Q2hlY2tBZGRyZXNzKGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBoZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYXJyID0gZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoaGV4KTtcbiAgcmV0dXJuIGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KGFycik7XG59XG5cbi8qKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblRyYW5zYWN0aW9uKHByaXZhdGVLZXk6IHN0cmluZyB8IEJ5dGVBcnJheSwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCk6IFRyYW5zYWN0aW9uUmVjZWlwdCB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5zaWduVHJhbnNhY3Rpb24ocHJpdmF0ZUtleSwgdHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIEBwYXJhbSBtZXNzYWdlXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICogQHBhcmFtIHVzZVRyb25IZWFkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25TdHJpbmcobWVzc2FnZTogc3RyaW5nLCBwcml2YXRlS2V5OiBzdHJpbmcgfCBCeXRlQXJyYXksIHVzZVRyb25IZWFkZXIgPSB0cnVlKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRyb253ZWIuVHJ4LnNpZ25TdHJpbmcobWVzc2FnZSwgcHJpdmF0ZUtleSwgdXNlVHJvbkhlYWRlcik7XG59XG5cbi8qKlxuICogQHBhcmFtIHB1YkJ5dGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYXdBZGRyZXNzRnJvbVB1YktleShwdWJCeXRlczogVHJvbkJpbmFyeUxpa2UpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uY29tcHV0ZUFkZHJlc3MocHViQnl0ZXMpO1xufVxuXG4vKipcbiAqIERlY29kZXMgYSBoZXggZW5jb2RlZCB0cmFuc2FjdGlvbiBpbiBpdHMgcHJvdG9idWYgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIGhleFN0cmluZyByYXdfZGF0YV9oZXggZmllbGQgZnJvbSB0cm9uIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVHJhbnNhY3Rpb24oaGV4U3RyaW5nOiBzdHJpbmcpOiBSYXdEYXRhIHtcbiAgY29uc3QgcmF3VHJhbnNhY3Rpb24gPSBkZWNvZGVSYXdUcmFuc2FjdGlvbihoZXhTdHJpbmcpO1xuXG4gIC8vIHRoZXJlIHNob3VsZCBub3QgYmUgbXVsdGlwbGUgY29udHJhY3RzIGluIHRoaXMgZGF0YVxuICBpZiAocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdOdW1iZXIgb2YgY29udHJhY3RzIGlzIGdyZWF0ZXIgdGhhbiAxLicpO1xuICB9XG5cbiAgbGV0IGNvbnRyYWN0OiBUcmFuc2ZlckNvbnRyYWN0W10gfCBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0W10gfCBUcmlnZ2VyU21hcnRDb250cmFjdFtdO1xuICBsZXQgY29udHJhY3RUeXBlOiBDb250cmFjdFR5cGU7XG4gIC8vIGVuc3VyZSB0aGUgY29udHJhY3QgdHlwZSBpcyBzdXBwb3J0ZWRcbiAgc3dpdGNoIChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnR5cGVfdXJsKSB7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5UcmFuc2ZlckNvbnRyYWN0JzpcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5UcmFuc2ZlcjtcbiAgICAgIGNvbnRyYWN0ID0gZXhwb3J0cy5kZWNvZGVUcmFuc2ZlckNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5BY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0JzpcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5BY2NvdW50UGVybWlzc2lvblVwZGF0ZTtcbiAgICAgIGNvbnRyYWN0ID0gZXhwb3J0cy5kZWNvZGVBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5UcmlnZ2VyU21hcnRDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVHJpZ2dlclNtYXJ0Q29udHJhY3Q7XG4gICAgICBjb250cmFjdCA9IGV4cG9ydHMuZGVjb2RlVHJpZ2dlclNtYXJ0Q29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbnRyYWN0IHR5cGUnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29udHJhY3RUeXBlLFxuICAgIGNvbnRyYWN0LFxuICAgIGV4cGlyYXRpb246IHJhd1RyYW5zYWN0aW9uLmV4cGlyYXRpb24sXG4gICAgdGltZXN0YW1wOiByYXdUcmFuc2FjdGlvbi50aW1lc3RhbXAsXG4gICAgcmVmX2Jsb2NrX2J5dGVzOiByYXdUcmFuc2FjdGlvbi5ibG9ja0J5dGVzLFxuICAgIHJlZl9ibG9ja19oYXNoOiByYXdUcmFuc2FjdGlvbi5ibG9ja0hhc2gsXG4gICAgZmVlX2xpbWl0OiArcmF3VHJhbnNhY3Rpb24uZmVlTGltaXQsXG4gIH07XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIHRyYW5zYWN0aW9uJ3MgcmF3IGZpZWxkIGZyb20gYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuIFRoaXMgaXMgYSBwcm90b2J1ZiByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gaGV4U3RyaW5nIHRoaXMgaXMgdGhlIHJhdyBoZXhhZGVjaW1hbCBlbmNvZGVkIHN0cmluZy4gRG9jIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgbGluay5cbiAqIEBleGFtcGxlXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vQml0R28vYml0Z28tYWNjb3VudC1saWIvYmxvYi81ZjI4MjU4ODcwMTc3OGE0NDIxYzc1ZmE2MWY0MjcxM2Y1NmU5NWI5L3Jlc291cmNlcy9wcm90b2J1Zi90cm9uLnByb3RvI0wzMTl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVSYXdUcmFuc2FjdGlvbihoZXhTdHJpbmc6IHN0cmluZyk6IHtcbiAgZXhwaXJhdGlvbjogbnVtYmVyO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgY29udHJhY3RzOiBBcnJheTxhbnk+O1xuICBibG9ja0J5dGVzOiBzdHJpbmc7XG4gIGJsb2NrSGFzaDogc3RyaW5nO1xuICBmZWVMaW1pdDogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oaGV4U3RyaW5nLCAnaGV4Jyk7XG5cbiAgbGV0IHJhdztcbiAgdHJ5IHtcbiAgICAvLyB3ZSBuZWVkIHRvIGRlY29kZSBvdXIgcmF3X2RhdGFfaGV4IGZpZWxkIGZpcnN0XG4gICAgcmF3ID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmRlY29kZShieXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSBpbml0aWFsIHJhd19kYXRhX2hleCBmcm9tIHRoZSBzZXJpYWxpemVkIHR4LicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBpcmF0aW9uOiBOdW1iZXIocmF3LmV4cGlyYXRpb24pLFxuICAgIHRpbWVzdGFtcDogTnVtYmVyKHJhdy50aW1lc3RhbXApLFxuICAgIGNvbnRyYWN0czogcmF3LmNvbnRyYWN0LFxuICAgIGJsb2NrQnl0ZXM6IHRvSGV4KHJhdy5yZWZCbG9ja0J5dGVzKSxcbiAgICBmZWVMaW1pdDogcmF3LmZlZUxpbWl0LFxuICAgIGJsb2NrSGFzaDogdG9IZXgocmF3LnJlZkJsb2NrSGFzaCksXG4gIH07XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBhc3NlZCBzdHJpbmcgaXMgYSBzYWZlIGhleCBzdHJpbmcgZm9yIHRyb24ncyBwdXJwb3Nlcy5cbiAqXG4gKiBAcGFyYW0gaGV4IEEgdmFsaWQgaGV4IHN0cmluZyBtdXN0IGJlIGEgc3RyaW5nIG1hZGUgb2YgbnVtYmVycyBhbmQgY2hhcmFjdGVycyBhbmQgaGFzIGFuIGV2ZW4gbGVuZ3RoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhleChoZXg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL14oMHgpPyhbMC05YS1mXXsyfSkrJC9pLnRlc3QoaGV4KTtcbn1cblxuLyoqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCB3aGljaCBjb3JyZXNwb25kcyB3aXRoIHRoZSBkZXRhaWxzIG9mIHRoZSB0cmFuc2ZlclxuICpcbiAqIEBwYXJhbSB0cmFuc2ZlckhleCBpcyB0aGUgdmFsdWUgcHJvcGVydHkgb2YgdGhlIFwicGFyYW1ldGVyXCIgZmllbGQgb2YgY29udHJhY3RMaXN0WzBdXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRyYW5zZmVyQ29udHJhY3QodHJhbnNmZXJIZXg6IHN0cmluZyk6IFRyYW5zZmVyQ29udHJhY3RbXSB7XG4gIGNvbnN0IGNvbnRyYWN0Qnl0ZXMgPSBCdWZmZXIuZnJvbSh0cmFuc2ZlckhleCwgJ2Jhc2U2NCcpO1xuICBsZXQgdHJhbnNmZXJDb250cmFjdDtcblxuICB0cnkge1xuICAgIHRyYW5zZmVyQ29udHJhY3QgPSBwcm90b2NvbC5UcmFuc2ZlckNvbnRyYWN0LmRlY29kZShjb250cmFjdEJ5dGVzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIHRyYW5zZmVyIGNvbnRyYWN0IGluIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgfVxuXG4gIGlmICghdHJhbnNmZXJDb250cmFjdC5vd25lckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignT3duZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHRyYW5zZmVyIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCF0cmFuc2ZlckNvbnRyYWN0LnRvQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdEZXN0aW5hdGlvbiBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgdHJhbnNmZXIgY29udHJhY3QuJyk7XG4gIH1cblxuICBpZiAoIXRyYW5zZmVyQ29udHJhY3QuaGFzT3duUHJvcGVydHkoJ2Ftb3VudCcpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0Ftb3VudCBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHRyYW5zZmVyIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgLy8gZGVzZXJpYWxpemUgYXR0cmlidXRlc1xuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odHJhbnNmZXJDb250cmFjdC5vd25lckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IHRvX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh0cmFuc2ZlckNvbnRyYWN0LnRvQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcbiAgY29uc3QgYW1vdW50ID0gdHJhbnNmZXJDb250cmFjdC5hbW91bnQ7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBhbW91bnQ6IE51bWJlcihhbW91bnQpLFxuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgdG9fYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHRyaWdnZXIgc21hcnQgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0XG4gKiBAcmV0dXJucyB7QWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRyaWdnZXJTbWFydENvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogVHJpZ2dlclNtYXJ0Q29udHJhY3RbXSB7XG4gIGxldCBjb250cmFjdENhbGxEZWNvZGVkO1xuICB0cnkge1xuICAgIGNvbnRyYWN0Q2FsbERlY29kZWQgPSBwcm90b2NvbC5UcmlnZ2VyU21hcnRDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgY29udHJhY3QgY2FsbCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIWNvbnRyYWN0Q2FsbERlY29kZWQub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBjb250cmFjdCBjYWxsLicpO1xuICB9XG5cbiAgaWYgKCFjb250cmFjdENhbGxEZWNvZGVkLmNvbnRyYWN0QWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdEZXN0aW5hdGlvbiBjb250cmFjdCBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIGlmICghY29udHJhY3RDYWxsRGVjb2RlZC5kYXRhKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0RhdGEgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBjb250cmFjdCBjYWxsLicpO1xuICB9XG5cbiAgLy8gZGVzZXJpYWxpemUgYXR0cmlidXRlc1xuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oY29udHJhY3RDYWxsRGVjb2RlZC5vd25lckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGNvbnRyYWN0X2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShjb250cmFjdENhbGxEZWNvZGVkLmNvbnRyYWN0QWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcbiAgY29uc3QgZGF0YSA9IGNvbnRyYWN0Q2FsbERlY29kZWQuZGF0YTtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgY29udHJhY3RfYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHRoZSBkZXRhaWxzIG9mIHRoZSBjb250cmFjdCB3aGljaCB1cGRhdGVzXG4gKiBhY2NvdW50IHBlcm1pc3Npb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0XG4gKiBAcmV0dXJucyB7QWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0IHtcbiAgY29uc3QgYWNjb3VudFVwZGF0ZUNvbnRyYWN0ID0gcHJvdG9jb2wuQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICBhc3NlcnQoYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcyk7XG4gIGFzc2VydChhY2NvdW50VXBkYXRlQ29udHJhY3Qub3duZXIpO1xuICBhc3NlcnQoYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lmhhc093blByb3BlcnR5KCdhY3RpdmVzJykpO1xuXG4gIGNvbnN0IG93bmVyQWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKGFjY291bnRVcGRhdGVDb250cmFjdC5vd25lckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IG93bmVyOiBQZXJtaXNzaW9uID0gY3JlYXRlUGVybWlzc2lvbihhY2NvdW50VXBkYXRlQ29udHJhY3Qub3duZXIpO1xuICBsZXQgd2l0bmVzczogUGVybWlzc2lvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgaWYgKGFjY291bnRVcGRhdGVDb250cmFjdC53aXRuZXNzKSB7XG4gICAgd2l0bmVzcyA9IGNyZWF0ZVBlcm1pc3Npb24oYWNjb3VudFVwZGF0ZUNvbnRyYWN0LndpdG5lc3MpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZUxpc3QgPSBhY2NvdW50VXBkYXRlQ29udHJhY3QuYWN0aXZlcy5tYXAoKGFjdGl2ZSkgPT4gY3JlYXRlUGVybWlzc2lvbihhY3RpdmUpKTtcblxuICByZXR1cm4ge1xuICAgIG93bmVyQWRkcmVzcyxcbiAgICBvd25lcixcbiAgICB3aXRuZXNzLFxuICAgIGFjdGl2ZXM6IGFjdGl2ZUxpc3QsXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHJhd1xuICovXG5mdW5jdGlvbiBjcmVhdGVQZXJtaXNzaW9uKHJhdzogeyBwZXJtaXNzaW9uTmFtZTogc3RyaW5nOyB0aHJlc2hvbGQ6IG51bWJlciB9KTogUGVybWlzc2lvbiB7XG4gIGxldCBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGU7XG4gIGNvbnN0IHBlcm1pc3Npb24gPSByYXcucGVybWlzc2lvbk5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIGlmIChwZXJtaXNzaW9uID09PSAnb3duZXInKSB7XG4gICAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZS5Pd25lcjtcbiAgfSBlbHNlIGlmIChwZXJtaXNzaW9uID09PSAnd2l0bmVzcycpIHtcbiAgICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlLldpdG5lc3M7XG4gIH0gZWxzZSBpZiAocGVybWlzc2lvbi5zdWJzdHIoMCwgNikgPT09ICdhY3RpdmUnKSB7XG4gICAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZS5BY3RpdmU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Blcm1pc3Npb24gdHlwZSBub3QgcGFyc2VhYmxlLicpO1xuICB9XG4gIHJldHVybiB7IHR5cGU6IHBlcm1pc3Npb25UeXBlLCB0aHJlc2hvbGQ6IHJhdy50aHJlc2hvbGQgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUeEpzb25TdHJpbmcocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB0cmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICByZXR1cm4gdHJhbnNhY3Rpb24uaGFzT3duUHJvcGVydHkoJ3R4SUQnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHJhdyB0cmFuc2FjdGlvbiBhY2NvbW1vZGF0ZXMgdG8gYml0Z28ncyBwcmVmZXJyZWQgZm9ybWF0XG4gKlxuICogQHBhcmFtIHthbnl9IHJhd1RyYW5zYWN0aW9uIC0gVGhlIHJhdyB0cmFuc2FjdGlvbiB0byBiZSBjaGVja2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJyAmJiAoaXNWYWxpZEhleChyYXdUcmFuc2FjdGlvbikgfHwgaXNWYWxpZFR4SnNvblN0cmluZyhyYXdUcmFuc2FjdGlvbikpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gKlxuICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9IZXgoYnVmZmVyOiBCdWZmZXIgfCBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgS2VjY2FrLTI1NiBlbmNvZGVkIHN0cmluZyBvZiB0aGUgcGFyYW1ldGVyc1xuICpcbiAqIEBwYXJhbSB0eXBlcyAtIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlc1xuICogQHBhcmFtIHZhbHVlcyAtIHZhbHVlIHRvIGVuY29kZVxuICogQHBhcmFtIG1ldGhvZElkIC0gdGhlIGZpcnN0IDQgYnl0ZXMgb2YgdGhlIGZ1bmN0aW9uIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVEYXRhUGFyYW1zKHR5cGVzOiBzdHJpbmdbXSwgdmFsdWVzOiBhbnlbXSwgbWV0aG9kSWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICB0eXBlcy5mb3JFYWNoKCh0eXBlLCBpbmRleCkgPT4ge1xuICAgIGlmICh0eXBlID09ICdhZGRyZXNzJykge1xuICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlc1tpbmRleF0ucmVwbGFjZShBRERSRVNTX1BSRUZJWF9SRUdFWCwgJzB4Jyk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBhYmlDb2RlciA9IG5ldyBBYmlDb2RlcigpO1xuICBsZXQgZGF0YTtcbiAgdHJ5IHtcbiAgICBkYXRhID0gYWJpQ29kZXIuZW5jb2RlKHR5cGVzLCB2YWx1ZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYFRoZXJlIHdhcyBhbiBlcnJvciBlbmNvZGluZyB0aGUgZGF0YSBwYXJhbXMuIEVycm9yID0gJHtKU09OLnN0cmluZ2lmeShlKX1gKTtcbiAgfVxuICBpZiAobWV0aG9kSWQpIHtcbiAgICByZXR1cm4gaGV4Q29uY2F0KFttZXRob2RJZCwgZGF0YV0pLnJlcGxhY2UoL14oMHgpLywgJycpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhLnJlcGxhY2UoL14oMHgpLywgJycpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZGVjb2RlZCB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBhcnJheSBvZiB0eXBlc1xuICpcbiAqIEBwYXJhbSB0eXBlcyAtIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlc1xuICogQHBhcmFtIGRhdGEgLSBlbmNvZGVkIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRGF0YVBhcmFtcyh0eXBlczogc3RyaW5nW10sIGRhdGE6IHN0cmluZyk6IGFueVtdIHtcbiAgY29uc3QgYWJpQ29kZXIgPSBuZXcgQWJpQ29kZXIoKTtcbiAgZGF0YSA9ICcweCcgKyBkYXRhLnN1YnN0cmluZyg4KTtcbiAgcmV0dXJuIGFiaUNvZGVyLmRlY29kZSh0eXBlcywgZGF0YSkucmVkdWNlKChvYmosIGFyZywgaW5kZXgpID0+IHtcbiAgICBpZiAodHlwZXNbaW5kZXhdID09ICdhZGRyZXNzJykgYXJnID0gQUREUkVTU19QUkVGSVggKyBhcmcuc3Vic3RyKDIpLnRvTG93ZXJDYXNlKCk7XG4gICAgb2JqLnB1c2goYXJnKTtcbiAgICByZXR1cm4gb2JqO1xuICB9LCBbXSk7XG59XG4iXX0=
@@ -6,6 +6,7 @@ import { Address } from './address';
6
6
  import { TransactionBuilder } from './transactionBuilder';
7
7
  import { ContractCallBuilder } from './contractCallBuilder';
8
8
  import { TransactionReceipt } from './iface';
9
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
9
10
  /**
10
11
  * Wrapped Builder class
11
12
  * This builder is created to maintain compatibility with the current uses of account-lib
@@ -22,6 +23,7 @@ export declare class WrappedBuilder extends TransactionBuilder {
22
23
  */
23
24
  getContractCallBuilder(tx?: TransactionReceipt | string): ContractCallBuilder;
24
25
  getTransactionBuilder(tx?: TransactionReceipt | string): TransactionBuilder;
26
+ getTokenTransferBuilder(tx?: TransactionReceipt | string): TokenTransferBuilder;
25
27
  private initializeBuilder;
26
28
  /** @inheritdoc */
27
29
  extendValidTo(extensionMs: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"wrappedBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/wrappedBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,eAAe,EAA2B,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,mBAAmB;IAI7E,qBAAqB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,kBAAkB;IAI3E,OAAO,CAAC,iBAAiB;IAOzB,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM;IAIjC,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO;IAIjB,kBAAkB;IACZ,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAIvC,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,GAAG;IAiBb;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAO/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAIjD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAGtC"}
1
+ {"version":3,"file":"wrappedBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/wrappedBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,eAAe,EAA2B,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,mBAAmB;IAI7E,qBAAqB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,kBAAkB;IAI3E,uBAAuB,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,oBAAoB;IAI/E,OAAO,CAAC,iBAAiB;IAOzB,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM;IAIjC,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO;IAIjB,kBAAkB;IACZ,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAIvC,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,GAAG;IAiBb;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAO/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAIjD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAGtC"}
@@ -7,6 +7,7 @@ const keyPair_1 = require("./keyPair");
7
7
  const utils_1 = require("./utils");
8
8
  const enum_1 = require("./enum");
9
9
  const contractCallBuilder_1 = require("./contractCallBuilder");
10
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
10
11
  /**
11
12
  * Wrapped Builder class
12
13
  * This builder is created to maintain compatibility with the current uses of account-lib
@@ -30,6 +31,9 @@ class WrappedBuilder extends transactionBuilder_1.TransactionBuilder {
30
31
  getTransactionBuilder(tx) {
31
32
  return this.initializeBuilder(tx, new transactionBuilder_1.TransactionBuilder(this._coinConfig));
32
33
  }
34
+ getTokenTransferBuilder(tx) {
35
+ return this.initializeBuilder(tx, new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig));
36
+ }
33
37
  initializeBuilder(tx, builder) {
34
38
  if (tx) {
35
39
  builder.initBuilder(tx);
@@ -52,7 +56,7 @@ class WrappedBuilder extends transactionBuilder_1.TransactionBuilder {
52
56
  from(raw) {
53
57
  this.validateRawTransaction(raw);
54
58
  const rawDataHex = this.getTxReceipt(raw);
55
- const decodedTx = utils_1.decodeTransaction(rawDataHex);
59
+ const decodedTx = (0, utils_1.decodeTransaction)(rawDataHex);
56
60
  const contractType = decodedTx.contractType;
57
61
  switch (contractType) {
58
62
  case enum_1.ContractType.Transfer:
@@ -101,4 +105,4 @@ class WrappedBuilder extends transactionBuilder_1.TransactionBuilder {
101
105
  }
102
106
  }
103
107
  exports.WrappedBuilder = WrappedBuilder;
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dyYXBwZWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1EQUF5RjtBQUd6Riw2REFBMEQ7QUFDMUQsdUNBQW9DO0FBQ3BDLG1DQUE0QztBQUM1QyxpQ0FBc0M7QUFDdEMsK0RBQTREO0FBRzVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSx1Q0FBa0I7SUFHcEQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1Q0FBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxFQUFnQztRQUNyRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsRUFBZ0M7UUFDcEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksdUNBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLGlCQUFpQixDQUErQixFQUEyQyxFQUFFLE9BQVU7UUFDN0csSUFBSSxFQUFFLEVBQUU7WUFDTixPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsV0FBbUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBUTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLHlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDNUMsUUFBUSxZQUFZLEVBQUU7WUFDcEIsS0FBSyxtQkFBWSxDQUFDLFFBQVEsQ0FBQztZQUMzQixLQUFLLG1CQUFZLENBQUMsdUJBQXVCO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLEtBQUssbUJBQVksQ0FBQyxvQkFBb0I7Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDO2dCQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw0QkFBNEIsR0FBRyxZQUFZLENBQUMsQ0FBQztTQUNsRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFlBQVksQ0FBQyxHQUFvQztRQUN2RCxPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBYSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLElBQUk7WUFDRixJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDL0I7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsc0JBQXNCLENBQUMsY0FBbUI7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQXdCO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsS0FBZ0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBcEdELHdDQW9HQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gJy4vYWRkcmVzcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGRlY29kZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBDb250cmFjdFR5cGUgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsQnVpbGRlciB9IGZyb20gJy4vY29udHJhY3RDYWxsQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgfSBmcm9tICcuL2lmYWNlJztcblxuLyoqXG4gKiBXcmFwcGVkIEJ1aWxkZXIgY2xhc3NcbiAqIFRoaXMgYnVpbGRlciBpcyBjcmVhdGVkIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VzIG9mIGFjY291bnQtbGliXG4gKiBJdCBoYXMgYW4gaW5zdGFuY2Ugb2YgVHJhbnNhY3Rpb24gQnVpbGRlciBvciBDb250cmFjdCBDYWxsIEJ1aWxkZXIgYXMgcmVxdWlyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2J1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgLy8gZGVmYXVsdHMgdG8gb2xkIGJ1aWxkZXJcbiAgICB0aGlzLl9idWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIGJ1aWxkZXIgdG8gY3JlYXRlIGEgY29udHJhY3QgY2FsbCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSBbdHhdIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIGJ1aWxkZXJcbiAgICogQHJldHVybnMge0NvbnRyYWN0Q2FsbEJ1aWxkZXJ9IFRoZSBzcGVjaWZpYyBjb250cmFjdCBjYWxsIGJ1aWxkZXJcbiAgICovXG4gIGdldENvbnRyYWN0Q2FsbEJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiBDb250cmFjdENhbGxCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvbnRyYWN0Q2FsbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVCdWlsZGVyPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI+KHR4OiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcgfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBleHRlbmRWYWxpZFRvKGV4dGVuc2lvbk1zOiBudW1iZXIpIHtcbiAgICB0aGlzLl9idWlsZGVyLmV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXMpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHNpZ24oa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy5fYnVpbGRlci5zaWduKGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fYnVpbGRlci5idWlsZCgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBhbnkpIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5nZXRUeFJlY2VpcHQocmF3KTtcbiAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdEYXRhSGV4KTtcbiAgICBjb25zdCBjb250cmFjdFR5cGUgPSBkZWNvZGVkVHguY29udHJhY3RUeXBlO1xuICAgIHN3aXRjaCAoY29udHJhY3RUeXBlKSB7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5UcmFuc2ZlcjpcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlOlxuICAgICAgICB0aGlzLl9idWlsZGVyID0gdGhpcy5nZXRUcmFuc2FjdGlvbkJ1aWxkZXIocmF3KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkZXI7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5UcmlnZ2VyU21hcnRDb250cmFjdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udHJhY3RDYWxsQnVpbGRlcihyYXcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGU6ICcgKyBjb250cmFjdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJhdyBkYXRhIGhleCBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfX0gcmF3IHRoZSByYXcgdHJhbnNhY3Rpb24gYXMgYSBzdHJpbmcgb3IgYXMgYW4gb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSByYXcgZGF0YSBoZXhcbiAgICovXG4gIHByaXZhdGUgZ2V0VHhSZWNlaXB0KHJhdzogc3RyaW5nIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJhd1sncmF3X2RhdGFfaGV4J10gfHwgdGhpcy5nZXRUeFJlY2VpcHQoSlNPTi5wYXJzZShyYXcgYXMgc3RyaW5nKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICB0aGlzLl9idWlsZGVyLnZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwcm92aWRlZCBrZXkgaXMgbm90IHZhbGlkJyk7XG4gICAgfVxuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9idWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYnVpbGRlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9idWlsZGVyLnZhbGlkYXRlVmFsdWUodmFsdWUpO1xuICB9XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dyYXBwZWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1EQUF5RjtBQUd6Riw2REFBMEQ7QUFDMUQsdUNBQW9DO0FBQ3BDLG1DQUE0QztBQUM1QyxpQ0FBc0M7QUFDdEMsK0RBQTREO0FBRTVELGlFQUE4RDtBQUU5RDs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsdUNBQWtCO0lBR3BELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUNBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsRUFBZ0M7UUFDckQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUkseUNBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHFCQUFxQixDQUFDLEVBQWdDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFnQztRQUN0RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8saUJBQWlCLENBQStCLEVBQTJDLEVBQUUsT0FBVTtRQUM3RyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsV0FBbUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBUTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUEseUJBQWlCLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUM1QyxRQUFRLFlBQVksRUFBRSxDQUFDO1lBQ3JCLEtBQUssbUJBQVksQ0FBQyxRQUFRLENBQUM7WUFDM0IsS0FBSyxtQkFBWSxDQUFDLHVCQUF1QjtnQkFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN2QixLQUFLLG1CQUFZLENBQUMsb0JBQW9CO2dCQUNwQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQztnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsNEJBQTRCLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFlBQVksQ0FBQyxHQUFvQztRQUN2RCxPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBYSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixzQkFBc0IsQ0FBQyxjQUFtQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBd0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUF4R0Qsd0NBd0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZUtleSwgQmFzZVRyYW5zYWN0aW9uLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgZGVjb2RlVHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IENvbnRyYWN0VHlwZSB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBDb250cmFjdENhbGxCdWlsZGVyIH0gZnJvbSAnLi9jb250cmFjdENhbGxCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuVHJhbnNmZXJCdWlsZGVyJztcblxuLyoqXG4gKiBXcmFwcGVkIEJ1aWxkZXIgY2xhc3NcbiAqIFRoaXMgYnVpbGRlciBpcyBjcmVhdGVkIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VzIG9mIGFjY291bnQtbGliXG4gKiBJdCBoYXMgYW4gaW5zdGFuY2Ugb2YgVHJhbnNhY3Rpb24gQnVpbGRlciBvciBDb250cmFjdCBDYWxsIEJ1aWxkZXIgYXMgcmVxdWlyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2J1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgLy8gZGVmYXVsdHMgdG8gb2xkIGJ1aWxkZXJcbiAgICB0aGlzLl9idWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIGJ1aWxkZXIgdG8gY3JlYXRlIGEgY29udHJhY3QgY2FsbCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSBbdHhdIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIGJ1aWxkZXJcbiAgICogQHJldHVybnMge0NvbnRyYWN0Q2FsbEJ1aWxkZXJ9IFRoZSBzcGVjaWZpYyBjb250cmFjdCBjYWxsIGJ1aWxkZXJcbiAgICovXG4gIGdldENvbnRyYWN0Q2FsbEJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiBDb250cmFjdENhbGxCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvbnRyYWN0Q2FsbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcikge1xuICAgIHRoaXMuX2J1aWxkZXIuZXh0ZW5kVmFsaWRUbyhleHRlbnNpb25Ncyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2lnbihrZXk6IEJhc2VLZXkpIHtcbiAgICB0aGlzLl9idWlsZGVyLnNpZ24oa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9idWlsZGVyLmJ1aWxkKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IGFueSkge1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHJhd0RhdGFIZXggPSB0aGlzLmdldFR4UmVjZWlwdChyYXcpO1xuICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZVRyYW5zYWN0aW9uKHJhd0RhdGFIZXgpO1xuICAgIGNvbnN0IGNvbnRyYWN0VHlwZSA9IGRlY29kZWRUeC5jb250cmFjdFR5cGU7XG4gICAgc3dpdGNoIChjb250cmFjdFR5cGUpIHtcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLlRyYW5zZmVyOlxuICAgICAgY2FzZSBDb250cmFjdFR5cGUuQWNjb3VudFBlcm1pc3Npb25VcGRhdGU6XG4gICAgICAgIHRoaXMuX2J1aWxkZXIgPSB0aGlzLmdldFRyYW5zYWN0aW9uQnVpbGRlcihyYXcpO1xuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRlcjtcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLlRyaWdnZXJTbWFydENvbnRyYWN0OlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250cmFjdENhbGxCdWlsZGVyKHJhdyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZTogJyArIGNvbnRyYWN0VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmF3IGRhdGEgaGV4IGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9fSByYXcgdGhlIHJhdyB0cmFuc2FjdGlvbiBhcyBhIHN0cmluZyBvciBhcyBhbiBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHJhdyBkYXRhIGhleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUeFJlY2VpcHQocmF3OiBzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmF3WydyYXdfZGF0YV9oZXgnXSB8fCB0aGlzLmdldFR4UmVjZWlwdChKU09OLnBhcnNlKHJhdyBhcyBzdHJpbmcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IHZvaWQge1xuICAgIHRoaXMuX2J1aWxkZXIudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBub3QgdmFsaWQnKTtcbiAgICB9XG4gIH1cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2J1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9idWlsZGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2J1aWxkZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ export declare const register: (sdk: BitGoBase) => void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAMzC,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.register = void 0;
4
+ const trx_1 = require("./trx");
5
+ const trxToken_1 = require("./trxToken");
6
+ const ttrx_1 = require("./ttrx");
7
+ const register = (sdk) => {
8
+ sdk.register('trx', trx_1.Trx.createInstance);
9
+ sdk.register('ttrx', ttrx_1.Ttrx.createInstance);
10
+ trxToken_1.TrxToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
11
+ sdk.register(name, coinConstructor);
12
+ });
13
+ };
14
+ exports.register = register;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLHlDQUFzQztBQUN0QyxpQ0FBOEI7QUFFdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLG1CQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQ3ZFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBTlcsUUFBQSxRQUFRLFlBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJ4IH0gZnJvbSAnLi90cngnO1xuaW1wb3J0IHsgVHJ4VG9rZW4gfSBmcm9tICcuL3RyeFRva2VuJztcbmltcG9ydCB7IFR0cnggfSBmcm9tICcuL3R0cngnO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd0cngnLCBUcnguY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R0cngnLCBUdHJ4LmNyZWF0ZUluc3RhbmNlKTtcbiAgVHJ4VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==