@bitgo/account-lib 2.20.0-rc.28 → 2.20.0-rc.30

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 (191) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/browser/bitgo-account-lib.js +2 -0
  3. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +337 -0
  4. package/dist/resources/hbar/protobuf/BasicTypes.proto +424 -0
  5. package/dist/resources/hbar/protobuf/CryptoCreate.proto +47 -0
  6. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +33 -0
  7. package/dist/resources/hbar/protobuf/Duration.proto +28 -0
  8. package/dist/resources/hbar/protobuf/Timestamp.proto +34 -0
  9. package/dist/resources/hbar/protobuf/Transaction.proto +35 -0
  10. package/dist/resources/hbar/protobuf/TransactionBody.proto +24 -0
  11. package/dist/resources/hbar/protobuf/TransactionContents.proto +33 -0
  12. package/dist/resources/hbar/protobuf/hedera.d.ts +4612 -0
  13. package/dist/resources/hbar/protobuf/hedera.js +12192 -0
  14. package/dist/src/coin/algo/assetTransferBuilder.d.ts +42 -0
  15. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +1 -0
  16. package/dist/src/coin/algo/assetTransferBuilder.js +105 -0
  17. package/dist/src/coin/algo/errors.d.ts +11 -0
  18. package/dist/src/coin/algo/errors.d.ts.map +1 -0
  19. package/dist/src/coin/algo/errors.js +27 -0
  20. package/dist/src/coin/algo/ifaces.d.ts +46 -0
  21. package/dist/src/coin/algo/ifaces.d.ts.map +1 -0
  22. package/dist/src/coin/algo/ifaces.js +3 -0
  23. package/dist/src/coin/algo/index.d.ts +13 -0
  24. package/dist/src/coin/algo/index.d.ts.map +1 -0
  25. package/dist/src/coin/algo/index.js +47 -0
  26. package/dist/src/coin/algo/keyPair.d.ts +25 -0
  27. package/dist/src/coin/algo/keyPair.d.ts.map +1 -0
  28. package/dist/src/coin/algo/keyPair.js +77 -0
  29. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +104 -0
  30. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -0
  31. package/dist/src/coin/algo/keyRegistrationBuilder.js +239 -0
  32. package/dist/src/coin/algo/seedEncoding.d.ts +25 -0
  33. package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -0
  34. package/dist/src/coin/algo/seedEncoding.js +97 -0
  35. package/dist/src/coin/algo/transaction.d.ts +75 -0
  36. package/dist/src/coin/algo/transaction.d.ts.map +1 -0
  37. package/dist/src/coin/algo/transaction.js +251 -0
  38. package/dist/src/coin/algo/transactionBuilder.d.ts +204 -0
  39. package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -0
  40. package/dist/src/coin/algo/transactionBuilder.js +373 -0
  41. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +16 -0
  42. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -0
  43. package/dist/src/coin/algo/transactionBuilderFactory.js +52 -0
  44. package/dist/src/coin/algo/transferBuilder.d.ts +40 -0
  45. package/dist/src/coin/algo/transferBuilder.d.ts.map +1 -0
  46. package/dist/src/coin/algo/transferBuilder.js +89 -0
  47. package/dist/src/coin/algo/txnSchema.d.ts +7 -0
  48. package/dist/src/coin/algo/txnSchema.d.ts.map +1 -0
  49. package/dist/src/coin/algo/txnSchema.js +68 -0
  50. package/dist/src/coin/algo/utils.d.ts +249 -0
  51. package/dist/src/coin/algo/utils.d.ts.map +1 -0
  52. package/dist/src/coin/algo/utils.js +539 -0
  53. package/dist/src/coin/avaxc/index.d.ts +2 -3
  54. package/dist/src/coin/avaxc/index.d.ts.map +1 -1
  55. package/dist/src/coin/avaxc/index.js +5 -6
  56. package/dist/src/coin/avaxc/transactionBuilder.js +3 -3
  57. package/dist/src/coin/avaxc/transferBuilder.d.ts +1 -1
  58. package/dist/src/coin/avaxc/transferBuilder.d.ts.map +1 -1
  59. package/dist/src/coin/avaxc/transferBuilder.js +3 -3
  60. package/dist/src/coin/avaxc/utils.d.ts +1 -2
  61. package/dist/src/coin/avaxc/utils.d.ts.map +1 -1
  62. package/dist/src/coin/avaxc/utils.js +3 -3
  63. package/dist/src/coin/celo/index.d.ts +2 -3
  64. package/dist/src/coin/celo/index.d.ts.map +1 -1
  65. package/dist/src/coin/celo/index.js +5 -6
  66. package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
  67. package/dist/src/coin/celo/stakingBuilder.js +21 -22
  68. package/dist/src/coin/celo/stakingCall.d.ts +1 -1
  69. package/dist/src/coin/celo/stakingCall.js +3 -3
  70. package/dist/src/coin/celo/transaction.d.ts +2 -3
  71. package/dist/src/coin/celo/transaction.d.ts.map +1 -1
  72. package/dist/src/coin/celo/transaction.js +3 -3
  73. package/dist/src/coin/celo/transactionBuilder.d.ts +2 -3
  74. package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
  75. package/dist/src/coin/celo/transactionBuilder.js +4 -24
  76. package/dist/src/coin/celo/transferBuilder.d.ts +1 -1
  77. package/dist/src/coin/celo/transferBuilder.d.ts.map +1 -1
  78. package/dist/src/coin/celo/transferBuilder.js +3 -3
  79. package/dist/src/coin/celo/types.d.ts +1 -2
  80. package/dist/src/coin/celo/types.d.ts.map +1 -1
  81. package/dist/src/coin/celo/types.js +5 -5
  82. package/dist/src/coin/celo/utils.d.ts +1 -1
  83. package/dist/src/coin/celo/utils.d.ts.map +1 -1
  84. package/dist/src/coin/celo/utils.js +3 -3
  85. package/dist/src/coin/cspr/constants.d.ts +19 -0
  86. package/dist/src/coin/cspr/constants.d.ts.map +1 -0
  87. package/dist/src/coin/cspr/constants.js +28 -0
  88. package/dist/src/coin/cspr/delegateBuilder.d.ts +49 -0
  89. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -0
  90. package/dist/src/coin/cspr/delegateBuilder.js +111 -0
  91. package/dist/src/coin/cspr/ifaces.d.ts +69 -0
  92. package/dist/src/coin/cspr/ifaces.d.ts.map +1 -0
  93. package/dist/src/coin/cspr/ifaces.js +3 -0
  94. package/dist/src/coin/cspr/index.d.ts +6 -0
  95. package/dist/src/coin/cspr/index.d.ts.map +1 -0
  96. package/dist/src/coin/cspr/index.js +31 -0
  97. package/dist/src/coin/cspr/keyPair.d.ts +18 -0
  98. package/dist/src/coin/cspr/keyPair.d.ts.map +1 -0
  99. package/dist/src/coin/cspr/keyPair.js +75 -0
  100. package/dist/src/coin/cspr/transaction.d.ts +55 -0
  101. package/dist/src/coin/cspr/transaction.d.ts.map +1 -0
  102. package/dist/src/coin/cspr/transaction.js +227 -0
  103. package/dist/src/coin/cspr/transactionBuilder.d.ts +124 -0
  104. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -0
  105. package/dist/src/coin/cspr/transactionBuilder.js +312 -0
  106. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +46 -0
  107. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -0
  108. package/dist/src/coin/cspr/transactionBuilderFactory.js +98 -0
  109. package/dist/src/coin/cspr/transferBuilder.d.ts +39 -0
  110. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -0
  111. package/dist/src/coin/cspr/transferBuilder.js +106 -0
  112. package/dist/src/coin/cspr/undelegateBuilder.d.ts +49 -0
  113. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -0
  114. package/dist/src/coin/cspr/undelegateBuilder.js +111 -0
  115. package/dist/src/coin/cspr/utils.d.ts +188 -0
  116. package/dist/src/coin/cspr/utils.d.ts.map +1 -0
  117. package/dist/src/coin/cspr/utils.js +477 -0
  118. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +27 -0
  119. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -0
  120. package/dist/src/coin/cspr/walletInitializationBuilder.js +95 -0
  121. package/dist/src/coin/etc/index.d.ts +2 -4
  122. package/dist/src/coin/etc/index.d.ts.map +1 -1
  123. package/dist/src/coin/etc/index.js +6 -8
  124. package/dist/src/coin/etc/transactionBuilder.js +3 -3
  125. package/dist/src/coin/etc/transferBuilder.d.ts +1 -1
  126. package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -1
  127. package/dist/src/coin/etc/transferBuilder.js +3 -3
  128. package/dist/src/coin/etc/utils.d.ts +1 -2
  129. package/dist/src/coin/etc/utils.d.ts.map +1 -1
  130. package/dist/src/coin/etc/utils.js +3 -3
  131. package/dist/src/coin/hbar/coinTransferBuilder.d.ts +46 -0
  132. package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +1 -0
  133. package/dist/src/coin/hbar/coinTransferBuilder.js +143 -0
  134. package/dist/src/coin/hbar/constants.d.ts +8 -0
  135. package/dist/src/coin/hbar/constants.d.ts.map +1 -0
  136. package/dist/src/coin/hbar/constants.js +12 -0
  137. package/dist/src/coin/hbar/iface.d.ts +6 -0
  138. package/dist/src/coin/hbar/iface.d.ts.map +1 -1
  139. package/dist/src/coin/hbar/iface.js +1 -1
  140. package/dist/src/coin/hbar/ifaces.d.ts +26 -0
  141. package/dist/src/coin/hbar/ifaces.d.ts.map +1 -0
  142. package/dist/src/coin/hbar/ifaces.js +3 -0
  143. package/dist/src/coin/hbar/keyPair.js +2 -2
  144. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +35 -0
  145. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
  146. package/dist/src/coin/hbar/tokenAssociateBuilder.js +118 -0
  147. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +25 -0
  148. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +1 -0
  149. package/dist/src/coin/hbar/tokenTransferBuilder.js +115 -0
  150. package/dist/src/coin/hbar/transaction.d.ts +8 -1
  151. package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
  152. package/dist/src/coin/hbar/transaction.js +46 -10
  153. package/dist/src/coin/hbar/transactionBuilder.d.ts +2 -3
  154. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
  155. package/dist/src/coin/hbar/transactionBuilder.js +7 -21
  156. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +13 -3
  157. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
  158. package/dist/src/coin/hbar/transactionBuilderFactory.js +28 -17
  159. package/dist/src/coin/hbar/transferBuilder.d.ts +6 -26
  160. package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
  161. package/dist/src/coin/hbar/transferBuilder.js +13 -72
  162. package/dist/src/coin/hbar/utils.d.ts +54 -3
  163. package/dist/src/coin/hbar/utils.d.ts.map +1 -1
  164. package/dist/src/coin/hbar/utils.js +101 -5
  165. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +1 -1
  166. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
  167. package/dist/src/coin/hbar/walletInitializationBuilder.js +7 -7
  168. package/dist/src/coin/polygon/index.d.ts +2 -4
  169. package/dist/src/coin/polygon/index.d.ts.map +1 -1
  170. package/dist/src/coin/polygon/index.js +6 -8
  171. package/dist/src/coin/polygon/transferBuilder.d.ts +1 -1
  172. package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -1
  173. package/dist/src/coin/polygon/transferBuilder.js +3 -3
  174. package/dist/src/coin/polygon/utils.d.ts +1 -2
  175. package/dist/src/coin/polygon/utils.d.ts.map +1 -1
  176. package/dist/src/coin/polygon/utils.js +3 -3
  177. package/dist/src/coin/rbtc/index.d.ts +2 -4
  178. package/dist/src/coin/rbtc/index.d.ts.map +1 -1
  179. package/dist/src/coin/rbtc/index.js +6 -8
  180. package/dist/src/coin/rbtc/transactionBuilder.js +3 -3
  181. package/dist/src/coin/rbtc/transferBuilder.d.ts +1 -1
  182. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -1
  183. package/dist/src/coin/rbtc/transferBuilder.js +3 -3
  184. package/dist/src/coin/rbtc/utils.d.ts +1 -2
  185. package/dist/src/coin/rbtc/utils.d.ts.map +1 -1
  186. package/dist/src/coin/rbtc/utils.js +3 -3
  187. package/dist/src/index.d.ts +1 -1
  188. package/dist/src/index.d.ts.map +1 -1
  189. package/dist/src/index.js +2 -2
  190. package/dist/tsconfig.tsbuildinfo +4718 -2445
  191. package/package.json +9 -8
@@ -22,15 +22,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.isValidAddressWithPaymentId = exports.normalizeAddress = exports.getAddressDetails = exports.getBaseAddress = exports.isSameBaseAddress = exports.convertFromStellarPub = exports.createRawKey = exports.isValidMemo = exports.removePrefix = exports.stringifyTxTime = exports.stringifyAccountId = exports.isValidRawTransactionFormat = exports.isValidAmount = exports.isValidTimeString = exports.getCurrentTime = exports.isNodeEnvironment = exports.isValidPublicKey = exports.isValidTransactionId = exports.isValidAddress = exports.toUint8Array = exports.toHex = void 0;
25
+ exports.isTokenTransfer = exports.getHederaTokenNameFromId = exports.getHederaTokenIdFromName = exports.isValidHederaTokenID = exports.buildHederaAccountID = exports.buildHederaTokenID = exports.isValidAddressWithPaymentId = exports.normalizeAddress = exports.getAddressDetails = exports.getBaseAddress = exports.isSameBaseAddress = exports.convertFromStellarPub = exports.createRawKey = exports.isValidMemo = exports.removePrefix = exports.stringifyTxTime = exports.stringifyTokenId = exports.stringifyAccountId = exports.isValidRawTransactionFormat = exports.isValidAmount = exports.isValidTimeString = exports.getCurrentTime = exports.isNodeEnvironment = exports.isValidPublicKey = exports.isValidTransactionId = exports.isValidAddress = exports.toUint8Array = exports.toHex = void 0;
26
26
  const _ = __importStar(require("lodash"));
27
27
  const sdk_1 = require("@hashgraph/sdk");
28
+ const proto = __importStar(require("@hashgraph/proto"));
28
29
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
29
30
  const stellar = __importStar(require("stellar-sdk"));
30
31
  const url_1 = __importDefault(require("url"));
31
32
  const sdk_core_1 = require("@bitgo/sdk-core");
32
33
  Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return sdk_core_1.toHex; } });
33
34
  Object.defineProperty(exports, "toUint8Array", { enumerable: true, get: function () { return sdk_core_1.toUint8Array; } });
35
+ const statics_1 = require("@bitgo/statics");
34
36
  const MAX_TINYBARS_AMOUNT = new bignumber_js_1.default(2).pow(63).minus(1);
35
37
  /**
36
38
  * Returns whether the string is a valid Hedera account address
@@ -76,7 +78,7 @@ function isValidTransactionId(txId) {
76
78
  }
77
79
  exports.isValidTransactionId = isValidTransactionId;
78
80
  /**
79
- * Returns whether the string is a valid Hedera public key
81
+ Returns whether the string is a valid Hedera public key
80
82
  *
81
83
  * @param {string} key - The public key to be validated
82
84
  * @returns {boolean} - The validation result
@@ -159,17 +161,27 @@ exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
159
161
  /**
160
162
  * Returns a string representation of an {proto.IAccountID} object
161
163
  *
162
- * @param {proto} accountId - Account id to be cast to string
164
+ * @param {proto.IAccountID} accountId - Account id to be cast to string
163
165
  * @returns {string} - The string representation of the {proto.IAccountID}
164
166
  */
165
167
  function stringifyAccountId({ shardNum, realmNum, accountNum }) {
166
168
  return `${shardNum || 0}.${realmNum || 0}.${accountNum}`;
167
169
  }
168
170
  exports.stringifyAccountId = stringifyAccountId;
171
+ /**
172
+ * Returns a string representation of an {proto.ITokenID} object
173
+ *
174
+ * @param {proto.ITokenID} - token id to be cast to string
175
+ * @returns {string} - the string representation of the {proto.ITokenID}
176
+ */
177
+ function stringifyTokenId({ shardNum, realmNum, tokenNum }) {
178
+ return `${shardNum || 0}.${realmNum || 0}.${tokenNum}`;
179
+ }
180
+ exports.stringifyTokenId = stringifyTokenId;
169
181
  /**
170
182
  * Returns a string representation of an {proto.ITimestamp} object
171
183
  *
172
- * @param {proto} timestamp - Timestamp to be cast to string
184
+ * @param {proto.ITimestamp} timestamp - Timestamp to be cast to string
173
185
  * @returns {string} - The string representation of the {proto.ITimestamp}
174
186
  */
175
187
  function stringifyTxTime({ seconds, nanos }) {
@@ -312,4 +324,88 @@ function isValidAddressWithPaymentId(address) {
312
324
  }
313
325
  }
314
326
  exports.isValidAddressWithPaymentId = isValidAddressWithPaymentId;
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsd0NBQWlGO0FBRWpGLGdFQUFxQztBQUNyQyxxREFBdUM7QUFFdkMsOENBQXNCO0FBQ3RCLDhDQUFrRTtBQUN6RCxzRkFEQSxnQkFBSyxPQUNBO0FBQUUsNkZBREEsdUJBQVksT0FDQTtBQUU1QixNQUFNLG1CQUFtQixHQUFHLElBQUksc0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7UUFDNUUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUk7UUFDRixNQUFNLEdBQUcsR0FBRyxlQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFWRCx3Q0FVQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUk7UUFDRixNQUFNLEVBQUUsR0FBRyxtQkFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMs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LENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFDeEQsdUZBQXVGO1FBQ3ZGLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBQ0QsTUFBTSxNQUFNLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFCQUFxQixVQUFVLHdCQUF3QixDQUFDLENBQUM7S0FDL0U7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFdBQVc7UUFDcEIsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBN0JELDhDQTZCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFrQjtJQUNsRSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakMsT0FBTyxHQUFHLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztLQUN0QztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFMRCw0Q0FLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsT0FBZTtJQUN6RCxJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDckQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsa0VBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbklkLCBBY2NvdW50SWQsIFB1YmxpY0tleSwgUHJpdmF0ZUtleSB9IGZyb20gJ0BoYXNoZ3JhcGgvc2RrJztcbmltcG9ydCAqIGFzIHByb3RvIGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBBZGRyZXNzRGV0YWlscyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IHsgdG9IZXgsIHRvVWludDhBcnJheSwgVXRpbHNFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5leHBvcnQgeyB0b0hleCwgdG9VaW50OEFycmF5IH07XG5cbmNvbnN0IE1BWF9USU5ZQkFSU19BTU9VTlQgPSBuZXcgQmlnTnVtYmVyKDIpLnBvdyg2MykubWludXMoMSk7XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBIZWRlcmEgYWNjb3VudCBhZGRyZXNzXG4gKlxuICogSW4gYW55IGZvcm0sIGBzaGFyZGAgYW5kIGByZWFsbWAgYXJlIGFzc3VtZWQgdG8gYmUgMCBpZiBub3QgcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoYWRkcmVzcykgfHwgIWFkZHJlc3MubWF0Y2goL15cXGQrKD86KD89XFwuKShcXC5cXGQrKXsyfXwoPyFcXC4pKSQvKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGFjYyA9IEFjY291bnRJZC5mcm9tU3RyaW5nKGFkZHJlc3MpO1xuICAgIHJldHVybiAhXy5pc05hTihhY2MubnVtKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgSGVkZXJhIHRyYW5zYWN0aW9uIGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR4SWQgLSBUaGUgdHJhbnNhY3Rpb24gaWQgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUaGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXy5pc0VtcHR5KHR4SWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgdHggPSBUcmFuc2FjdGlvbklkLmZyb21TdHJpbmcodHhJZCk7XG4gICAgaWYgKF8uaXNOaWwodHguYWNjb3VudElkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIV8uaXNOYU4odHguYWNjb3VudElkLm51bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoa2V5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHB1YktleSA9IFB1YmxpY0tleS5mcm9tU3RyaW5nKGtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4gIV8uaXNOYU4ocHViS2V5LnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgbm9kZUpTLnByb2Nlc3MgZXhpc3QgYW5kIGlmIGEgbm9kZSB2ZXJzaW9uIGlzIGRlZmluZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gbm9kZUpTIGVudmlyb25tZW50XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdGltZSB3aXRoIG5hbm9zZWNvbmRzIHByZWNpc2lvblxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpOiBzdHJpbmcge1xuICBpZiAoaXNOb2RlRW52aXJvbm1lbnQoKSkge1xuICAgIGNvbnN0IG5hbm9zID0gcHJvY2Vzcy5ocnRpbWUoKVsxXTtcbiAgICBjb25zdCBzZWNvbmRzID0gKERhdGUubm93KCkgKiAxMDAwMDAwICsgbmFub3MpIC8gMTAwMDAwMDAwMDtcbiAgICByZXR1cm4gc2Vjb25kcy50b0ZpeGVkKDkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpKS50b0ZpeGVkKDkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCB0aW1lc3RhbXBcbiAqXG4gKiBOYW5vc2Vjb25kcyBhcmUgb3B0aW9uYWwgYW5kIGNhbiBiZSBwYXNzZWQgYWZ0ZXIgYSBkb3QsIGZvciBleGFtcGxlOiAxNTk1Mzc0NzIzLjM1Njk4MTY4OVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aW1lIC0gVGhlIHRpbWVzdGFtcCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVTdHJpbmcodGltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aW1lKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gVGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIChcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiZcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKSAmJlxuICAgIGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKE1BWF9USU5ZQkFSU19BTU9VTlQpXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCByYXcgdHJhbnNhY3Rpb24gYWNjb21tb2RhdGVzIHRvIGJpdGdvJ3MgcHJlZmVycmVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiAtIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBpc0FscGhhTnVtZXJpYyA9IHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgJiYgL15bXFxkYS1mQS1GXSskLy50ZXN0KHJhd1RyYW5zYWN0aW9uKTtcbiAgY29uc3QgaXNWYWxpZEJ1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcihyYXdUcmFuc2FjdGlvbikgJiYgISFVaW50OEFycmF5LmZyb20ocmF3VHJhbnNhY3Rpb24pO1xuXG4gIHJldHVybiBpc0FscGhhTnVtZXJpYyB8fCBpc1ZhbGlkQnVmZmVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklBY2NvdW50SUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG99IGFjY291bnRJZCAtIEFjY291bnQgaWQgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklBY2NvdW50SUR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlBY2NvdW50SWQoeyBzaGFyZE51bSwgcmVhbG1OdW0sIGFjY291bnROdW0gfTogcHJvdG8uSUFjY291bnRJRCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtzaGFyZE51bSB8fCAwfS4ke3JlYWxtTnVtIHx8IDB9LiR7YWNjb3VudE51bX1gO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklUaW1lc3RhbXB9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG99IHRpbWVzdGFtcCAtIFRpbWVzdGFtcCB0byBiZSBjYXN0IHRvIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB7cHJvdG8uSVRpbWVzdGFtcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVR4VGltZSh7IHNlY29uZHMsIG5hbm9zIH06IHByb3RvLklUaW1lc3RhbXApOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2Vjb25kc30uJHtuYW5vc31gO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgc3BlY2lmaWVkIHByZWZpeCBmcm9tIGEgc3RyaW5nIG9ubHkgaWYgaXQgc3RhcnRzIHdpdGggdGhhdCBwcmVmaXhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IC0gVGhlIHByZWZpeCB0byBiZSByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG9yaWdpbmFsIHN0cmluZywgdXN1YWxseSBhIHByaXZhdGUgb3IgcHVibGljIGtleVxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHdpdGhvdXQgcHJlZml4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmVmaXgocHJlZml4OiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4ga2V5LnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBrZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIG1lbW9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVtb1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVtbyhtZW1vOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICEoXy5pc0VtcHR5KG1lbW8pIHx8IEJ1ZmZlci5mcm9tKG1lbW8pLmxlbmd0aCA+IDEwMCk7XG59XG5cbi8qKlxuICogVXNlcyB0aGUgbmF0aXZlIGhhc2hncmFwaCBTREsgZnVuY3Rpb24gdG8gZ2V0IGEgcmF3IGtleS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gUHJpdmF0ZSBrZXlcbiAqIEByZXR1cm5zIHtQcml2YXRlS2V5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmF3S2V5KHBydjogc3RyaW5nKTogUHJpdmF0ZUtleSB7XG4gIHJldHVybiBQcml2YXRlS2V5LmZyb21TdHJpbmcocHJ2KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0ZWxsYXIgcHVibGljIGtleSB0byBlZDI1NTE5IGhleCBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RlbGxhclB1YlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRGcm9tU3RlbGxhclB1YihzdGVsbGFyUHViOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHN0ZWxsYXJQdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSB2YWxpZCBzdGVsbGFyIHB1Yi4nKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0tleTogQnVmZmVyID0gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShzdGVsbGFyUHViKTtcbiAgcmV0dXJuIHJhd0tleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHR3byBhZGRyZXNzZXMgaGF2ZSB0aGUgc2FtZSBiYXNlIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IGJhc2VBZGRyZXNzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZUJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgYmFzZUFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICByZXR1cm4gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzcykgPT09IGdldEJhc2VBZGRyZXNzKGJhc2VBZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIGFkZHJlc3MgcG9ydGlvbiBvZiBhbiBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3NcbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gdGhlIGJhc2UgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzLmFkZHJlc3M7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhZGRyZXNzIGludG8gYWRkcmVzcyBhbmQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdBZGRyZXNzXG4gKiBAcmV0dXJucyB7QWRkcmVzc0RldGFpbHN9IC0gb2JqZWN0IGNvbnRhaW5pbmcgYWRkcmVzcyBhbmQgbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0RldGFpbHMocmF3QWRkcmVzczogc3RyaW5nKTogQWRkcmVzc0RldGFpbHMge1xuICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IHVybC5wYXJzZShyYXdBZGRyZXNzKTtcbiAgY29uc3QgcXVlcnlEZXRhaWxzID0gYWRkcmVzc0RldGFpbHMucXVlcnkgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKGFkZHJlc3NEZXRhaWxzLnF1ZXJ5KSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmFzZUFkZHJlc3MgPSA8c3RyaW5nPmFkZHJlc3NEZXRhaWxzLnBhdGhuYW1lO1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGJhc2VBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7cmF3QWRkcmVzc31gKTtcbiAgfVxuXG4gIC8vIGFkZHJlc3MgZG9lc24ndCBoYXZlIGEgbWVtbyBpZCBvciBtZW1vSWQgaXMgZW1wdHlcbiAgaWYgKGJhc2VBZGRyZXNzID09PSByYXdBZGRyZXNzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IHJhd0FkZHJlc3MsXG4gICAgICBtZW1vSWQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFxdWVyeURldGFpbHMgfHwgXy5pc05pbChxdWVyeURldGFpbHMuZ2V0KCdtZW1vSWQnKSkpIHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzLCB0aGUgcXVlcnkgZGV0YWlscyBuZWVkIHRvIGNvbnRhaW4gdGhlIG1lbW8gaWQgcHJvcGVydHlcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZDogJHtyYXdBZGRyZXNzfWApO1xuICB9XG4gIGNvbnN0IG1lbW9JZCA9IDxzdHJpbmc+cXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJyk7XG4gIGlmICghaXNWYWxpZE1lbW8obWVtb0lkKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICcke3Jhd0FkZHJlc3N9JywgbWVtb0lkIGlzIG5vdCB2YWxpZGApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBiYXNlQWRkcmVzcyxcbiAgICBtZW1vSWQsXG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIHJldHVybiBhZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7QWRkcmVzc0RldGFpbHN9IGFkZHJlc3NEZXRhaWxzIC0gQWRkcmVzcyB3aGljaCB0byBhcHBlbmQgbWVtbyBpZFxuICogQHJldHVybnMge3N0cmluZ30gLSBBZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWRkcmVzcyh7IGFkZHJlc3MsIG1lbW9JZCB9OiBBZGRyZXNzRGV0YWlscyk6IHN0cmluZyB7XG4gIGlmIChtZW1vSWQgJiYgaXNWYWxpZE1lbW8obWVtb0lkKSkge1xuICAgIHJldHVybiBgJHthZGRyZXNzfT9tZW1vSWQ9JHttZW1vSWR9YDtcbiAgfVxuICByZXR1cm4gYWRkcmVzcztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgYSB2YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQWRkcmVzcyBpbiB0aGUgZm9ybSA8YWRkcmVzcz4/bWVtb0lkPTxtZW1vSWQ+XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3NXaXRoUGF5bWVudElkKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gICAgcmV0dXJuIGFkZHJlc3MgPT09IG5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzc0RldGFpbHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
327
+ /**
328
+ <<<<<<< HEAD
329
+ * Build hedera {proto.TokenID} object from token ID string
330
+ *
331
+ * @param {string} tokenID - The token ID to build
332
+ * @returns {proto.TokenID} - The resulting proto TokenID object
333
+ */
334
+ function buildHederaTokenID(tokenID) {
335
+ const tokenData = sdk_1.TokenId.fromString(tokenID);
336
+ return new proto.TokenID({
337
+ tokenNum: tokenData.num,
338
+ realmNum: tokenData.realm,
339
+ shardNum: tokenData.shard,
340
+ });
341
+ }
342
+ exports.buildHederaTokenID = buildHederaTokenID;
343
+ /**
344
+ * Build hedera {proto.AccountID} object from account ID string
345
+ *
346
+ * @param {string} accountID - The account ID to build
347
+ * @returns {proto} - The resulting proto AccountID object
348
+ */
349
+ function buildHederaAccountID(accountID) {
350
+ const accountId = sdk_1.AccountId.fromString(accountID);
351
+ return new proto.AccountID({
352
+ shardNum: accountId.shard,
353
+ realmNum: accountId.realm,
354
+ accountNum: accountId.num,
355
+ });
356
+ }
357
+ exports.buildHederaAccountID = buildHederaAccountID;
358
+ /**
359
+ * Check if Hedera token ID is valid and supported
360
+ *
361
+ * @param {string} tokenId - The token ID to validate
362
+ * @returns {boolean} - True if tokenId is valid and supported
363
+ */
364
+ function isValidHederaTokenID(tokenId) {
365
+ const isFormatValid = !_.isEmpty(tokenId) && !!tokenId.match(/^\d+(?:(?=\.)(\.\d+){2}|(?!\.))$/);
366
+ const isTokenSupported = getHederaTokenNameFromId(tokenId) !== undefined;
367
+ return isFormatValid && isTokenSupported;
368
+ }
369
+ exports.isValidHederaTokenID = isValidHederaTokenID;
370
+ /**
371
+ * Get the associated hedera token ID from token name, if supported
372
+ *
373
+ * @param {string} tokenName - The hedera token name
374
+ * @returns {boolean} - The associated token ID or undefined if not supported
375
+ */
376
+ function getHederaTokenIdFromName(tokenName) {
377
+ if (statics_1.coins.has(tokenName)) {
378
+ const token = statics_1.coins.get(tokenName);
379
+ if (token.isToken && token instanceof statics_1.HederaToken) {
380
+ return token.tokenId;
381
+ }
382
+ }
383
+ return undefined;
384
+ }
385
+ exports.getHederaTokenIdFromName = getHederaTokenIdFromName;
386
+ /**
387
+ * Get the associated hedera token from token ID, if supported
388
+ *
389
+ * @param tokenId - The token address
390
+ * @returns {BaseCoin} - BaseCoin object for the matching token
391
+ */
392
+ function getHederaTokenNameFromId(tokenId) {
393
+ const tokensArray = statics_1.coins
394
+ .filter((coin) => {
395
+ return coin instanceof statics_1.HederaToken && coin.tokenId === tokenId;
396
+ })
397
+ .map((token) => token); // flatten coin map to array
398
+ return tokensArray.length > 0 ? tokensArray[0] : undefined;
399
+ }
400
+ exports.getHederaTokenNameFromId = getHederaTokenNameFromId;
401
+ /**
402
+ * Return boolean indicating whether input is a valid token transfer transaction
403
+ *
404
+ * @param {proto.ICryptoTransferTransactionBody | null} transferTxBody is a transfer transaction body
405
+ * @returns {boolean} true is input is a valid token transfer transaction
406
+ */
407
+ function isTokenTransfer(transferTxBody) {
408
+ return !!transferTxBody && !!transferTxBody.tokenTransfers && transferTxBody.tokenTransfers.length > 0;
409
+ }
410
+ exports.isTokenTransfer = isTokenTransfer;
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsd0NBQTBGO0FBQzFGLHdEQUEwQztBQUMxQyxnRUFBcUM7QUFDckMscURBQXVDO0FBRXZDLDhDQUFzQjtBQUN0Qiw4Q0FBa0U7QUFFekQsc0ZBRkEsZ0JBQUssT0FFQTtBQUFFLDZGQUZBLHVCQUFZLE9BRUE7QUFENUIsNENBQThEO0FBRzlELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsRUFBRTtRQUM1RSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSTtRQUNGLE1BQU0sR0FBRyxHQUFHLGVBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVZELHdDQVVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFZO0lBQy9DLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSTtRQUNGLE1BQU0sRUFBRSxHQUFHLG1CQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbkM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBYkQsb0RBYUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsZUFBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNwQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFWRCw0Q0FVQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUI7SUFDL0IsT0FBTyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7QUFDeEYsQ0FBQztBQUZELDhDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWM7SUFDNUIsSUFBSSxpQkFBaUIsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hFO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCw4Q0FFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE1BQWM7SUFDMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FDTCxlQUFlLENBQUMsU0FBUyxFQUFFO1FBQzNCLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDekMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQ3pELENBQUM7QUFDSixDQUFDO0FBUEQsc0NBT0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLGNBQW1CO0lBQzdELE1BQU0sY0FBYyxHQUFHLE9BQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0YsT0FBTyxjQUFjLElBQUksYUFBYSxDQUFDO0FBQ3pDLENBQUM7QUFMRCxrRUFLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBb0I7SUFDckYsT0FBTyxHQUFHLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztBQUMzRCxDQUFDO0FBRkQsZ0RBRUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQWtCO0lBQy9FLE9BQU8sR0FBRyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUZELDRDQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFvQjtJQUNsRSxPQUFPLEdBQUcsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQ0FFQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsR0FBVztJQUN0RCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUxELG9DQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFGRCxrQ0FFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEdBQVc7SUFDdEMsT0FBTyxnQkFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRkQsb0NBRUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFVBQWtCO0lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE1BQU0sTUFBTSxHQUFXLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFQRCxzREFPQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE9BQWUsRUFBRSxXQUFtQjtJQUNwRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekMsTUFBTSxJQUFJLHFCQUFVLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDckQ7SUFDRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUxELDhDQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7QUFDaEMsQ0FBQztBQUhELHdDQUdDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxVQUFrQjtJQUNsRCxNQUFNLGNBQWMsR0FBRyxhQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xHLE1BQU0sV0FBVyxHQUFXLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNoQyxNQUFNLElBQUkscUJBQVUsQ0FBQyxvQkFBb0IsVUFBVSxFQUFFLENBQUMsQ0FBQztLQUN4RDtJQUVELG9EQUFvRDtJQUNwRCxJQUFJLFdBQVcsS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTztZQUNMLE9BQU8sRUFBRSxVQUFVO1lBQ25CLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFDeEQsdUZBQXVGO1FBQ3ZGLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBQ0QsTUFBTSxNQUFNLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFCQUFxQixVQUFVLHdCQUF3QixDQUFDLENBQUM7S0FDL0U7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFdBQVc7UUFDcEIsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBN0JELDhDQTZCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFrQjtJQUNsRSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakMsT0FBTyxHQUFHLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztLQUN0QztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFMRCw0Q0FLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsT0FBZTtJQUN6RCxJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDckQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsa0VBT0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxPQUFlO0lBQ2hELE1BQU0sU0FBUyxHQUFHLGFBQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDdkIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHO1FBQ3ZCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSztRQUN6QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVBELGdEQU9DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxTQUFpQjtJQUNwRCxNQUFNLFNBQVMsR0FBRyxlQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3pCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSztRQUN6QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDekIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHO0tBQzFCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCxvREFPQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBZTtJQUNsRCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNqRyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUV6RSxPQUFPLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQztBQUMzQyxDQUFDO0FBTEQsb0RBS0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLFNBQWlCO0lBQ3hELElBQUksZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN4QixNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLFlBQVkscUJBQVcsRUFBRTtZQUNqRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEI7S0FDRjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFURCw0REFTQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsT0FBZTtJQUN0RCxNQUFNLFdBQVcsR0FBRyxlQUFLO1NBQ3RCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2YsT0FBTyxJQUFJLFlBQVkscUJBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztJQUNqRSxDQUFDLENBQUM7U0FDRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBRXRELE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzdELENBQUM7QUFSRCw0REFRQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGNBQTJEO0lBQ3pGLE9BQU8sQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDekcsQ0FBQztBQUZELDBDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQWNjb3VudElkLCBQcml2YXRlS2V5LCBQdWJsaWNLZXksIFRva2VuSWQsIFRyYW5zYWN0aW9uSWQgfSBmcm9tICdAaGFzaGdyYXBoL3Nkayc7XG5pbXBvcnQgKiBhcyBwcm90byBmcm9tICdAaGFzaGdyYXBoL3Byb3RvJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0IHsgQWRkcmVzc0RldGFpbHMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IHRvSGV4LCB0b1VpbnQ4QXJyYXksIFV0aWxzRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIGNvaW5zLCBIZWRlcmFUb2tlbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IHRvSGV4LCB0b1VpbnQ4QXJyYXkgfTtcblxuY29uc3QgTUFYX1RJTllCQVJTX0FNT1VOVCA9IG5ldyBCaWdOdW1iZXIoMikucG93KDYzKS5taW51cygxKTtcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBhY2NvdW50IGFkZHJlc3NcbiAqXG4gKiBJbiBhbnkgZm9ybSwgYHNoYXJkYCBhbmQgYHJlYWxtYCBhcmUgYXNzdW1lZCB0byBiZSAwIGlmIG5vdCBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKF8uaXNFbXB0eShhZGRyZXNzKSB8fCAhYWRkcmVzcy5tYXRjaCgvXlxcZCsoPzooPz1cXC4pKFxcLlxcZCspezJ9fCg/IVxcLikpJC8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgYWNjID0gQWNjb3VudElkLmZyb21TdHJpbmcoYWRkcmVzcyk7XG4gICAgcmV0dXJuICFfLmlzTmFOKGFjYy5udW0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBIZWRlcmEgdHJhbnNhY3Rpb24gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhJZCAtIFRoZSB0cmFuc2FjdGlvbiBpZCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkodHhJZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCB0eCA9IFRyYW5zYWN0aW9uSWQuZnJvbVN0cmluZyh0eElkKTtcbiAgICBpZiAoXy5pc05pbCh0eC5hY2NvdW50SWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhXy5pc05hTih0eC5hY2NvdW50SWQubnVtKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoa2V5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHB1YktleSA9IFB1YmxpY0tleS5mcm9tU3RyaW5nKGtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4gIV8uaXNOYU4ocHViS2V5LnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgbm9kZUpTLnByb2Nlc3MgZXhpc3QgYW5kIGlmIGEgbm9kZSB2ZXJzaW9uIGlzIGRlZmluZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gbm9kZUpTIGVudmlyb25tZW50XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdGltZSB3aXRoIG5hbm9zZWNvbmRzIHByZWNpc2lvblxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpOiBzdHJpbmcge1xuICBpZiAoaXNOb2RlRW52aXJvbm1lbnQoKSkge1xuICAgIGNvbnN0IG5hbm9zID0gcHJvY2Vzcy5ocnRpbWUoKVsxXTtcbiAgICBjb25zdCBzZWNvbmRzID0gKERhdGUubm93KCkgKiAxMDAwMDAwICsgbmFub3MpIC8gMTAwMDAwMDAwMDtcbiAgICByZXR1cm4gc2Vjb25kcy50b0ZpeGVkKDkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpKS50b0ZpeGVkKDkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCB0aW1lc3RhbXBcbiAqXG4gKiBOYW5vc2Vjb25kcyBhcmUgb3B0aW9uYWwgYW5kIGNhbiBiZSBwYXNzZWQgYWZ0ZXIgYSBkb3QsIGZvciBleGFtcGxlOiAxNTk1Mzc0NzIzLjM1Njk4MTY4OVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aW1lIC0gVGhlIHRpbWVzdGFtcCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVTdHJpbmcodGltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aW1lKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gVGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIChcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiZcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKSAmJlxuICAgIGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKE1BWF9USU5ZQkFSU19BTU9VTlQpXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCByYXcgdHJhbnNhY3Rpb24gYWNjb21tb2RhdGVzIHRvIGJpdGdvJ3MgcHJlZmVycmVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiAtIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBpc0FscGhhTnVtZXJpYyA9IHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgJiYgL15bXFxkYS1mQS1GXSskLy50ZXN0KHJhd1RyYW5zYWN0aW9uKTtcbiAgY29uc3QgaXNWYWxpZEJ1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcihyYXdUcmFuc2FjdGlvbikgJiYgISFVaW50OEFycmF5LmZyb20ocmF3VHJhbnNhY3Rpb24pO1xuXG4gIHJldHVybiBpc0FscGhhTnVtZXJpYyB8fCBpc1ZhbGlkQnVmZmVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklBY2NvdW50SUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG8uSUFjY291bnRJRH0gYWNjb3VudElkIC0gQWNjb3VudCBpZCB0byBiZSBjYXN0IHRvIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB7cHJvdG8uSUFjY291bnRJRH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUFjY291bnRJZCh7IHNoYXJkTnVtLCByZWFsbU51bSwgYWNjb3VudE51bSB9OiBwcm90by5JQWNjb3VudElEKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3NoYXJkTnVtIHx8IDB9LiR7cmVhbG1OdW0gfHwgMH0uJHthY2NvdW50TnVtfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB7cHJvdG8uSVRva2VuSUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG8uSVRva2VuSUR9IC0gdG9rZW4gaWQgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklUb2tlbklEfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VG9rZW5JZCh7IHNoYXJkTnVtLCByZWFsbU51bSwgdG9rZW5OdW0gfTogcHJvdG8uSVRva2VuSUQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2hhcmROdW0gfHwgMH0uJHtyZWFsbU51bSB8fCAwfS4ke3Rva2VuTnVtfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB7cHJvdG8uSVRpbWVzdGFtcH0gb2JqZWN0XG4gKlxuICogQHBhcmFtIHtwcm90by5JVGltZXN0YW1wfSB0aW1lc3RhbXAgLSBUaW1lc3RhbXAgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklUaW1lc3RhbXB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlUeFRpbWUoeyBzZWNvbmRzLCBuYW5vcyB9OiBwcm90by5JVGltZXN0YW1wKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3NlY29uZHN9LiR7bmFub3N9YDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSBhIHN0cmluZyBvbmx5IGlmIGl0IHN0YXJ0cyB3aXRoIHRoYXQgcHJlZml4XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYmUgcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBvcmlnaW5hbCBzdHJpbmcsIHVzdWFsbHkgYSBwcml2YXRlIG9yIHB1YmxpYyBrZXlcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyB3aXRob3V0IHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJlZml4KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIGtleS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoaXMgaXMgYSB2YWxpZCBtZW1vXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhKF8uaXNFbXB0eShtZW1vKSB8fCBCdWZmZXIuZnJvbShtZW1vKS5sZW5ndGggPiAxMDApO1xufVxuXG4vKipcbiAqIFVzZXMgdGhlIG5hdGl2ZSBoYXNoZ3JhcGggU0RLIGZ1bmN0aW9uIHRvIGdldCBhIHJhdyBrZXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIFByaXZhdGUga2V5XG4gKiBAcmV0dXJucyB7UHJpdmF0ZUtleX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJhd0tleShwcnY6IHN0cmluZyk6IFByaXZhdGVLZXkge1xuICByZXR1cm4gUHJpdmF0ZUtleS5mcm9tU3RyaW5nKHBydik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdGVsbGFyIHB1YmxpYyBrZXkgdG8gZWQyNTUxOSBoZXggZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ZWxsYXJQdWJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RnJvbVN0ZWxsYXJQdWIoc3RlbGxhclB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShzdGVsbGFyUHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgdmFsaWQgc3RlbGxhciBwdWIuJyk7XG4gIH1cblxuICBjb25zdCByYXdLZXk6IEJ1ZmZlciA9IHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlQdWJsaWNLZXkoc3RlbGxhclB1Yik7XG4gIHJldHVybiByYXdLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0d28gYWRkcmVzc2VzIGhhdmUgdGhlIHNhbWUgYmFzZSBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlQWRkcmVzc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVCYXNlQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGJhc2VBZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzc1dpdGhQYXltZW50SWQoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgcmV0dXJuIGdldEJhc2VBZGRyZXNzKGFkZHJlc3MpID09PSBnZXRCYXNlQWRkcmVzcyhiYXNlQWRkcmVzcyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSBhZGRyZXNzIHBvcnRpb24gb2YgYW4gYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzXG4gKiBAcmV0dXJucyB7U3RyaW5nfSAtIHRoZSBiYXNlIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gIHJldHVybiBhZGRyZXNzRGV0YWlscy5hZGRyZXNzO1xufVxuXG4vKipcbiAqIFByb2Nlc3MgYWRkcmVzcyBpbnRvIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3QWRkcmVzc1xuICogQHJldHVybnMge0FkZHJlc3NEZXRhaWxzfSAtIG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NEZXRhaWxzKHJhd0FkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB1cmwucGFyc2UocmF3QWRkcmVzcyk7XG4gIGNvbnN0IHF1ZXJ5RGV0YWlscyA9IGFkZHJlc3NEZXRhaWxzLnF1ZXJ5ID8gbmV3IFVSTFNlYXJjaFBhcmFtcyhhZGRyZXNzRGV0YWlscy5xdWVyeSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VBZGRyZXNzID0gPHN0cmluZz5hZGRyZXNzRGV0YWlscy5wYXRobmFtZTtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhiYXNlQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke3Jhd0FkZHJlc3N9YCk7XG4gIH1cblxuICAvLyBhZGRyZXNzIGRvZXNuJ3QgaGF2ZSBhIG1lbW8gaWQgb3IgbWVtb0lkIGlzIGVtcHR5XG4gIGlmIChiYXNlQWRkcmVzcyA9PT0gcmF3QWRkcmVzcykge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiByYXdBZGRyZXNzLFxuICAgICAgbWVtb0lkOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcXVlcnlEZXRhaWxzIHx8IF8uaXNOaWwocXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJykpKSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgcHJvcGVydGllcywgdGhlIHF1ZXJ5IGRldGFpbHMgbmVlZCB0byBjb250YWluIHRoZSBtZW1vIGlkIHByb3BlcnR5XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWQ6ICR7cmF3QWRkcmVzc31gKTtcbiAgfVxuICBjb25zdCBtZW1vSWQgPSA8c3RyaW5nPnF1ZXJ5RGV0YWlscy5nZXQoJ21lbW9JZCcpO1xuICBpZiAoIWlzVmFsaWRNZW1vKG1lbW9JZCkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAnJHtyYXdBZGRyZXNzfScsIG1lbW9JZCBpcyBub3QgdmFsaWRgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogYmFzZUFkZHJlc3MsXG4gICAgbWVtb0lkLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFuZCByZXR1cm4gYWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge0FkZHJlc3NEZXRhaWxzfSBhZGRyZXNzRGV0YWlscyAtIEFkZHJlc3Mgd2hpY2ggdG8gYXBwZW5kIG1lbW8gaWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gQWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFkZHJlc3MoeyBhZGRyZXNzLCBtZW1vSWQgfTogQWRkcmVzc0RldGFpbHMpOiBzdHJpbmcge1xuICBpZiAobWVtb0lkICYmIGlzVmFsaWRNZW1vKG1lbW9JZCkpIHtcbiAgICByZXR1cm4gYCR7YWRkcmVzc30/bWVtb0lkPSR7bWVtb0lkfWA7XG4gIH1cbiAgcmV0dXJuIGFkZHJlc3M7XG59XG5cbi8qKlxuICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIEFkZHJlc3MgaW4gdGhlIGZvcm0gPGFkZHJlc3M+P21lbW9JZD08bWVtb0lkPlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgIHJldHVybiBhZGRyZXNzID09PSBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3NEZXRhaWxzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbjw8PDw8PDwgSEVBRFxuICogQnVpbGQgaGVkZXJhIHtwcm90by5Ub2tlbklEfSBvYmplY3QgZnJvbSB0b2tlbiBJRCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5JRCAtIFRoZSB0b2tlbiBJRCB0byBidWlsZFxuICogQHJldHVybnMge3Byb3RvLlRva2VuSUR9IC0gVGhlIHJlc3VsdGluZyBwcm90byBUb2tlbklEIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRIZWRlcmFUb2tlbklEKHRva2VuSUQ6IHN0cmluZyk6IHByb3RvLlRva2VuSUQge1xuICBjb25zdCB0b2tlbkRhdGEgPSBUb2tlbklkLmZyb21TdHJpbmcodG9rZW5JRCk7XG4gIHJldHVybiBuZXcgcHJvdG8uVG9rZW5JRCh7XG4gICAgdG9rZW5OdW06IHRva2VuRGF0YS5udW0sXG4gICAgcmVhbG1OdW06IHRva2VuRGF0YS5yZWFsbSxcbiAgICBzaGFyZE51bTogdG9rZW5EYXRhLnNoYXJkLFxuICB9KTtcbn1cblxuLyoqXG4gKiBCdWlsZCBoZWRlcmEge3Byb3RvLkFjY291bnRJRH0gb2JqZWN0IGZyb20gYWNjb3VudCBJRCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudElEIC0gVGhlIGFjY291bnQgSUQgdG8gYnVpbGRcbiAqIEByZXR1cm5zIHtwcm90b30gLSBUaGUgcmVzdWx0aW5nIHByb3RvIEFjY291bnRJRCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSGVkZXJhQWNjb3VudElEKGFjY291bnRJRDogc3RyaW5nKTogcHJvdG8uQWNjb3VudElEIHtcbiAgY29uc3QgYWNjb3VudElkID0gQWNjb3VudElkLmZyb21TdHJpbmcoYWNjb3VudElEKTtcbiAgcmV0dXJuIG5ldyBwcm90by5BY2NvdW50SUQoe1xuICAgIHNoYXJkTnVtOiBhY2NvdW50SWQuc2hhcmQsXG4gICAgcmVhbG1OdW06IGFjY291bnRJZC5yZWFsbSxcbiAgICBhY2NvdW50TnVtOiBhY2NvdW50SWQubnVtLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBIZWRlcmEgdG9rZW4gSUQgaXMgdmFsaWQgYW5kIHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbklkIC0gVGhlIHRva2VuIElEIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIHRva2VuSWQgaXMgdmFsaWQgYW5kIHN1cHBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhlZGVyYVRva2VuSUQodG9rZW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGlzRm9ybWF0VmFsaWQgPSAhXy5pc0VtcHR5KHRva2VuSWQpICYmICEhdG9rZW5JZC5tYXRjaCgvXlxcZCsoPzooPz1cXC4pKFxcLlxcZCspezJ9fCg/IVxcLikpJC8pO1xuICBjb25zdCBpc1Rva2VuU3VwcG9ydGVkID0gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHRva2VuSWQpICE9PSB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGlzRm9ybWF0VmFsaWQgJiYgaXNUb2tlblN1cHBvcnRlZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFzc29jaWF0ZWQgaGVkZXJhIHRva2VuIElEIGZyb20gdG9rZW4gbmFtZSwgaWYgc3VwcG9ydGVkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuTmFtZSAtIFRoZSBoZWRlcmEgdG9rZW4gbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIGFzc29jaWF0ZWQgdG9rZW4gSUQgb3IgdW5kZWZpbmVkIGlmIG5vdCBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZSh0b2tlbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChjb2lucy5oYXModG9rZW5OYW1lKSkge1xuICAgIGNvbnN0IHRva2VuID0gY29pbnMuZ2V0KHRva2VuTmFtZSk7XG4gICAgaWYgKHRva2VuLmlzVG9rZW4gJiYgdG9rZW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgICAgcmV0dXJuIHRva2VuLnRva2VuSWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFzc29jaWF0ZWQgaGVkZXJhIHRva2VuIGZyb20gdG9rZW4gSUQsIGlmIHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB0b2tlbklkIC0gVGhlIHRva2VuIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtCYXNlQ29pbn0gLSBCYXNlQ29pbiBvYmplY3QgZm9yIHRoZSBtYXRjaGluZyB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHRva2VuSWQ6IHN0cmluZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRva2Vuc0FycmF5ID0gY29pbnNcbiAgICAuZmlsdGVyKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gY29pbiBpbnN0YW5jZW9mIEhlZGVyYVRva2VuICYmIGNvaW4udG9rZW5JZCA9PT0gdG9rZW5JZDtcbiAgICB9KVxuICAgIC5tYXAoKHRva2VuKSA9PiB0b2tlbik7IC8vIGZsYXR0ZW4gY29pbiBtYXAgdG8gYXJyYXlcblxuICByZXR1cm4gdG9rZW5zQXJyYXkubGVuZ3RoID4gMCA/IHRva2Vuc0FycmF5WzBdIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gKlxuICogQHBhcmFtIHtwcm90by5JQ3J5cHRvVHJhbnNmZXJUcmFuc2FjdGlvbkJvZHkgfCBudWxsfSB0cmFuc2ZlclR4Qm9keSBpcyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGJvZHlcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlzIGlucHV0IGlzIGEgdmFsaWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVG9rZW5UcmFuc2Zlcih0cmFuc2ZlclR4Qm9keTogcHJvdG8uSUNyeXB0b1RyYW5zZmVyVHJhbnNhY3Rpb25Cb2R5IHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISF0cmFuc2ZlclR4Qm9keSAmJiAhIXRyYW5zZmVyVHhCb2R5LnRva2VuVHJhbnNmZXJzICYmIHRyYW5zZmVyVHhCb2R5LnRva2VuVHJhbnNmZXJzLmxlbmd0aCA+IDA7XG59XG4iXX0=
@@ -10,7 +10,7 @@ export declare class WalletInitializationBuilder extends TransactionBuilder {
10
10
  /**
11
11
  *
12
12
  * @param {boolean} rawKeys - Defines if the owners keys are obtained in raw or protocol default format
13
- * @returns {proto} - The wallet threshold keys
13
+ * @returns {proto.ThresholdKey} - The wallet threshold keys
14
14
  */
15
15
  private buildOwnersKeys;
16
16
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAa,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,OAAO,CAAgB;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IASlC,OAAO,CAAC,UAAU;IAUlB;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgB5B,uBAAuB,IAAI,IAAI;CAahC"}
1
+ {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,OAAO,CAAgB;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAQlC,OAAO,CAAC,UAAU;IAUlB;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkB5B,uBAAuB,IAAI,IAAI;CAahC"}
@@ -26,6 +26,7 @@ const sdk_core_1 = require("@bitgo/sdk-core");
26
26
  const transactionBuilder_1 = require("./transactionBuilder");
27
27
  const utils_1 = require("./utils");
28
28
  const _1 = require("./");
29
+ const constants_1 = require("./constants");
29
30
  class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
30
31
  constructor(_coinConfig) {
31
32
  super(_coinConfig);
@@ -45,7 +46,7 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
45
46
  /**
46
47
  *
47
48
  * @param {boolean} rawKeys - Defines if the owners keys are obtained in raw or protocol default format
48
- * @returns {proto} - The wallet threshold keys
49
+ * @returns {proto.ThresholdKey} - The wallet threshold keys
49
50
  */
50
51
  buildOwnersKeys(rawKeys = true) {
51
52
  return this._owners.reduce((tKeys, key) => {
@@ -60,7 +61,6 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
60
61
  /** @inheritdoc */
61
62
  initBuilder(tx) {
62
63
  super.initBuilder(tx);
63
- this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
64
64
  const createAcc = tx.txBody.cryptoCreateAccount;
65
65
  if (createAcc && createAcc.key && createAcc.key.thresholdKey) {
66
66
  this.initOwners(createAcc.key.thresholdKey);
@@ -82,8 +82,8 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
82
82
  * @returns {WalletInitializationBuilder} - This wallet initialization builder
83
83
  */
84
84
  owner(address) {
85
- if (this._owners.length >= transactionBuilder_1.DEFAULT_M) {
86
- throw new sdk_core_1.BuildTransactionError('A maximum of ' + transactionBuilder_1.DEFAULT_M + ' owners can be set for a multisig wallet');
85
+ if (this._owners.length >= constants_1.DEFAULT_SIGNER_NUMBER) {
86
+ throw new sdk_core_1.BuildTransactionError('A maximum of ' + constants_1.DEFAULT_SIGNER_NUMBER + ' owners can be set for a multisig wallet');
87
87
  }
88
88
  if (!utils_1.isValidPublicKey(address)) {
89
89
  throw new sdk_core_1.BuildTransactionError('Invalid address: ' + address);
@@ -100,11 +100,11 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
100
100
  if (this._owners === undefined) {
101
101
  throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing wallet owners');
102
102
  }
103
- if (this._owners.length !== transactionBuilder_1.DEFAULT_M) {
104
- throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${transactionBuilder_1.DEFAULT_M}, found: ${this._owners.length}`);
103
+ if (this._owners.length !== constants_1.DEFAULT_SIGNER_NUMBER) {
104
+ throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${constants_1.DEFAULT_SIGNER_NUMBER}, found: ${this._owners.length}`);
105
105
  }
106
106
  super.validateMandatoryFields();
107
107
  }
108
108
  }
109
109
  exports.WalletInitializationBuilder = WalletInitializationBuilder;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vaGJhci93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJDQUE2QjtBQUM3Qix3REFBMEM7QUFDMUMsOENBQXlFO0FBQ3pFLDZEQUFxRTtBQUVyRSxtQ0FBZ0U7QUFDaEUseUJBQTZCO0FBRTdCLE1BQWEsMkJBQTRCLFNBQVEsdUNBQWtCO0lBSWpFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUk3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMxRSxPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFF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Q0FDN0IsNERBQTRELDhCQUFTLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FDdkcsQ0FBQztTQUNIO1FBQ0QsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUVGO0FBM0ZELGtFQTJGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBMb25nIGZyb20gJ2xvbmcnO1xuaW1wb3J0ICogYXMgcHJvdG8gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIsIERFRkFVTFRfTSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBpc1ZhbGlkUHVibGljS2V5LCB0b1VpbnQ4QXJyYXksIHRvSGV4IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi8nO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHhCb2R5RGF0YTogcHJvdG8uQ3J5cHRvQ3JlYXRlVHJhbnNhY3Rpb25Cb2R5O1xuICBwcml2YXRlIF9vd25lcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R4Qm9keURhdGEgPSBuZXcgcHJvdG8uQ3J5cHRvQ3JlYXRlVHJhbnNhY3Rpb25Cb2R5KCk7XG4gICAgdGhpcy5fdHhCb2R5LmNyeXB0b0NyZWF0ZUFjY291bnQgPSB0aGlzLl90eEJvZHlEYXRhO1xuICAgIHRoaXMuX3R4Qm9keURhdGEuYXV0b1JlbmV3UGVyaW9kID0gbmV3IHByb3RvLkR1cmF0aW9uKHsgc2Vjb25kczogTG9uZy5mcm9tTnVtYmVyKDc4OTAwMDApIH0pO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX3R4Qm9keURhdGEua2V5ID0geyB0aHJlc2hvbGRLZXk6IHRoaXMuYnVpbGRPd25lcnNLZXlzKCkgfTtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmluaXRpYWxCYWxhbmNlID0gTG9uZy5aRVJPO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhd0tleXMgLSBEZWZpbmVzIGlmIHRoZSBvd25lcnMga2V5cyBhcmUgb2J0YWluZWQgaW4gcmF3IG9yIHByb3RvY29sIGRlZmF1bHQgZm9ybWF0XG4gICAqIEByZXR1cm5zIHtwcm90b30gLSBUaGUgd2FsbGV0IHRocmVzaG9sZCBrZXlzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkT3duZXJzS2V5cyhyYXdLZXlzID0gdHJ1ZSk6IHByb3RvLlRocmVzaG9sZEtleSB7XG4gICAgcmV0dXJuIHRoaXMuX293bmVycy5yZWR1Y2UoKHRLZXlzLCBrZXkpID0+IHtcbiAgICAgIGlmICh0S2V5cy5rZXlzICYmIHRLZXlzLmtleXMua2V5cykge1xuICAgICAgICB0S2V5cy5rZXlzLmtleXMucHVzaCh7XG4gICAgICAgICAgZWQyNTUxOTogdG9VaW50OEFycmF5KG5ldyBLZXlQYWlyKHsgcHViOiBrZXkgfSkuZ2V0S2V5cyhyYXdLZXlzKS5wdWIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0S2V5cztcbiAgICB9LCBuZXcgcHJvdG8uVGhyZXNob2xkS2V5KHsgdGhyZXNob2xkOiAyLCBrZXlzOiB7IGtleXM6IFtdIH0gfSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIGNvbnN0IGNyZWF0ZUFjYyA9IHR4LnR4Qm9keS5jcnlwdG9DcmVhdGVBY2NvdW50O1xuICAgIGlmIChjcmVhdGVBY2MgJiYgY3JlYXRlQWNjLmtleSAmJiBjcmVhdGVBY2Mua2V5LnRocmVzaG9sZEtleSkge1xuICAgICAgdGhpcy5pbml0T3duZXJzKGNyZWF0ZUFjYy5rZXkudGhyZXNob2xkS2V5IGFzIHByb3RvLlRocmVzaG9sZEtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3duZXJzKGtleXM6IHByb3RvLlRocmVzaG9sZEtleSkge1xuICAgIGlmIChrZXlzLmtleXMgJiYga2V5cy5rZXlzLmtleXMpIHtcbiAgICAgIGtleXMua2V5cy5rZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLm93bmVyKHRvSGV4KGtleS5lZDI1NTE5ISkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG4gIC8qKlxuICAgKiBTZXQgb25lIG9mIHRoZSBvd25lcnMgb2YgdGhlIG11bHRpc2lnIHdhbGxldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgcHVibGljIGtleSBvZiB0aGUgb3duZXIncyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IC0gVGhpcyB3YWxsZXQgaW5pdGlhbGl6YXRpb24gYnVpbGRlclxuICAgKi9cbiAgb3duZXIoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggPj0gREVGQVVMVF9NKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIG1heGltdW0gb2YgJyArIERFRkFVTFRfTSArICcgb3duZXJzIGNhbiBiZSBzZXQgZm9yIGEgbXVsdGlzaWcgd2FsbGV0Jyk7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZFB1YmxpY0tleShhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9vd25lcnMuaW5jbHVkZXMoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1JlcGVhdGVkIG93bmVyIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fb3duZXJzLnB1c2goYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX293bmVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHdhbGxldCBvd25lcnMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fb3duZXJzLmxlbmd0aCAhPT0gREVGQVVMVF9NKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCB0cmFuc2FjdGlvbjogd3JvbmcgbnVtYmVyIG9mIG93bmVycyAtLSByZXF1aXJlZDogJHtERUZBVUxUX019LCBmb3VuZDogJHt0aGlzLl9vd25lcnMubGVuZ3RofWAsXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlci52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vaGJhci93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJDQUE2QjtBQUM3Qix3REFBMEM7QUFDMUMsOENBQXlFO0FBQ3pFLDZEQUEwRDtBQUUxRCxtQ0FBZ0U7QUFDaEUseUJBQTZCO0FBQzdCLDJDQUFvRDtBQUVwRCxNQUFhLDJCQUE0QixTQUFRLHVDQUFrQjtJQUlqRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFJN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDMUUsT0FBTyxNQUFNLEtBQUssQ0FB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LEVBQUUsQ0FDbkgsQ0FBQztTQUNIO1FBQ0QsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUVGO0FBNUZELGtFQTRGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBMb25nIGZyb20gJ2xvbmcnO1xuaW1wb3J0ICogYXMgcHJvdG8gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgaXNWYWxpZFB1YmxpY0tleSwgdG9IZXgsIHRvVWludDhBcnJheSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcbmltcG9ydCB7IERFRkFVTFRfU0lHTkVSX05VTUJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3R4Qm9keURhdGE6IHByb3RvLkNyeXB0b0NyZWF0ZVRyYW5zYWN0aW9uQm9keTtcbiAgcHJpdmF0ZSBfb3duZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90eEJvZHlEYXRhID0gbmV3IHByb3RvLkNyeXB0b0NyZWF0ZVRyYW5zYWN0aW9uQm9keSgpO1xuICAgIHRoaXMuX3R4Qm9keS5jcnlwdG9DcmVhdGVBY2NvdW50ID0gdGhpcy5fdHhCb2R5RGF0YTtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmF1dG9SZW5ld1BlcmlvZCA9IG5ldyBwcm90by5EdXJhdGlvbih7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcig3ODkwMDAwKSB9KTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCYXNlIEJ1aWxkZXJcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmtleSA9IHsgdGhyZXNob2xkS2V5OiB0aGlzLmJ1aWxkT3duZXJzS2V5cygpIH07XG4gICAgdGhpcy5fdHhCb2R5RGF0YS5pbml0aWFsQmFsYW5jZSA9IExvbmcuWkVSTztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSByYXdLZXlzIC0gRGVmaW5lcyBpZiB0aGUgb3duZXJzIGtleXMgYXJlIG9idGFpbmVkIGluIHJhdyBvciBwcm90b2NvbCBkZWZhdWx0IGZvcm1hdFxuICAgKiBAcmV0dXJucyB7cHJvdG8uVGhyZXNob2xkS2V5fSAtIFRoZSB3YWxsZXQgdGhyZXNob2xkIGtleXNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRPd25lcnNLZXlzKHJhd0tleXMgPSB0cnVlKTogcHJvdG8uVGhyZXNob2xkS2V5IHtcbiAgICByZXR1cm4gdGhpcy5fb3duZXJzLnJlZHVjZSgodEtleXMsIGtleSkgPT4ge1xuICAgICAgaWYgKHRLZXlzLmtleXMgJiYgdEtleXMua2V5cy5rZXlzKSB7XG4gICAgICAgIHRLZXlzLmtleXMua2V5cy5wdXNoKHtcbiAgICAgICAgICBlZDI1NTE5OiB0b1VpbnQ4QXJyYXkobmV3IEtleVBhaXIoeyBwdWI6IGtleSB9KS5nZXRLZXlzKHJhd0tleXMpLnB1YiksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRLZXlzO1xuICAgIH0sIG5ldyBwcm90by5UaHJlc2hvbGRLZXkoeyB0aHJlc2hvbGQ6IDIsIGtleXM6IHsga2V5czogW10gfSB9KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGNyZWF0ZUFjYyA9IHR4LnR4Qm9keS5jcnlwdG9DcmVhdGVBY2NvdW50O1xuICAgIGlmIChjcmVhdGVBY2MgJiYgY3JlYXRlQWNjLmtleSAmJiBjcmVhdGVBY2Mua2V5LnRocmVzaG9sZEtleSkge1xuICAgICAgdGhpcy5pbml0T3duZXJzKGNyZWF0ZUFjYy5rZXkudGhyZXNob2xkS2V5IGFzIHByb3RvLlRocmVzaG9sZEtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3duZXJzKGtleXM6IHByb3RvLlRocmVzaG9sZEtleSkge1xuICAgIGlmIChrZXlzLmtleXMgJiYga2V5cy5rZXlzLmtleXMpIHtcbiAgICAgIGtleXMua2V5cy5rZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLm93bmVyKHRvSGV4KGtleS5lZDI1NTE5ISkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG4gIC8qKlxuICAgKiBTZXQgb25lIG9mIHRoZSBvd25lcnMgb2YgdGhlIG11bHRpc2lnIHdhbGxldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgcHVibGljIGtleSBvZiB0aGUgb3duZXIncyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IC0gVGhpcyB3YWxsZXQgaW5pdGlhbGl6YXRpb24gYnVpbGRlclxuICAgKi9cbiAgb3duZXIoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggPj0gREVGQVVMVF9TSUdORVJfTlVNQkVSKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAnQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX1NJR05FUl9OVU1CRVIgKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fb3duZXJzLmluY2x1ZGVzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXBlYXRlZCBvd25lciBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX293bmVycy5wdXNoKGFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vd25lcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB3YWxsZXQgb3duZXJzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggIT09IERFRkFVTFRfU0lHTkVSX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgdHJhbnNhY3Rpb246IHdyb25nIG51bWJlciBvZiBvd25lcnMgLS0gcmVxdWlyZWQ6ICR7REVGQVVMVF9TSUdORVJfTlVNQkVSfSwgZm91bmQ6ICR7dGhpcy5fb3duZXJzLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgc3VwZXIudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -1,8 +1,6 @@
1
- export { KeyPair } from '../eth/keyPair';
2
- export { Transaction } from '../eth/transaction';
1
+ export { Interface, KeyPair, Transaction } from '@bitgo/sdk-coin-eth';
3
2
  export { TransactionBuilder } from './transactionBuilder';
4
3
  export { TransferBuilder } from './transferBuilder';
5
- import * as Interface from '../eth/iface';
6
4
  import * as Utils from './utils';
7
- export { Interface, Utils };
5
+ export { Utils };
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -19,17 +19,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
19
  return result;
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.Utils = exports.Interface = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
23
- var keyPair_1 = require("../eth/keyPair");
24
- Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
25
- var transaction_1 = require("../eth/transaction");
26
- Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
22
+ exports.Utils = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = exports.Interface = void 0;
23
+ var sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
24
+ Object.defineProperty(exports, "Interface", { enumerable: true, get: function () { return sdk_coin_eth_1.Interface; } });
25
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return sdk_coin_eth_1.KeyPair; } });
26
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return sdk_coin_eth_1.Transaction; } });
27
27
  var transactionBuilder_1 = require("./transactionBuilder");
28
28
  Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
29
29
  var transferBuilder_1 = require("./transferBuilder");
30
30
  Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
31
- const Interface = __importStar(require("../eth/iface"));
32
- exports.Interface = Interface;
33
31
  const Utils = __importStar(require("./utils"));
34
32
  exports.Utils = Utils;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9wb2x5Z29uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBeUM7QUFBaEMsa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLGtEQUFpRDtBQUF4QywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFFeEIsd0RBQTBDO0FBR2pDLDhCQUFTO0FBRmxCLCtDQUFpQztBQUViLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4uL2V0aC9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vZXRoL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4uL2V0aC9pZmFjZSc7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9wb2x5Z29uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBc0U7QUFBN0QseUdBQUEsU0FBUyxPQUFBO0FBQUUsdUdBQUEsT0FBTyxPQUFBO0FBQUUsMkdBQUEsV0FBVyxPQUFBO0FBQ3hDLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBRXhCLCtDQUFpQztBQUN4QixzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEludGVyZmFjZSwgS2V5UGFpciwgVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBVdGlscyB9O1xuIl19
@@ -1,4 +1,4 @@
1
- import { TransferBuilder as EthTransferBuilder } from '../eth';
1
+ import { TransferBuilder as EthTransferBuilder } from '@bitgo/sdk-coin-eth';
2
2
  /** POLYGON transfer builder */
3
3
  export declare class TransferBuilder extends EthTransferBuilder {
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE/D,+BAA+B;AAC/B,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C;;;;;OAKG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;CAGjD"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,+BAA+B;AAC/B,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C;;;;;OAKG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;CAGjD"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransferBuilder = void 0;
4
- const eth_1 = require("../eth");
4
+ const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
5
5
  /** POLYGON transfer builder */
6
- class TransferBuilder extends eth_1.TransferBuilder {
6
+ class TransferBuilder extends sdk_coin_eth_1.TransferBuilder {
7
7
  /**
8
8
  * Get the prefix used in generating an operation hash for sending tokens
9
9
  * See https://github.com/BitGo/eth-multisig-v4/blob/master/contracts/coins/PolygonWalletSimple.sol
@@ -24,4 +24,4 @@ class TransferBuilder extends eth_1.TransferBuilder {
24
24
  }
25
25
  }
26
26
  exports.TransferBuilder = TransferBuilder;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vcG9seWdvbi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0NBQStEO0FBRS9ELCtCQUErQjtBQUMvQixNQUFhLGVBQWdCLFNBQVEscUJBQWtCO0lBQ3JEOzs7OztPQUtHO0lBQ08sMkJBQTJCO1FBQ25DLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLDRCQUE0QjtRQUNwQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIGFzIEV0aFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4uL2V0aCc7XG5cbi8qKiBQT0xZR09OIHRyYW5zZmVyIGJ1aWxkZXIgKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBFdGhUcmFuc2ZlckJ1aWxkZXIge1xuICAvKipcbiAgICogR2V0IHRoZSBwcmVmaXggdXNlZCBpbiBnZW5lcmF0aW5nIGFuIG9wZXJhdGlvbiBoYXNoIGZvciBzZW5kaW5nIHRva2Vuc1xuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL2V0aC1tdWx0aXNpZy12NC9ibG9iL21hc3Rlci9jb250cmFjdHMvY29pbnMvUG9seWdvbldhbGxldFNpbXBsZS5zb2xcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHN0cmluZyBwcmVmaXhcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUb2tlbk9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1BPTFlHT04tRVJDMjAnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyBuYXRpdmUgY29pbnNcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9ldGgtbXVsdGlzaWctdjQvYmxvYi9tYXN0ZXIvY29udHJhY3RzL2NvaW5zL1BvbHlnb25XYWxsZXRTaW1wbGUuc29sXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBzdHJpbmcgcHJlZml4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TmF0aXZlT3BlcmF0aW9uSGFzaFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUE9MWUdPTic7XG4gIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vcG9seWdvbi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQTRFO0FBRTVFLCtCQUErQjtBQUMvQixNQUFhLGVBQWdCLFNBQVEsOEJBQWtCO0lBQ3JEOzs7OztPQUtHO0lBQ08sMkJBQTJCO1FBQ25DLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLDRCQUE0QjtRQUNwQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIGFzIEV0aFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuXG4vKiogUE9MWUdPTiB0cmFuc2ZlciBidWlsZGVyICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgRXRoVHJhbnNmZXJCdWlsZGVyIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyB0b2tlbnNcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9ldGgtbXVsdGlzaWctdjQvYmxvYi9tYXN0ZXIvY29udHJhY3RzL2NvaW5zL1BvbHlnb25XYWxsZXRTaW1wbGUuc29sXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBzdHJpbmcgcHJlZml4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VG9rZW5PcGVyYXRpb25IYXNoUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdQT0xZR09OLUVSQzIwJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByZWZpeCB1c2VkIGluIGdlbmVyYXRpbmcgYW4gb3BlcmF0aW9uIGhhc2ggZm9yIHNlbmRpbmcgbmF0aXZlIGNvaW5zXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vQml0R28vZXRoLW11bHRpc2lnLXY0L2Jsb2IvbWFzdGVyL2NvbnRyYWN0cy9jb2lucy9Qb2x5Z29uV2FsbGV0U2ltcGxlLnNvbFxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgc3RyaW5nIHByZWZpeFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1BPTFlHT04nO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
1
  import { NetworkType } from '@bitgo/statics';
2
2
  import EthereumCommon from '@ethereumjs/common';
3
- import { KeyPair } from '../eth';
4
- import { TxData } from '../eth/iface';
3
+ import { KeyPair, TxData } from '@bitgo/sdk-coin-eth';
5
4
  /**
6
5
  * Signs the transaction using the appropriate algorithm
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAErF;AAOD;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAM9D;AASD,eAAO,MAAM,oBAAoB,yx4BACuv4B,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7D;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAErF;AAOD;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAM9D;AASD,eAAO,MAAM,oBAAoB,yx4BACuv4B,CAAC"}