@bitgo/account-lib 2.19.0-rc.0 → 2.19.0-rc.11

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 (173) hide show
  1. package/.mocharc.js +10 -0
  2. package/DEVELOPER.md +1 -1
  3. package/dist/browser/bitgo-account-lib.js +1 -1
  4. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +10 -17
  5. package/dist/package.json +12 -15
  6. package/dist/src/coin/algo/ifaces.d.ts +1 -0
  7. package/dist/src/coin/algo/ifaces.d.ts.map +1 -1
  8. package/dist/src/coin/algo/ifaces.js +1 -1
  9. package/dist/src/coin/algo/index.d.ts +2 -0
  10. package/dist/src/coin/algo/index.d.ts.map +1 -1
  11. package/dist/src/coin/algo/index.js +23 -2
  12. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +24 -5
  13. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -1
  14. package/dist/src/coin/algo/keyRegistrationBuilder.js +100 -21
  15. package/dist/src/coin/algo/transaction.d.ts.map +1 -1
  16. package/dist/src/coin/algo/transaction.js +15 -6
  17. package/dist/src/coin/algo/txnSchema.d.ts.map +1 -1
  18. package/dist/src/coin/algo/txnSchema.js +2 -1
  19. package/dist/src/coin/algo/utils.d.ts +5 -0
  20. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  21. package/dist/src/coin/algo/utils.js +19 -2
  22. package/dist/src/coin/avaxc/resources.js +3 -3
  23. package/dist/src/coin/avaxc/transactionBuilder.d.ts +1 -1
  24. package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -1
  25. package/dist/src/coin/avaxc/transactionBuilder.js +1 -1
  26. package/dist/src/coin/baseCoin/blsKeyPair.js +7 -7
  27. package/dist/src/coin/baseCoin/index.d.ts +1 -0
  28. package/dist/src/coin/baseCoin/index.d.ts.map +1 -1
  29. package/dist/src/coin/baseCoin/index.js +4 -2
  30. package/dist/src/coin/celo/stakingBuilder.d.ts +1 -1
  31. package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
  32. package/dist/src/coin/celo/stakingBuilder.js +1 -1
  33. package/dist/src/coin/celo/transactionBuilder.d.ts +1 -1
  34. package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
  35. package/dist/src/coin/celo/transactionBuilder.js +1 -1
  36. package/dist/src/coin/cspr/delegateBuilder.d.ts +1 -1
  37. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -1
  38. package/dist/src/coin/cspr/delegateBuilder.js +1 -1
  39. package/dist/src/coin/cspr/transaction.d.ts +1 -1
  40. package/dist/src/coin/cspr/transaction.d.ts.map +1 -1
  41. package/dist/src/coin/cspr/transaction.js +1 -1
  42. package/dist/src/coin/cspr/transactionBuilder.d.ts +1 -1
  43. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -1
  44. package/dist/src/coin/cspr/transactionBuilder.js +1 -1
  45. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +1 -1
  46. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -1
  47. package/dist/src/coin/cspr/transactionBuilderFactory.js +1 -1
  48. package/dist/src/coin/cspr/transferBuilder.d.ts +1 -1
  49. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -1
  50. package/dist/src/coin/cspr/transferBuilder.js +1 -1
  51. package/dist/src/coin/cspr/undelegateBuilder.d.ts +1 -1
  52. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -1
  53. package/dist/src/coin/cspr/undelegateBuilder.js +1 -1
  54. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +1 -1
  55. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -1
  56. package/dist/src/coin/cspr/walletInitializationBuilder.js +1 -1
  57. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -1
  58. package/dist/src/coin/dot/batchTransactionBuilder.js +1 -1
  59. package/dist/src/coin/dot/iface.d.ts +8 -2
  60. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  61. package/dist/src/coin/dot/iface.js +2 -1
  62. package/dist/src/coin/dot/index.d.ts +2 -0
  63. package/dist/src/coin/dot/index.d.ts.map +1 -1
  64. package/dist/src/coin/dot/index.js +6 -2
  65. package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
  66. package/dist/src/coin/dot/keyPair.js +4 -2
  67. package/dist/src/coin/dot/singletonRegistry.d.ts +7 -0
  68. package/dist/src/coin/dot/singletonRegistry.d.ts.map +1 -0
  69. package/dist/src/coin/dot/singletonRegistry.js +23 -0
  70. package/dist/src/coin/dot/transaction.d.ts +18 -2
  71. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  72. package/dist/src/coin/dot/transaction.js +66 -66
  73. package/dist/src/coin/dot/transactionBuilder.d.ts +6 -2
  74. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  75. package/dist/src/coin/dot/transactionBuilder.js +19 -8
  76. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +2 -1
  77. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  78. package/dist/src/coin/dot/transactionBuilderFactory.js +6 -7
  79. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  80. package/dist/src/coin/dot/transferBuilder.js +4 -3
  81. package/dist/src/coin/dot/txnSchema.d.ts +1 -0
  82. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  83. package/dist/src/coin/dot/txnSchema.js +5 -2
  84. package/dist/src/coin/dot/utils.d.ts +19 -4
  85. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  86. package/dist/src/coin/dot/utils.js +39 -11
  87. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
  88. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
  89. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +112 -0
  90. package/dist/src/coin/etc/transactionBuilder.d.ts +1 -1
  91. package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -1
  92. package/dist/src/coin/etc/transactionBuilder.js +1 -1
  93. package/dist/src/coin/eth2/keyPair.js +2 -2
  94. package/dist/src/coin/hbar/transaction.d.ts +1 -1
  95. package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
  96. package/dist/src/coin/hbar/transaction.js +1 -1
  97. package/dist/src/coin/hbar/transactionBuilder.d.ts +1 -1
  98. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
  99. package/dist/src/coin/hbar/transactionBuilder.js +1 -1
  100. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +1 -1
  101. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
  102. package/dist/src/coin/hbar/transactionBuilderFactory.js +1 -1
  103. package/dist/src/coin/hbar/transferBuilder.d.ts +1 -1
  104. package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
  105. package/dist/src/coin/hbar/transferBuilder.js +1 -1
  106. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +1 -1
  107. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
  108. package/dist/src/coin/hbar/walletInitializationBuilder.js +1 -1
  109. package/dist/src/coin/near/iface.d.ts +29 -0
  110. package/dist/src/coin/near/iface.d.ts.map +1 -0
  111. package/dist/src/coin/near/iface.js +8 -0
  112. package/dist/src/coin/near/index.d.ts +3 -0
  113. package/dist/src/coin/near/index.d.ts.map +1 -1
  114. package/dist/src/coin/near/index.js +8 -2
  115. package/dist/src/coin/near/keyPair.d.ts +7 -0
  116. package/dist/src/coin/near/keyPair.d.ts.map +1 -1
  117. package/dist/src/coin/near/keyPair.js +15 -1
  118. package/dist/src/coin/near/transaction.d.ts +57 -2
  119. package/dist/src/coin/near/transaction.d.ts.map +1 -1
  120. package/dist/src/coin/near/transaction.js +244 -6
  121. package/dist/src/coin/near/transactionBuilder.d.ts +64 -2
  122. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
  123. package/dist/src/coin/near/transactionBuilder.js +219 -8
  124. package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
  125. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
  126. package/dist/src/coin/near/transactionBuilderFactory.js +17 -2
  127. package/dist/src/coin/near/transferBuilder.d.ts +14 -2
  128. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
  129. package/dist/src/coin/near/transferBuilder.js +63 -8
  130. package/dist/src/coin/near/utils.d.ts +24 -1
  131. package/dist/src/coin/near/utils.d.ts.map +1 -1
  132. package/dist/src/coin/near/utils.js +42 -8
  133. package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -2
  134. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
  135. package/dist/src/coin/near/walletInitializationBuilder.js +2 -6
  136. package/dist/src/coin/rbtc/transactionBuilder.d.ts +1 -1
  137. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -1
  138. package/dist/src/coin/rbtc/transactionBuilder.js +1 -1
  139. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +12 -1
  140. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
  141. package/dist/src/coin/sol/ataInitializationBuilder.js +37 -10
  142. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
  143. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
  144. package/dist/src/coin/sol/ataInitializationTransaction.js +104 -0
  145. package/dist/src/coin/sol/index.d.ts +3 -1
  146. package/dist/src/coin/sol/index.d.ts.map +1 -1
  147. package/dist/src/coin/sol/index.js +6 -2
  148. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +85 -0
  149. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +1 -0
  150. package/dist/src/coin/sol/tokenEncodeDecode.js +162 -0
  151. package/dist/src/coin/sol/transaction.d.ts +5 -2
  152. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  153. package/dist/src/coin/sol/transaction.js +13 -3
  154. package/dist/src/coin/sol/transactionBuilder.d.ts +1 -1
  155. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  156. package/dist/src/coin/sol/transactionBuilder.js +1 -1
  157. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +3 -1
  158. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  159. package/dist/src/coin/sol/transactionBuilderFactory.js +8 -3
  160. package/dist/src/coin/sol/utils.d.ts +9 -0
  161. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  162. package/dist/src/coin/sol/utils.js +27 -2
  163. package/dist/src/index.d.ts +2 -0
  164. package/dist/src/index.d.ts.map +1 -1
  165. package/dist/src/index.js +7 -2
  166. package/dist/src/mpc/tss.d.ts +6 -6
  167. package/dist/src/mpc/tss.d.ts.map +1 -1
  168. package/dist/src/mpc/tss.js +3 -2
  169. package/dist/src/utils/crypto.d.ts +15 -0
  170. package/dist/src/utils/crypto.d.ts.map +1 -1
  171. package/dist/src/utils/crypto.js +33 -2
  172. package/dist/tsconfig.tsbuildinfo +1 -0
  173. package/package.json +12 -15
@@ -232,11 +232,20 @@ var Transaction = /** @class */ (function (_super) {
232
232
  }
233
233
  if (this.type === baseCoin_1.TransactionType.WalletInitialization) {
234
234
  if (!this._algoTransaction.nonParticipation) {
235
- result.voteKey = this._algoTransaction.voteKey.toString('base64');
236
- result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
237
- result.voteFirst = this._algoTransaction.voteFirst;
238
- result.voteLast = this._algoTransaction.voteLast;
239
- result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
235
+ if (this._algoTransaction.voteKey &&
236
+ this._algoTransaction.selectionKey &&
237
+ this._algoTransaction.voteFirst &&
238
+ this._algoTransaction.voteLast &&
239
+ this._algoTransaction.voteKeyDilution) {
240
+ result.voteKey = this._algoTransaction.voteKey.toString('base64');
241
+ result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
242
+ result.voteFirst = this._algoTransaction.voteFirst;
243
+ result.voteLast = this._algoTransaction.voteLast;
244
+ result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
245
+ if (this._algoTransaction.stateProofKey) {
246
+ result.stateProofKey = this._algoTransaction.stateProofKey.toString('base64');
247
+ }
248
+ }
240
249
  }
241
250
  else {
242
251
  result.nonParticipation = this._algoTransaction.nonParticipation;
@@ -275,4 +284,4 @@ var Transaction = /** @class */ (function (_super) {
275
284
  return Transaction;
276
285
  }(baseCoin_1.BaseTransaction));
277
286
  exports.Transaction = Transaction;
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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QyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQTlQRCxDQUFpQywwQkFBZSxHQThQL0M7QUE5UFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZEtleSwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9hbGdvVHJhbnNhY3Rpb24/OiBhbGdvc2RrLlRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduZWRUcmFuc2FjdGlvbj86IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgX251bWJlck9mUmVxdWlyZWRTaWduZXJzOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlbmRlcjogc3RyaW5nO1xuICBwcml2YXRlIF9zaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfc2lnbmVkQnk6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPSAwO1xuICAgIHRoaXMuX3NpZ25lcnMgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICBjb25zdCBhZGRyID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKGFkZHIgPT09IHRoaXMuX3NlbmRlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VuZGVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICB0aGlzLnNpZ25TaW5nbGUoa2V5UGFpclswXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA+IDEpIHtcbiAgICAgIHRoaXMuc2lnbk11bHRpU2lnKGtleVBhaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduU2luZ2xlKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzaWduS2V5ID0gQnVmZmVyLmZyb20oa2V5UGFpci5nZXRTaWduaW5nS2V5KCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAoc2lnbktleSkge1xuICAgICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBhbGdvc2RrLnNpZ25UcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIHV0aWxzLnRvVWludDhBcnJheShzaWduS2V5KSkuYmxvYjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ1ByaXZhdGUga2V5IHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBtdWx0aXNpZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lcnMga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2lnbk11bHRpU2lnKGtleVBhaXI6IEtleVBhaXJbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVycyBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBpZiAoa2V5UGFpci5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0tleXBhaXIgbm90IHNwZWNpZmllZCBmb3IgbXVsdGlzaWcnKTtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlTaWdPcHRpb25zID0ge1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMsXG4gICAgICBhZGRyczogdGhpcy5fc2lnbmVycyxcbiAgICB9O1xuICAgIGNvbnN0IG1zaWdBZGRyZXNzID0gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3MobXVsdGlTaWdPcHRpb25zKTtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbSA9IGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhtc2lnQWRkcmVzcyk7XG5cbiAgICAvLyBDaGVjayBpZiBpdCBpcyBhIHNpZ25lZCBvciB1bnNpZ25lZCB0eC5cbiAgICAvLyBJZiB1bnNpZ25lZCwgc2lnbiBpdCB1c2luZyBmaXJzdCBrZXlwYWlyIGFuZCB0aGVuIGFwcGVuZCBuZXh0IHNpZ25hdHVyZXMuXG4gICAgLy8gSWYgc2lnbmVkLCBhcHBlbmRpbmcgbmV4dCBzaWduYXR1cmVzLlxuICAgIGxldCBzaWduZWRUeCA9IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA/IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA6IGFsZ29zZGsuc2lnbk11bHRpc2lnVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uLCBtdWx0aVNpZ09wdGlvbnMsIGtleVBhaXIuc2hpZnQoKSEuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuXG4gICAga2V5UGFpci5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgc2lnbmVkVHggPSBhbGdvc2RrLmFwcGVuZFNpZ25NdWx0aXNpZ1RyYW5zYWN0aW9uKHNpZ25lZFR4LCBtdWx0aVNpZ09wdGlvbnMsIGtwLmdldFNpZ25pbmdLZXkoKSkuYmxvYjtcbiAgICB9KTtcbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuICB9XG5cbiAgc2V0IHNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSkge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhuO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mUmVxdWlyZWRTaWduZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG51bWJlciBvZiBzaWduZXJzIHJlcXVpcmVkIGZvciBzaWduaW5nIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gVGhyZXNob2xkIG51bWJlciBvZiBzaWduZXJzLlxuICAgKi9cbiAgc2V0TnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMobnVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IG51bTtcbiAgfVxuXG4gIHNldCBzaWduZXJzKGFkZHJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpZ25lcnMgPSBhZGRycztcbiAgfVxuXG4gIGdldCBzaWduZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVycztcbiAgfVxuXG4gIHNldCBzaWduZWRCeShzaWduZXI6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVkQnkgPSBzaWduZXI7XG4gIH1cblxuICBnZXQgc2lnbmVkQnkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7YWxnb3Nkay5UcmFuc2FjdGlvbn0gdHhcbiAgICovXG5cbiAgc2V0QWxnb1RyYW5zYWN0aW9uKHR4OiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVuZGVybGF5aW5nIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHthbGdvc2RrLlRyYW5zYWN0aW9ufVxuICAgKi9cblxuICBnZXRBbGdvVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGVzdGltYXRlU2l6ZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5lc3RpbWF0ZVNpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gJiYgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eElEKCksXG4gICAgICB0eXBlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udHlwZT8udG9TdHJpbmcoKSxcbiAgICAgIGZyb206IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbS5wdWJsaWNLZXkpLFxuICAgICAgZmVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmVlLFxuICAgICAgZmlyc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZpcnN0Um91bmQsXG4gICAgICBsYXN0Um91bmQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5sYXN0Um91bmQsXG4gICAgICBub3RlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm90ZSxcbiAgICAgIHRva2VuSWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbj8uYXNzZXRJbmRleCxcbiAgICAgIGdlbmVzaXNJRDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmdlbmVzaXNJRCxcbiAgICAgIGdlbmVzaXNIYXNoOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0hhc2gudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvKSB7XG4gICAgICByZXN1bHQuY2xvc2VSZW1haW5kZXJUbyA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uY2xvc2VSZW1haW5kZXJUby5wdWJsaWNLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgcmVzdWx0LnRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub25QYXJ0aWNpcGF0aW9uKSB7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICByZXN1bHQuc2VsZWN0aW9uS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIHJlc3VsdC52b3RlRmlyc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUZpcnN0O1xuICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5RGlsdXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm5vblBhcnRpY2lwYXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm9uUGFydGljaXBhdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdC50eXBlID09PSAnYXhmZXInICYmIHJlc3VsdC50byAmJiByZXN1bHQuYW1vdW50KSB7XG4gICAgICByZXN1bHQudHhUeXBlID0gdXRpbHMuZ2V0VG9rZW5UeFR5cGUocmVzdWx0LmFtb3VudCwgcmVzdWx0LmZyb20sIHJlc3VsdC50bywgcmVzdWx0LmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgcmVzdWx0LnRva2VuTmFtZSA9IHRoaXMuX2NvaW5Db25maWcuc3VmZml4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20ucHVibGljS2V5KSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG59XG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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QUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ2xFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUI7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYjtvQkFDRSxPQUFPLEVBQUUsaUJBQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ3BFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUI7YUFDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBelFELENBQWlDLDBCQUFlLEdBeVEvQztBQXpRWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkS2V5LCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2lmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2FsZ29UcmFuc2FjdGlvbj86IGFsZ29zZGsuVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogVWludDhBcnJheTtcbiAgcHJpdmF0ZSBfbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25lcnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9zaWduZWRCeTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IDA7XG4gICAgdGhpcy5fc2lnbmVycyA9IFtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oeyBrZXkgfTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIGNvbnN0IGFkZHIgPSBrcC5nZXRBZGRyZXNzKCk7XG4gICAgICBpZiAoYWRkciA9PT0gdGhpcy5fc2VuZGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZW5kZXIoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgc2lnbihrZXlQYWlyOiBLZXlQYWlyW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIHRoaXMuc2lnblNpbmdsZShrZXlQYWlyWzBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID4gMSkge1xuICAgICAgdGhpcy5zaWduTXVsdGlTaWcoa2V5UGFpcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBwcml2YXRlIHNpZ25TaW5nbGUoa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25LZXkgPSBCdWZmZXIuZnJvbShrZXlQYWlyLmdldFNpZ25pbmdLZXkoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGlmIChzaWduS2V5KSB7XG4gICAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IGFsZ29zZGsuc2lnblRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbiwgdXRpbHMudG9VaW50OEFycmF5KHNpZ25LZXkpKS5ibG9iO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleSgnUHJpdmF0ZSBrZXkgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIG11bHRpc2lnIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVycyBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduTXVsdGlTaWcoa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdTaWduZXJzIG5vdCBzcGVjaWZpZWQgZm9yIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIGlmIChrZXlQYWlyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignS2V5cGFpciBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aVNpZ09wdGlvbnMgPSB7XG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyxcbiAgICAgIGFkZHJzOiB0aGlzLl9zaWduZXJzLFxuICAgIH07XG4gICAgY29uc3QgbXNpZ0FkZHJlc3MgPSBhbGdvc2RrLm11bHRpc2lnQWRkcmVzcyhtdWx0aVNpZ09wdGlvbnMpO1xuICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tID0gYWxnb3Nkay5kZWNvZGVBZGRyZXNzKG1zaWdBZGRyZXNzKTtcblxuICAgIC8vIENoZWNrIGlmIGl0IGlzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIHR4LlxuICAgIC8vIElmIHVuc2lnbmVkLCBzaWduIGl0IHVzaW5nIGZpcnN0IGtleXBhaXIgYW5kIHRoZW4gYXBwZW5kIG5leHQgc2lnbmF0dXJlcy5cbiAgICAvLyBJZiBzaWduZWQsIGFwcGVuZGluZyBuZXh0IHNpZ25hdHVyZXMuXG4gICAgbGV0IHNpZ25lZFR4ID0gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgID8gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgIDogYWxnb3Nkay5zaWduTXVsdGlzaWdUcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIG11bHRpU2lnT3B0aW9ucywga2V5UGFpci5zaGlmdCgpIS5nZXRTaWduaW5nS2V5KCkpLmJsb2I7XG5cbiAgICBrZXlQYWlyLmZvckVhY2goKGtwKSA9PiB7XG4gICAgICBzaWduZWRUeCA9IGFsZ29zZGsuYXBwZW5kU2lnbk11bHRpc2lnVHJhbnNhY3Rpb24oc2lnbmVkVHgsIG11bHRpU2lnT3B0aW9ucywga3AuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuICAgIH0pO1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHg7XG4gIH1cblxuICBzZXQgc2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KSB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB0eG47XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbnVtYmVyIG9mIHNpZ25lcnMgcmVxdWlyZWQgZm9yIHNpZ25pbmcgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bSBUaHJlc2hvbGQgbnVtYmVyIG9mIHNpZ25lcnMuXG4gICAqL1xuICBzZXROdW1iZXJPZlJlcXVpcmVkU2lnbmVycyhudW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID0gbnVtO1xuICB9XG5cbiAgc2V0IHNpZ25lcnMoYWRkcnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVycyA9IGFkZHJzO1xuICB9XG5cbiAgZ2V0IHNpZ25lcnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZXJzO1xuICB9XG5cbiAgc2V0IHNpZ25lZEJ5KHNpZ25lcjogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zaWduZWRCeSA9IHNpZ25lcjtcbiAgfVxuXG4gIGdldCBzaWduZWRCeSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHthbGdvc2RrLlRyYW5zYWN0aW9ufSB0eFxuICAgKi9cblxuICBzZXRBbGdvVHJhbnNhY3Rpb24odHg6IGFsZ29zZGsuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdW5kZXJsYXlpbmcgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge2FsZ29zZGsuVHJhbnNhY3Rpb259XG4gICAqL1xuXG4gIGdldEFsZ29UcmFuc2FjdGlvbigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgZXN0aW1hdGVTaXplKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmVzdGltYXRlU2l6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IFVpbnQ4QXJyYXkge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhbGdvc2RrLmVuY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnR4SUQoKSxcbiAgICAgIHR5cGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eXBlPy50b1N0cmluZygpLFxuICAgICAgZnJvbTogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICBmZWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mZWUsXG4gICAgICBmaXJzdFJvdW5kOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmlyc3RSb3VuZCxcbiAgICAgIGxhc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmxhc3RSb3VuZCxcbiAgICAgIG5vdGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub3RlLFxuICAgICAgdG9rZW5JZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uPy5hc3NldEluZGV4LFxuICAgICAgZ2VuZXNpc0lEOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0lELFxuICAgICAgZ2VuZXNpc0hhc2g6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5nZW5lc2lzSGFzaC50b1N0cmluZygnYmFzZTY0JyksXG4gICAgfTtcbiAgICBpZiAodGhpcy5fYWxnb1RyYW5zYWN0aW9uLmNsb3NlUmVtYWluZGVyVG8pIHtcbiAgICAgIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvLnB1YmxpY0tleSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICByZXN1bHQudG8gPSBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSk7XG4gICAgICByZXN1bHQuYW1vdW50ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb24pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleSAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlRmlyc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3Rpb25LZXkgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uc2VsZWN0aW9uS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICByZXN1bHQudm90ZUZpcnN0ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVGaXJzdDtcbiAgICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgICAgcmVzdWx0LnZvdGVLZXlEaWx1dGlvbiA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5RGlsdXRpb247XG4gICAgICAgICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5KSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhdGVQcm9vZktleSA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5ub25QYXJ0aWNpcGF0aW9uID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb247XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHQudHlwZSA9PT0gJ2F4ZmVyJyAmJiByZXN1bHQudG8gJiYgcmVzdWx0LmFtb3VudCkge1xuICAgICAgcmVzdWx0LnR4VHlwZSA9IHV0aWxzLmdldFRva2VuVHhUeXBlKHJlc3VsdC5hbW91bnQsIHJlc3VsdC5mcm9tLCByZXN1bHQudG8sIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvKTtcbiAgICAgIHJlc3VsdC50b2tlbk5hbWUgPSB0aGlzLl9jb2luQ29uZmlnLnN1ZmZpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,qBAAqB,uBAwB9B,CAAC;AAEL,eAAO,MAAM,yBAAyB,uBAOpC,CAAC;AAEH,eAAO,MAAM,eAAe,uBAgBxB,CAAC;AAEL,eAAO,MAAM,sBAAsB,uBAIjC,CAAC;AAEH,eAAO,MAAM,oBAAoB,uBAG/B,CAAC"}
1
+ {"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,qBAAqB,uBAwB9B,CAAC;AAEL,eAAO,MAAM,yBAAyB,uBAOpC,CAAC;AAEH,eAAO,MAAM,eAAe,uBAiBxB,CAAC;AAEL,eAAO,MAAM,sBAAsB,uBAIjC,CAAC;AAEH,eAAO,MAAM,oBAAoB,uBAG/B,CAAC"}
@@ -46,6 +46,7 @@ exports.KeyRegTxnSchema = joi_1.default
46
46
  voteFirst: joi_1.default.number().positive().required(),
47
47
  voteLast: joi_1.default.number().positive().required(),
48
48
  voteKeyDilution: joi_1.default.number().positive().required(),
49
+ stateProofKey: addressSchema.optional(),
49
50
  })
50
51
  .custom(function (obj) {
51
52
  var voteFirst = obj.voteFirst;
@@ -64,4 +65,4 @@ exports.AssetToggleTxnSchema = joi_1.default.object({
64
65
  tokenId: joi_1.default.number().required(),
65
66
  receiver: addressSchema.required(),
66
67
  });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhuU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYWxnby90eG5TY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQXNCO0FBQ3RCLDZDQUE2RDtBQUM3RCxrREFBNEI7QUFFNUIsSUFBTSxhQUFhLEdBQUcsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQztBQUVuRSxRQUFBLHFCQUFxQixHQUFHLGFBQUc7S0FDckMsTUFBTSxDQUFDO0lBQ04sR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsTUFBTSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsS0FBSyxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDckIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDcEIsT0FBTyxFQUFFLGFBQUc7U0FDVCxNQUFNLEVBQUU7U0FDUixNQUFNLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUExQixDQUEwQixDQUFDO1NBQzVDLFFBQVEsRUFBRTtDQUNkLENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxVQUFVLEdBQVcsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUMxQyxJQUFNLFNBQVMsR0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBRXhDLElBQUksVUFBVSxHQUFHLFNBQVMsRUFBRTtRQUMxQixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDO0FBRVEsUUFBQSx5QkFBeUIsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xELE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBbEQsQ0FBa0QsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxRixFQUFFLEVBQUUsYUFBRztTQUNKLE1BQU0sRUFBRTtTQUNSLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUM7U0FDNUMsUUFBUSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMxQyxDQUFDLENBQUM7QUFFVSxRQUFBLGVBQWUsR0FBRyxhQUFHO0tBQy9CLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFlBQVksRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ3RDLFNBQVMsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdDLFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLGVBQWUsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3BELENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxTQUFTLEdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN4QyxJQUFNLFFBQVEsR0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBRXRDLElBQUksU0FBUyxHQUFHLFFBQVEsRUFBRTtRQUN4QixNQUFNLElBQUksZ0NBQXVCLENBQUMscURBQXFELENBQUMsQ0FBQztLQUMxRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUM7QUFFUSxRQUFBLHNCQUFzQixHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFsRCxDQUFrRCxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQy9GLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0NBQ25DLENBQUMsQ0FBQztBQUVVLFFBQUEsb0JBQW9CLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxPQUFPLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGFkZHJlc3NTY2hlbWEgPSBqb2kuc3RyaW5nKCkuY3VzdG9tKChhZGRyKSA9PiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyKSk7XG5cbmV4cG9ydCBjb25zdCBCYXNlVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgZmVlOiBqb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICBmaXJzdFJvdW5kOiBqb2kubnVtYmVyKCkucG9zaXRpdmUoKS5yZXF1aXJlZCgpLFxuICAgIGdlbmVzaXNIYXNoOiBqb2kuc3RyaW5nKCkuYmFzZTY0KCkucmVxdWlyZWQoKSxcbiAgICBsYXN0Um91bmQ6IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gICAgc2VuZGVyOiBhZGRyZXNzU2NoZW1hLnJlcXVpcmVkKCksXG4gICAgZ2VuZXNpc0lkOiBqb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsZWFzZTogam9pLm9wdGlvbmFsKCksXG4gICAgbm90ZTogam9pLm9wdGlvbmFsKCksXG4gICAgcmVLZXlUbzogam9pXG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5jdXN0b20oKGFkZHIpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5jdXN0b20oKG9iaikgPT4ge1xuICAgIGNvbnN0IGZpcnN0Um91bmQ6IG51bWJlciA9IG9iai5maXJzdFJvdW5kO1xuICAgIGNvbnN0IGxhc3RSb3VuZDogbnVtYmVyID0gb2JqLmxhc3RSb3VuZDtcblxuICAgIGlmIChmaXJzdFJvdW5kIDwgbGFzdFJvdW5kKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignbGFzdFJvdW5kIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZmlyc3RSb3VuZCcpO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgYW1vdW50OiBqb2kuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKS5yZXF1aXJlZCgpLFxuICB0bzogam9pXG4gICAgLnN0cmluZygpXG4gICAgLmN1c3RvbSgoYWRkcikgPT4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcikpXG4gICAgLnJlcXVpcmVkKCksXG4gIGNsb3NlUmVtYWluZGVyVG86IGpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBLZXlSZWdUeG5TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgdm90ZUtleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHNlbGVjdGlvbktleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHZvdGVGaXJzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlTGFzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlS2V5RGlsdXRpb246IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gIH0pXG4gIC5jdXN0b20oKG9iaikgPT4ge1xuICAgIGNvbnN0IHZvdGVGaXJzdDogbnVtYmVyID0gb2JqLnZvdGVGaXJzdDtcbiAgICBjb25zdCB2b3RlTGFzdDogbnVtYmVyID0gb2JqLnZvdGVMYXN0O1xuXG4gICAgaWYgKHZvdGVGaXJzdCA+IHZvdGVMYXN0KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1ZvdGVLZXkgbGFzdCByb3VuZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBmaXJzdCByb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IEFzc2V0VHJhbnNmZXJUeG5TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgdG9rZW5JZDogam9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gIGFzc2V0QW1vdW50OiBqb2kuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKS5yZXF1aXJlZCgpLFxuICByZWNlaXZlcjogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBBc3NldFRvZ2dsZVR4blNjaGVtYSA9IGpvaS5vYmplY3Qoe1xuICB0b2tlbklkOiBqb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgcmVjZWl2ZXI6IGFkZHJlc3NTY2hlbWEucmVxdWlyZWQoKSxcbn0pO1xuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhuU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYWxnby90eG5TY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQXNCO0FBQ3RCLDZDQUE2RDtBQUM3RCxrREFBNEI7QUFFNUIsSUFBTSxhQUFhLEdBQUcsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQztBQUVuRSxRQUFBLHFCQUFxQixHQUFHLGFBQUc7S0FDckMsTUFBTSxDQUFDO0lBQ04sR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsTUFBTSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsS0FBSyxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDckIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDcEIsT0FBTyxFQUFFLGFBQUc7U0FDVCxNQUFNLEVBQUU7U0FDUixNQUFNLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUExQixDQUEwQixDQUFDO1NBQzVDLFFBQVEsRUFBRTtDQUNkLENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxVQUFVLEdBQVcsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUMxQyxJQUFNLFNBQVMsR0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBRXhDLElBQUksVUFBVSxHQUFHLFNBQVMsRUFBRTtRQUMxQixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDO0FBRVEsUUFBQSx5QkFBeUIsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xELE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBbEQsQ0FBa0QsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxRixFQUFFLEVBQUUsYUFBRztTQUNKLE1BQU0sRUFBRTtTQUNSLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUM7U0FDNUMsUUFBUSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMxQyxDQUFDLENBQUM7QUFFVSxRQUFBLGVBQWUsR0FBRyxhQUFHO0tBQy9CLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFlBQVksRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ3RDLFNBQVMsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdDLFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLGVBQWUsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25ELGFBQWEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0NBQ3hDLENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxTQUFTLEdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN4QyxJQUFNLFFBQVEsR0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBRXRDLElBQUksU0FBUyxHQUFHLFFBQVEsRUFBRTtRQUN4QixNQUFNLElBQUksZ0NBQXVCLENBQUMscURBQXFELENBQUMsQ0FBQztLQUMxRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUM7QUFFUSxRQUFBLHNCQUFzQixHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFsRCxDQUFrRCxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQy9GLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0NBQ25DLENBQUMsQ0FBQztBQUVVLFFBQUEsb0JBQW9CLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxPQUFPLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGFkZHJlc3NTY2hlbWEgPSBqb2kuc3RyaW5nKCkuY3VzdG9tKChhZGRyKSA9PiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyKSk7XG5cbmV4cG9ydCBjb25zdCBCYXNlVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgZmVlOiBqb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICBmaXJzdFJvdW5kOiBqb2kubnVtYmVyKCkucG9zaXRpdmUoKS5yZXF1aXJlZCgpLFxuICAgIGdlbmVzaXNIYXNoOiBqb2kuc3RyaW5nKCkuYmFzZTY0KCkucmVxdWlyZWQoKSxcbiAgICBsYXN0Um91bmQ6IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gICAgc2VuZGVyOiBhZGRyZXNzU2NoZW1hLnJlcXVpcmVkKCksXG4gICAgZ2VuZXNpc0lkOiBqb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsZWFzZTogam9pLm9wdGlvbmFsKCksXG4gICAgbm90ZTogam9pLm9wdGlvbmFsKCksXG4gICAgcmVLZXlUbzogam9pXG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5jdXN0b20oKGFkZHIpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5jdXN0b20oKG9iaikgPT4ge1xuICAgIGNvbnN0IGZpcnN0Um91bmQ6IG51bWJlciA9IG9iai5maXJzdFJvdW5kO1xuICAgIGNvbnN0IGxhc3RSb3VuZDogbnVtYmVyID0gb2JqLmxhc3RSb3VuZDtcblxuICAgIGlmIChmaXJzdFJvdW5kIDwgbGFzdFJvdW5kKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignbGFzdFJvdW5kIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZmlyc3RSb3VuZCcpO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgYW1vdW50OiBqb2kuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKS5yZXF1aXJlZCgpLFxuICB0bzogam9pXG4gICAgLnN0cmluZygpXG4gICAgLmN1c3RvbSgoYWRkcikgPT4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcikpXG4gICAgLnJlcXVpcmVkKCksXG4gIGNsb3NlUmVtYWluZGVyVG86IGpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBLZXlSZWdUeG5TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgdm90ZUtleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHNlbGVjdGlvbktleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHZvdGVGaXJzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlTGFzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlS2V5RGlsdXRpb246IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gICAgc3RhdGVQcm9vZktleTogYWRkcmVzc1NjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAuY3VzdG9tKChvYmopID0+IHtcbiAgICBjb25zdCB2b3RlRmlyc3Q6IG51bWJlciA9IG9iai52b3RlRmlyc3Q7XG4gICAgY29uc3Qgdm90ZUxhc3Q6IG51bWJlciA9IG9iai52b3RlTGFzdDtcblxuICAgIGlmICh2b3RlRmlyc3QgPiB2b3RlTGFzdCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdWb3RlS2V5IGxhc3Qgcm91bmQgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3Qgcm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBBc3NldFRyYW5zZmVyVHhuU2NoZW1hID0gam9pLm9iamVjdCh7XG4gIHRva2VuSWQ6IGpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICBhc3NldEFtb3VudDogam9pLmN1c3RvbSgodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsID09PSAnYmlnaW50JykucmVxdWlyZWQoKSxcbiAgcmVjZWl2ZXI6IGFkZHJlc3NTY2hlbWEucmVxdWlyZWQoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXNzZXRUb2dnbGVUeG5TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgdG9rZW5JZDogam9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gIHJlY2VpdmVyOiBhZGRyZXNzU2NoZW1hLnJlcXVpcmVkKCksXG59KTtcbiJdfQ==
@@ -238,6 +238,11 @@ export declare class Utils implements BaseUtils {
238
238
  * @returns 'enableToken' or 'disableToken'
239
239
  */
240
240
  getTokenTxType(amount: string, from: string, to: string, closeRemainderTo?: string): string;
241
+ /**
242
+ * Validate if the key is a valid base64 string
243
+ * @param key the key to validate
244
+ */
245
+ validateBase64(key: string): void;
241
246
  }
242
247
  declare const utils: Utils;
243
248
  export default utils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":"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"}
@@ -248,7 +248,11 @@ var Utils = /** @class */ (function () {
248
248
  // release standard.
249
249
  // This way we can decode transactions successfully by still maintaining backward compatibility.
250
250
  var decodedTx = encoding.decode(buffer);
251
- if (decodedTx.txn && decodedTx.txn.type === 'keyreg') {
251
+ if (decodedTx.txn &&
252
+ decodedTx.txn.type === 'keyreg' &&
253
+ decodedTx.txn.votefst &&
254
+ decodedTx.txn.votelst &&
255
+ decodedTx.txn.votekd) {
252
256
  decodedTx.txn.votekey = decodedTx.txn.votekey || decodedTx.msig.subsig[0].pk;
253
257
  decodedTx.txn.selkey = decodedTx.txn.selkey || decodedTx.msig.subsig[0].pk;
254
258
  buffer = decodedTx.msig || decodedTx.sig ? encoding.encode(decodedTx) : encoding.encode(decodedTx.txn);
@@ -519,9 +523,22 @@ var Utils = /** @class */ (function () {
519
523
  }
520
524
  return type;
521
525
  };
526
+ /**
527
+ * Validate if the key is a valid base64 string
528
+ * @param key the key to validate
529
+ */
530
+ Utils.prototype.validateBase64 = function (key) {
531
+ if (!key || typeof key !== 'string') {
532
+ throw new Error('Invalid base64 string');
533
+ }
534
+ var base64RegExp = /^(?:[a-zA-Z0-9+\/]{4})*(?:|(?:[a-zA-Z0-9+\/]{3}=)|(?:[a-zA-Z0-9+\/]{2}==)|(?:[a-zA-Z0-9+\/]{1}===))$/;
535
+ if (!base64RegExp.test(key)) {
536
+ throw new Error('Invalid base64 string');
537
+ }
538
+ };
522
539
  return Utils;
523
540
  }());
524
541
  exports.Utils = Utils;
525
542
  var utils = new Utils();
526
543
  exports.default = utils;
527
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNoRCxJQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEO0lBQUE7SUFpZkEsQ0FBQztJQWhmQyxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLE9BQWU7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QVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLENBQUM7UUFDaEYsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxtQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw4QkFBYyxHQUFkLFVBQWUsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFVLEVBQUUsZ0JBQXlCO1FBQ2hGLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUMzQixJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDSCxZQUFDO0FBQUQsQ0FBQyxBQWpmRCxJQWlmQztBQWpmWSxzQkFBSztBQW1mbEIsSUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCAqIGFzIGhleCBmcm9tICdAc3RhYmxlbGliL2hleCc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgYmFzZTMyIGZyb20gJ2hpLWJhc2UzMic7XG5pbXBvcnQgc2hhNTEyIGZyb20gJ2pzLXNoYTUxMic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY3J5cHRvJztcbmltcG9ydCB7IEJhc2VVdGlscyB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRLZXksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEFkZHJlc3MsIEVuY29kZWRUeCwgU2VlZCB9IGZyb20gJy4vaWZhY2VzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgU2VlZEVuY29kaW5nIH0gZnJvbSAnLi9zZWVkRW5jb2RpbmcnO1xuaW1wb3J0ICogYXMgYWxnb05hY2wgZnJvbSAnYWxnb3Nkay9kaXN0L2Nqcy9zcmMvbmFjbC9uYWNsV3JhcHBlcnMnO1xuaW1wb3J0ICogYXMgZW5jb2RpbmcgZnJvbSAnYWxnb3Nkay9kaXN0L2Nqcy9zcmMvZW5jb2RpbmcvZW5jb2RpbmcnO1xuXG5jb25zdCBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCA9IDQ7XG5jb25zdCBBTEdPUkFORF9TRUVEX0xFTkdUSCA9IDU4O1xuY29uc3QgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCA9IDM2O1xuY29uc3QgQUxHT1JBTkRfVFJBTlNBQ1RJT05fTEVOR1RIID0gNTI7XG5jb25zdCBTRUVEX0JZVEVTX0xFTkdUSCA9IDMyO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3RyaW5nIGlzIG9ubHkgY29tcG9zZWQgb2YgaGV4IGNoYXJzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXliZSBUaGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBzdHJpbmcgY29uc2lzdHMgb2Ygb25seSBoZXggY2hhcmFjdGVycywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5mdW5jdGlvbiBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXihbMC05YS1mXXsyfSkrJC9pLnRlc3QobWF5YmUpO1xufVxuXG4vKipcbiAqIENvbmNhdEFycmF5cyB0YWtlcyB0d28gYXJyYXkgYW5kIHJldHVybnMgYSBqb2ludCBhcnJheSBvZiBib3RoXG4gKlxuICogQHBhcmFtIGEge1VpbnQ4QXJyYXl9IGZpcnN0IGFycmF5IHRvIGNvbmNhdFxuICogQHBhcmFtIGIge1VpbnQ4QXJyYXl9IHNlY29uZCBhcnJheVxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lbnRzIG9mICdhJyBmb2xsb3dlZCBieSBhbGwgZWxlbWVudHMgb2YgJ2InXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdEFycmF5cyhhOiBVaW50OEFycmF5LCBiOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IGMgPSBuZXcgVWludDhBcnJheShhLmxlbmd0aCArIGIubGVuZ3RoKTtcbiAgYy5zZXQoYSk7XG4gIGMuc2V0KGIsIGEubGVuZ3RoKTtcbiAgcmV0dXJuIGM7XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWxnb3Nkay5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHhJZC5sZW5ndGggIT09IDEwNCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxIZXhDaGFycyh0eElkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJ1ZmZlclxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciAtIHRoZSBidWZmZXIgdG8gYmUgY29udmVydGVkIHRvIGhleFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXggdmFsdWVcbiAgICovXG4gIHRvSGV4KGJ1ZmZlcjogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2lzVmFsaWRTaWduYXR1cmUgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdoYXNoIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIHR3byBLZXlzXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0ga2V5MSAtIGtleSB0byBiZSBjb21wYXJlXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0ga2V5MiAtIGtleSB0byBiZSBjb21wYXJlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHJldHVybnMgdHJ1ZSBpZiBib3RoIGtleXMgYXJlIGVxdWFsXG4gICAqL1xuICBhcmVLZXlzRXF1YWwoa2V5MTogVWludDhBcnJheSwga2V5MjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYWNsLnZlcmlmeShrZXkxLCBrZXkyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgVWludDhBcnJheSBvZiB0aGUgZ2l2ZW4gaGV4IHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gdGhlIGhleCBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIFVpbnQ4QXJyYXkgdmFsdWVcbiAgICovXG4gIHRvVWludDhBcnJheShzdHI6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIsICdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzZWVkIGlzIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VlZCAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRoZSBzZWVkIGlzIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkU2VlZChzZWVkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHNlZWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoc2VlZC5sZW5ndGggIT09IEFMR09SQU5EX1NFRURfTEVOR1RIKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBUcnkgdG8gZGVjb2RlXG4gICAgbGV0IGRlY29kZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWQgPSB0aGlzLmRlY29kZVNlZWQoc2VlZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgY2hlY2tzdW1cbiAgICBjb25zdCBjaGVja3N1bSA9IG5ldyBVaW50OEFycmF5KFxuICAgICAgc2hhNTEyLnNoYTUxMl8yNTYuYXJyYXkoZGVjb2RlZC5zZWVkKS5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RILCBTRUVEX0JZVEVTX0xFTkdUSCksXG4gICAgKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjaGVja3N1bSBtYXRjaGVzIHRoZSBvbmUgZnJvbSB0aGUgZGVjb2RlZCBzZWVkXG4gICAgcmV0dXJuIF8uaXNFcXVhbChjaGVja3N1bSwgZGVjb2RlZC5jaGVja3N1bSk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIGFuIGFsZ28gc2VlZFxuICAgKlxuICAgKiBAcGFyYW0gIHtCdWZmZXJ9IHNlY3JldEtleSAtIHRoZSB2YWxpZCBzZWNyZXRLZXkgLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICovXG4gIGVuY29kZVNlZWQoc2VjcmV0S2V5OiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIC8vIGdldCBzZWVkXG4gICAgY29uc3Qgc2VlZCA9IHNlY3JldEtleS5zbGljZSgwLCBTRUVEX0JZVEVTX0xFTkdUSCk7XG4gICAgLy8gY29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmZyb20oXG4gICAgICBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShzZWVkKS5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RILCBTRUVEX0JZVEVTX0xFTkdUSCksXG4gICAgKTtcbiAgICBjb25zdCBlbmNvZGVkU2VlZCA9IGJhc2UzMi5lbmNvZGUoY29uY2F0QXJyYXlzKHNlZWQsIGNoZWNrc3VtKSk7XG5cbiAgICByZXR1cm4gZW5jb2RlZFNlZWQudG9TdHJpbmcoKS5zbGljZSgwLCBBTEdPUkFORF9TRUVEX0xFTkdUSCk7IC8vIHJlbW92aW5nIHRoZSBleHRyYSAnPT09PSdcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVTZWVkIGRlY29kZXMgYW4gYWxnbyBzZWVkXG4gICAqXG4gICAqIERlY29kaW5nIGFsZ28gc2VlZCBpcyBzYW1lIGFzIGRlY29kaW5nIGFkZHJlc3MuXG4gICAqIExhdGVzdCB2ZXJzaW9uIG9mIGFsZ28gc2RrICgxLjksIGF0IHRoaXMgd3JpdGluZykgZG9lcyBub3QgZXhwb3NlIGV4cGxpY2l0IG1ldGhvZCBmb3IgZGVjb2Rpbmcgc2VlZC5cbiAgICogUGFyYW1ldGVyIGlzIGRlY29kZWQgYW5kIHNwbGl0IGludG8gc2VlZCBhbmQgY2hlY2tzdW0uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gaGV4IG9yIGJhc2U2NCBlbmNvZGVkIHNlZWQgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHZhbGlkYXRlZCBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICAvLyB0cnkgdG8gZGVjb2RlXG4gICAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhzZWVkKTtcblxuICAgIC8vIFNhbml0eSBjaGVja1xuICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkgdGhyb3cgbmV3IEVycm9yKCdzZWVkIHNlZW1zIHRvIGJlIG1hbGZvcm1lZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCkpLFxuICAgICAgY2hlY2tzdW06IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEgsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHB1YiB7VWludDhBcnJheX0gcHVibGljIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSB7VWludDhBcnJheX0gc2lnbmVkIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB7QnVmZmVyfSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZC5cbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5LCBzaWduYXR1cmU6IEJ1ZmZlciwgcHViOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZSwgc2lnbmF0dXJlLCBwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYW4gRWQyNTUxOSBwdWJsaWMga2V5IGludG8gYW4gYWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwayBUaGUgRWQyNTUxOSBwdWJsaWMga2V5LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL2ZlYXR1cmVzL2FjY291bnRzLyN0cmFuc2Zvcm1hdGlvbi1wdWJsaWMta2V5LXRvLWFsZ29yYW5kLWFkZHJlc3NcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHBrOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKHBrKS50b1N0cmluZygnaGV4JykgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVVuc2lnbmVkQWxnb1R4bih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdHhuIFRoZSBlbmNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIHNpZ25lZCBvciB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCBzdHJpbmd9IHR4bkJ5dGVzIFRoZSBlbmNvZGVkIHVuc2lnbmVkIG9yIHNpZ25lZCB0eG4uXG4gICAqIEByZXR1cm5zIHtFbmNvZGVkVHh9IFRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgZGVjb2RlQWxnb1R4bih0eG5CeXRlczogVWludDhBcnJheSB8IHN0cmluZyk6IEVuY29kZWRUeCB7XG4gICAgbGV0IGJ1ZmZlciA9XG4gICAgICB0eXBlb2YgdHhuQnl0ZXMgPT09ICdzdHJpbmcnXG4gICAgICAgID8gQnVmZmVyLmZyb20odHhuQnl0ZXMsIGFsbEhleENoYXJzKHR4bkJ5dGVzKSA/ICdoZXgnIDogJ2Jhc2U2NCcpXG4gICAgICAgIDogQnVmZmVyLmZyb20odHhuQnl0ZXMpO1xuXG4gICAgLy8gSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBrZXlyZWcgdHJhbnNhY3Rpb25zIGVuY29kZWQgd2l0aFxuICAgIC8vIGZvcmtlZCBhbGdvc2RrIDEuMi4wIChodHRwczovL2dpdGh1Yi5jb20vQml0R28vYWxnb3Nkay1iaXRnbyksXG4gICAgLy8gdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhbmQgcGFyc2VkIGZvbGxvd2luZyB0aGUgbGF0ZXN0IGFsZ29zZGtcbiAgICAvLyByZWxlYXNlIHN0YW5kYXJkLlxuICAgIC8vIFRoaXMgd2F5IHdlIGNhbiBkZWNvZGUgdHJhbnNhY3Rpb25zIHN1Y2Nlc3NmdWxseSBieSBzdGlsbCBtYWludGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgIGNvbnN0IGRlY29kZWRUeCA9IGVuY29kaW5nLmRlY29kZShidWZmZXIpO1xuICAgIGlmIChkZWNvZGVkVHgudHhuICYmIGRlY29kZWRUeC50eG4udHlwZSA9PT0gJ2tleXJlZycpIHtcbiAgICAgIGRlY29kZWRUeC50eG4udm90ZWtleSA9IGRlY29kZWRUeC50eG4udm90ZWtleSB8fCBkZWNvZGVkVHgubXNpZy5zdWJzaWdbMF0ucGs7XG4gICAgICBkZWNvZGVkVHgudHhuLnNlbGtleSA9IGRlY29kZWRUeC50eG4uc2Vsa2V5IHx8IGRlY29kZWRUeC5tc2lnLnN1YnNpZ1swXS5waztcbiAgICAgIGJ1ZmZlciA9IGRlY29kZWRUeC5tc2lnIHx8IGRlY29kZWRUeC5zaWcgPyBlbmNvZGluZy5lbmNvZGUoZGVjb2RlZFR4KSA6IGVuY29kaW5nLmVuY29kZShkZWNvZGVkVHgudHhuKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudHJ5VG9EZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBJZ25vcmUgZXJyb3IgdG8gdHJ5IGRpZmZlcmVudCBmb3JtYXRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudHJ5VG9EZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZGVjb2RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZGVjb2RlIGEgc2lnbmVkIEFsZ28gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGJ1ZmZlciB0aGUgZW5jb2RlZCB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7IEVuY29kZWRUeCB9IHRoZSBkZWNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKiBAdGhyb3dzIGVycm9yIGlmIGl0IGlzIG5vdCBhIHZhbGlkIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICB0cnlUb0RlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcjogQnVmZmVyKTogRW5jb2RlZFR4IHtcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGhcbiAgICAvLyByZXR1cm4gYWxnb3Nkay5UcmFuc2FjdGlvbi5mcm9tX29ial9mb3JfZW5jb2RpbmcoYWxnb3Nkay5kZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXIpLnR4bik7XG4gICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2lzc3Vlcy8zNjRcbiAgICAvLyBcIi4uLnNvbWUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRyZWF0IHRoZSBvdXRwdXQgb2YgVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nIGFzIEVuY29kZWRUcmFuc2FjdGlvbi5cbiAgICAvLyBUaGV5IG5lZWQgdG8gYmUgZml4ZWQob3Igd2UgYXQgbGVhc3QgbmVlZCB0byBtYWtlIGl0IHNvIFRyYW5zYWN0aW9uIGNvbmZvcm1zIHRvIEVuY29kZWRUcmFuc2FjdGlvbikuXCJcbiAgICBjb25zdCB0eCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcblxuICAgIGNvbnN0IHNpZ25lcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc2lnbmVkQnk6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHR4Lm1zaWcgJiYgdHgubXNpZy5zdWJzaWcpIHtcbiAgICAgIGZvciAoY29uc3Qgc2lnIG9mIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICAgIGNvbnN0IGFkZHIgPSBhbGdvc2RrLmVuY29kZUFkZHJlc3Moc2lnLnBrKTtcbiAgICAgICAgc2lnbmVycy5wdXNoKGFkZHIpO1xuICAgICAgICBpZiAoc2lnLnMpIHtcbiAgICAgICAgICBzaWduZWRCeS5wdXNoKGFkZHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1RyYW5zYWN0aW9uOiBuZXcgVWludDhBcnJheShidWZmZXIpLFxuICAgICAgdHhuOiB0eC50eG4sXG4gICAgICBzaWduZWQ6IHRydWUsXG4gICAgICBzaWduZXJzOiBzaWduZXJzLFxuICAgICAgc2lnbmVkQnk6IHNpZ25lZEJ5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGRlY29kZSBhbiB1bnNpZ25lZCBBbGdvIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBidWZmZXIgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gdGhlIGRlY29kZWQgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBlcnJvciBpZiBpdCBpcyBub3QgYSB2YWxpZCBlbmNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICB0cnlUb0RlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyOiBCdWZmZXIpOiBFbmNvZGVkVHgge1xuICAgIGNvbnN0IHR4biA9IGFsZ29zZGsuZGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIHJldHVybiB7XG4gICAgICByYXdUcmFuc2FjdGlvbjogbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSxcbiAgICAgIHR4bixcbiAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIC8qXG4gICAqIGVuY29kZU9iaiB0YWtlcyBhIGphdmFzY3JpcHQgb2JqZWN0IGFuZCByZXR1cm5zIGl0cyBtc2dwYWNrIGVuY29kaW5nXG4gICAqIE5vdGUgdGhhdCB0aGUgZW5jb2Rpbmcgc29ydHMgdGhlIGZpZWxkcyBhbHBoYWJldGljYWxseVxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT59IG9iaiBqcyBvYmpcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFVpbnQ4QXJyYXkgYmluYXJ5IHJlcHJlc2VudGF0aW9uXG4gICAqL1xuICBlbmNvZGVPYmoob2JqOiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+KTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZW5jb2RlT2JqKG9iaik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlT2JqIHRha2VzIGEgVWludDhBcnJheSBhbmQgcmV0dXJucyBpdHMgamF2YXNjcmlwdCBvYmpcbiAgICogQHBhcmFtIG8gLSBVaW50OEFycmF5IHRvIGRlY29kZVxuICAgKiBAcmV0dXJucyBvYmplY3RcbiAgICovXG4gIGRlY29kZU9iaihvOiBBcnJheUxpa2U8bnVtYmVyPik6IHVua25vd24ge1xuICAgIHJldHVybiBhbGdvc2RrLmRlY29kZU9iaihvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWNyZXRLZXlUb01uZW1vbmljIHRha2VzIGFuIEFsZ29yYW50IHNlY3JldCBrZXkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgbW5lbW9uaWNcbiAgICpcbiAgICogQHBhcmFtIHNrIC0gQWxnb3JhbnQgc2VjcmV0IGtleVxuICAgKiBAcmV0dXJuIFNlY3JldCBrZXkgaXMgYXNzb2NpYXRlZCBtbmVtb25pY1xuICAgKi9cbiAgc2VjcmV0S2V5VG9NbmVtb25pYyhzazogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBza1ZhbGlkID0gQnVmZmVyLmZyb20oc2sudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFByaXZhdGVLZXkoc2tWYWxpZC50b1N0cmluZygnaGV4JykpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleShgVGhlIHNlY3JldCBrZXk6ICR7c2sudG9TdHJpbmcoJ2hleCcpfSBpcyBpbnZhbGlkYCk7XG4gICAgfVxuICAgIGNvbnN0IHNrVW5pdDhBcnJheSA9IEJ1ZmZlci5mcm9tKHNrKTtcbiAgICByZXR1cm4gYWxnb3Nkay5zZWNyZXRLZXlUb01uZW1vbmljKHNrVW5pdDhBcnJheSk7XG4gIH1cblxuICAvKipcbiAgICogc2VlZEZyb21NbmVtb25pYyBjb252ZXJ0cyBhIG1uZW1vbmljIGdlbmVyYXRlZCB1c2luZyB0aGlzIGxpYnJhcnkgaW50byB0aGUgc291cmNlIGtleSB1c2VkIHRvIGNyZWF0ZSBpdFxuICAgKiBJdCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBwYXNzZWQgbW5lbW9uaWMgaGFzIGFuIGluY29ycmVjdCBjaGVja3N1bSwgaWYgdGhlIG51bWJlciBvZiB3b3JkcyBpcyB1bmV4cGVjdGVkLCBvciBpZiBvbmVcbiAgICogb2YgdGhlIHBhc3NlZCB3b3JkcyBpcyBub3QgZm91bmQgaW4gdGhlIHdvcmRzIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICogQHJldHVybnMgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqL1xuICBzZWVkRnJvbU1uZW1vbmljKG1uZW1vbmljOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gYWxnb3Nkay5tbmVtb25pY1RvTWFzdGVyRGVyaXZhdGlvbktleShtbmVtb25pYyk7XG4gIH1cblxuICAvKipcbiAgICoga2V5UGFpckZyb21TZWVkIGdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBzZWNyZXRLZXkgYW5kIHB1YmxpY0tleSB1c2luZyB0aGUgYWxnb3Nka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBtbiA9IHRoaXMubW5lbW9uaWNGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBiYXNlNjRQcml2YXRlS2V5ID0gYWxnb3Nkay5tbmVtb25pY1RvU2VjcmV0S2V5KG1uKS5zaztcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVLZXlQYWlyKGJhc2U2NFByaXZhdGVLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgbmV3IGBLZXlQYWlyYCBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlNjRQcml2YXRlS2V5IDY0IGJ5dGVzIGxvbmcgcHJpdmF0ZUtleVxuICAgKiBAcmV0dXJucyBLZXlQYWlyXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5OiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qgc2sgPSBiYXNlNjRQcml2YXRlS2V5LnNsaWNlKDAsIDMyKTtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKHNrKS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlUHJpdmF0ZUtleSBnZW5lcmF0ZXMgYSBzZWVkIHdpdGggYSBtbmVtb25pYyBhbmQgdXNpbmcgYWxnb3Nkay5cbiAgICpcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWMgLSAyNSB3b3JkcyBtbmVtb25pY1xuICAgKi9cbiAgcHJvdGVjdGVkIG1uZW1vbmljRnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFzdGVyRGVyaXZhdGlvbktleVRvTW5lbW9uaWMoc2VlZCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBrZXkgd2l0aCB0aGUgc3RlbGxhci1zZGtcbiAgICpcbiAgICogQHBhcmFtIHB1YmxpY0tleVxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgQnVmZmVyXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIocHVibGljS2V5OiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0ZWxsYXIgc2VlZCB0byBhbGdvcmFuZCBlbmNvZGluZ1xuICAgKlxuICAgKiBAcGFyYW0gc2VlZFxuICAgKiBAcmV0dXJucyBzdHJpbmcgdGhlIGVuY29kZWQgc2VlZFxuICAgKi9cbiAgY29udmVydEZyb21TdGVsbGFyU2VlZChzZWVkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZWVkRW5jb2RpbmcuZW5jb2RlKHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlTZWNyZXRTZWVkKHNlZWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFkZHJlc3MgZW5jb2RlZCB3aXRoIGFsZ29zZGtcbiAgICpcbiAgICogQHBhcmFtIGFkZHJcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBlbmNvZGVBZGRyZXNzKGFkZHI6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZUFkZHJlc3MoYWRkcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFkZHJlc3MgZGVjb2RlZCB3aXRoIGFsZ29zZGtcbiAgICpcbiAgICogQHBhcmFtIGFkZHJcbiAgICogQHJldHVybnMgQWRkcmVzc1xuICAgKi9cbiAgZGVjb2RlQWRkcmVzcyhhZGRyOiBzdHJpbmcpOiBBZGRyZXNzIHtcbiAgICByZXR1cm4gYWxnb3Nkay5kZWNvZGVBZGRyZXNzKGFkZHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFkZHJlc3MgaW50byBhbiBBTEdPIG9uZVxuICAgKiBJZiB0aGUgZ2l2ZW4gZGF0YSBpcyBhIFN0ZWxsYXIgYWRkcmVzcyBvciBwdWJsaWMga2V5LCBpdCBpcyBjb252ZXJ0ZWQgdG8gQUxHTyBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzc09yUHViS2V5IGFuIEFMR08gYWRkcmVzcywgb3IgYW4gU3RlbGxhciBhZGRyZXNzIG9yIHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMgYWRkcmVzcyBhbGdvIGFkZHJlc3Mgc3RyaW5nXG4gICAqL1xuICBzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MoYWRkcmVzc09yUHViS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHdlIGhhdmUgYW4gQWxnb3JhbmQgYWRkcmVzc1xuICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIHJldHVybiBhZGRyZXNzT3JQdWJLZXk7XG4gICAgfVxuICAgIC8vIHdlIGhhdmUgYSBzdGVsbGFyIGtleVxuICAgIGlmICh0aGlzLmlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICBjb25zdCBzdGVsbGFyUHViID0gdGhpcy5kZWNvZGVFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpO1xuICAgICAgY29uc3QgYWxnb0FkZHJlc3MgPSB0aGlzLmVuY29kZUFkZHJlc3Moc3RlbGxhclB1Yik7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhbGdvQWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGFsZ29BZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29udmVydCBTdGVsbGFyIGFkZHJlc3MgdG8gYW4gQWxnb3JhbmQgYWRkcmVzcyB2aWEgcHVia2V5LicpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgYW4gQWxnb3JhbmQgYWRkcmVzcyBub3IgYSBzdGVsbGFyIHB1YmtleS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBtdWx0aXNpZ0FkZHJlc3MgdGFrZXMgbXVsdGlzaWcgbWV0YWRhdGEgKHByZWltYWdlKSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiBtdXRsaXNpZyB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgbXVsdGlzaWcgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFkZHJzIGxpc3Qgb2YgQWxnb3JhbmQgYWRkcmVzc2VzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGh1bWFuIHJlYWRhYmxlIEFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBtdWx0aXNpZ0FkZHJlc3ModmVyc2lvbjogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgYWRkcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3Moe1xuICAgICAgdmVyc2lvbixcbiAgICAgIHRocmVzaG9sZCxcbiAgICAgIGFkZHJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlQWNjb3VudCBnZW5lcmF0ZXMgdW4gYWNjb3VudCB3aXRoIGEgc2VjcmV0S2V5IGFuZCBhbiBhZGRyZXNzXG4gICAqXG4gICAqIEZ1bmN0aW9uIGhhcyBub3QgcGFyYW1zXG4gICAqIEByZXR1cm5zIEFjY291bnRcbiAgICovXG4gIGdlbmVyYXRlQWNjb3VudCgpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIHJldHVybiBhbGdvc2RrLmdlbmVyYXRlQWNjb3VudCgpO1xuICB9XG5cbiAgZ2VuZXJhdGVBY2NvdW50RnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IGFsZ29zZGsuQWNjb3VudCB7XG4gICAgY29uc3Qga2V5cyA9IG5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWVkKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyOiBhbGdvc2RrLmVuY29kZUFkZHJlc3Moa2V5cy5wdWJsaWNLZXkpLFxuICAgICAgc2s6IGtleXMuc2VjcmV0S2V5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIFR4IElEIGZyb20gYW4gZW5jb2RlZCBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBvZiBhIGNoYW5nZSBtYWRlIG9uIHZlcnNpb24gMS4xMC4xIG9uIGFsZ29zZGsgc28gbWV0aG9kIHR4SUQoKSBvbmx5IHN1cHBvcnRzIFNpZ25lZFRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIChodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2Jsb2IvZGV2ZWxvcC9DSEFOR0VMT0cubWQjMTEwMSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR4QmFzZTY0IC0gZW5jb2RlZCBiYXNlNjQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0cmFuc2FjdGlvbiBJRFxuICAgKi9cbiAgZ2V0TXVsdGlzaWdUeElEKHR4QmFzZTY0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4Qnl0ZXMgPSBCdWZmZXIuZnJvbSh0eEJhc2U2NCwgJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IGRlY29kZVNpZ25UeCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhCeXRlcyk7XG4gICAgY29uc3Qgd2VsbEZvcm1lZERlY29kZWRTaWduVHggPSBkZWNvZGVTaWduVHgudHhuLmdldF9vYmpfZm9yX2VuY29kaW5nKCk7XG4gICAgY29uc3QgdHhGb3JFbmNvZGluZyA9IHsgbXNpZzogZGVjb2RlU2lnblR4Lm1zaWcsIHR4bjogd2VsbEZvcm1lZERlY29kZWRTaWduVHggfTtcbiAgICBjb25zdCBlbl9tc2cgPSBlbmNvZGluZy5lbmNvZGUodHhGb3JFbmNvZGluZyk7XG4gICAgY29uc3QgdGFnID0gQnVmZmVyLmZyb20oWzg0LCA4OF0pO1xuICAgIGNvbnN0IGdoID0gQnVmZmVyLmZyb20oY29uY2F0QXJyYXlzKHRhZywgZW5fbXNnKSk7XG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5mcm9tKGFsZ29OYWNsLmdlbmVyaWNIYXNoKGdoKSk7XG4gICAgcmV0dXJuIGJhc2UzMi5lbmNvZGUoaGFzaCkuc2xpY2UoMCwgQUxHT1JBTkRfVFJBTlNBQ1RJT05fTEVOR1RIKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gZGF0YSBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSBhIHRva2VuXG4gICAqIEBwYXJhbSBhbW91bnQgdGhlIGFtb3VudCBpbiB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gZnJvbSB0aGUgb3JpZ2luYXRlZCBhZGRyZXNzXG4gICAqIEBwYXJhbSB0byB0aGUgdGFyZ2V0IGFkZHJlc3NcbiAgICogQHBhcmFtIGNsb3NlUmVtYWluZGVyVG8gKG9wdGlvbmFsKSBhZGRyZXNzIHRvIHNlbmQgcmVtYWluaW5nIHVuaXRzIGluIG9yaWdpbmF0ZWQgYWRkcmVzc1xuICAgKiBAcmV0dXJucyAnZW5hYmxlVG9rZW4nIG9yICdkaXNhYmxlVG9rZW4nXG4gICAqL1xuICBnZXRUb2tlblR4VHlwZShhbW91bnQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBjbG9zZVJlbWFpbmRlclRvPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZSA9ICd0cmFuc2ZlclRva2VuJztcbiAgICBpZiAoYW1vdW50ID09PSAnMCcgJiYgZnJvbSA9PT0gdG8pIHtcbiAgICAgIHR5cGUgPSAhY2xvc2VSZW1haW5kZXJUbyA/ICdlbmFibGVUb2tlbicgOiAnZGlzYWJsZVRva2VuJztcbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
544
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNoRCxJQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEO0lBQUE7SUFzZ0JBLENBQUM7SUFyZ0JDLGtCQUFrQjtJQUNsQiw4QkFBYyxHQUFkLFVBQWUsT0FB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QUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxQztRQUNELElBQU0sWUFBWSxHQUNoQixzR0FBc0csQ0FBQztRQUN6RyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBQ0gsWUFBQztBQUFELENBQUMsQUF0Z0JELElBc2dCQztBQXRnQlksc0JBQUs7QUF3Z0JsQixJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbGdvc2RrIGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0ICogYXMgaGV4IGZyb20gJ0BzdGFibGVsaWIvaGV4JztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBzaGE1MTIgZnJvbSAnanMtc2hhNTEyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVV0aWxzIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZEtleSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQWRkcmVzcywgRW5jb2RlZFR4LCBTZWVkIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTZWVkRW5jb2RpbmcgfSBmcm9tICcuL3NlZWRFbmNvZGluZyc7XG5pbXBvcnQgKiBhcyBhbGdvTmFjbCBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9uYWNsL25hY2xXcmFwcGVycyc7XG5pbXBvcnQgKiBhcyBlbmNvZGluZyBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9lbmNvZGluZy9lbmNvZGluZyc7XG5cbmNvbnN0IEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIID0gNDtcbmNvbnN0IEFMR09SQU5EX1NFRURfTEVOR1RIID0gNTg7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9UUkFOU0FDVElPTl9MRU5HVEggPSA1MjtcbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgb25seSBjb21wb3NlZCBvZiBoZXggY2hhcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1heWJlIFRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHN0cmluZyBjb25zaXN0cyBvZiBvbmx5IGhleCBjaGFyYWN0ZXJzLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmZ1bmN0aW9uIGFsbEhleENoYXJzKG1heWJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKFswLTlhLWZdezJ9KSskL2kudGVzdChtYXliZSk7XG59XG5cbi8qKlxuICogQ29uY2F0QXJyYXlzIHRha2VzIHR3byBhcnJheSBhbmQgcmV0dXJucyBhIGpvaW50IGFycmF5IG9mIGJvdGhcbiAqXG4gKiBAcGFyYW0gYSB7VWludDhBcnJheX0gZmlyc3QgYXJyYXkgdG8gY29uY2F0XG4gKiBAcGFyYW0gYiB7VWludDhBcnJheX0gc2Vjb25kIGFycmF5XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gYSBuZXcgYXJyYXkgY29udGFpbmluZyBhbGwgZWxlbWVudHMgb2YgJ2EnIGZvbGxvd2VkIGJ5IGFsbCBlbGVtZW50cyBvZiAnYidcbiAqL1xuZnVuY3Rpb24gY29uY2F0QXJyYXlzKGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYyA9IG5ldyBVaW50OEFycmF5KGEubGVuZ3RoICsgYi5sZW5ndGgpO1xuICBjLnNldChhKTtcbiAgYy5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhbGdvc2RrLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eElkLmxlbmd0aCAhPT0gMTA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbEhleENoYXJzKHR4SWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIC0gdGhlIGJ1ZmZlciB0byBiZSBjb252ZXJ0ZWQgdG8gaGV4XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICAgKi9cbiAgdG9IZXgoYnVmZmVyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaGV4LmVuY29kZShidWZmZXIsIHRydWUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaXNWYWxpZFNpZ25hdHVyZSBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2hhc2ggbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIEtleXNcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkxIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkyIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gcmV0dXJucyB0cnVlIGlmIGJvdGgga2V5cyBhcmUgZXF1YWxcbiAgICovXG4gIGFyZUtleXNFcXVhbChrZXkxOiBVaW50OEFycmF5LCBrZXkyOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wudmVyaWZ5KGtleTEsIGtleTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBVaW50OEFycmF5IG9mIHRoZSBnaXZlbiBoZXggc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSB0aGUgaGV4IHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgVWludDhBcnJheSB2YWx1ZVxuICAgKi9cbiAgdG9VaW50OEFycmF5KHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhIHNlZWQgaXMgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgdGhlIHNlZWQgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRTZWVkKHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VlZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChzZWVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9MRU5HVEgpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFRyeSB0byBkZWNvZGVcbiAgICBsZXQgZGVjb2RlZDtcbiAgICB0cnkge1xuICAgICAgZGVjb2RlZCA9IHRoaXMuZGVjb2RlU2VlZChzZWVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShkZWNvZGVkLnNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMgdGhlIG9uZSBmcm9tIHRoZSBkZWNvZGVkIHNlZWRcbiAgICByZXR1cm4gXy5pc0VxdWFsKGNoZWNrc3VtLCBkZWNvZGVkLmNoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gYWxnbyBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSAge0J1ZmZlcn0gc2VjcmV0S2V5IC0gdGhlIHZhbGlkIHNlY3JldEtleSAuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKi9cbiAgZW5jb2RlU2VlZChzZWNyZXRLZXk6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgLy8gZ2V0IHNlZWRcbiAgICBjb25zdCBzZWVkID0gc2VjcmV0S2V5LnNsaWNlKDAsIFNFRURfQllURVNfTEVOR1RIKTtcbiAgICAvLyBjb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBCdWZmZXIuZnJvbShcbiAgICAgIHNoYTUxMi5zaGE1MTJfMjU2LmFycmF5KHNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuICAgIGNvbnN0IGVuY29kZWRTZWVkID0gYmFzZTMyLmVuY29kZShjb25jYXRBcnJheXMoc2VlZCwgY2hlY2tzdW0pKTtcblxuICAgIHJldHVybiBlbmNvZGVkU2VlZC50b1N0cmluZygpLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfTEVOR1RIKTsgLy8gcmVtb3ZpbmcgdGhlIGV4dHJhICc9PT09J1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVNlZWQgZGVjb2RlcyBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogRGVjb2RpbmcgYWxnbyBzZWVkIGlzIHNhbWUgYXMgZGVjb2RpbmcgYWRkcmVzcy5cbiAgICogTGF0ZXN0IHZlcnNpb24gb2YgYWxnbyBzZGsgKDEuOSwgYXQgdGhpcyB3cml0aW5nKSBkb2VzIG5vdCBleHBvc2UgZXhwbGljaXQgbWV0aG9kIGZvciBkZWNvZGluZyBzZWVkLlxuICAgKiBQYXJhbWV0ZXIgaXMgZGVjb2RlZCBhbmQgc3BsaXQgaW50byBzZWVkIGFuZCBjaGVja3N1bS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSBoZXggb3IgYmFzZTY0IGVuY29kZWQgc2VlZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge1NlZWR9IC0gdmFsaWRhdGVkIG9iamVjdCBTZWVkXG4gICAqL1xuICBkZWNvZGVTZWVkKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIC8vIHRyeSB0byBkZWNvZGVcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuXG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIKSB0aHJvdyBuZXcgRXJyb3IoJ3NlZWQgc2VlbXMgdG8gYmUgbWFsZm9ybWVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZWQ6IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoMCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIKSksXG4gICAgICBjaGVja3N1bTogbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgc2lnbmF0dXJlIGZvciBtZXNzYWdlIGlzIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gcHViIHtVaW50OEFycmF5fSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlIHtVaW50OEFycmF5fSBzaWduZWQgbWVzc2FnZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHtCdWZmZXJ9IHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkLlxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2U6IFVpbnQ4QXJyYXksIHNpZ25hdHVyZTogQnVmZmVyLCBwdWI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkLnZlcmlmeShtZXNzYWdlLCBzaWduYXR1cmUsIHB1Yik7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBFZDI1NTE5IHB1YmxpYyBrZXkgaW50byBhbiBhbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHBrIFRoZSBFZDI1NTE5IHB1YmxpYyBrZXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvZmVhdHVyZXMvYWNjb3VudHMvI3RyYW5zZm9ybWF0aW9uLXB1YmxpYy1rZXktdG8tYWxnb3JhbmQtYWRkcmVzc1xuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYWxnb3JhbmQgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpY0tleVRvQWxnb0FkZHJlc3MocGs6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20ocGspLnRvU3RyaW5nKCdoZXgnKSB9KS5nZXRBZGRyZXNzKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdHhuIFRoZSBlbmNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlVW5zaWduZWRBbGdvVHhuKHR4bjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBzaWduZWQgYWxnbyB0cmFuc2FjdGlvbiBjYW4gYmUgZGVjb2RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSB0eG4gVGhlIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlU2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gdHhuQnl0ZXMgVGhlIGVuY29kZWQgdW5zaWduZWQgb3Igc2lnbmVkIHR4bi5cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gVGhlIGRlY29kZWQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBkZWNvZGVBbGdvVHhuKHR4bkJ5dGVzOiBVaW50OEFycmF5IHwgc3RyaW5nKTogRW5jb2RlZFR4IHtcbiAgICBsZXQgYnVmZmVyID1cbiAgICAgIHR5cGVvZiB0eG5CeXRlcyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBCdWZmZXIuZnJvbSh0eG5CeXRlcywgYWxsSGV4Q2hhcnModHhuQnl0ZXMpID8gJ2hleCcgOiAnYmFzZTY0JylcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eG5CeXRlcyk7XG5cbiAgICAvLyBJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtleXJlZyB0cmFuc2FjdGlvbnMgZW5jb2RlZCB3aXRoXG4gICAgLy8gZm9ya2VkIGFsZ29zZGsgMS4yLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9hbGdvc2RrLWJpdGdvKSxcbiAgICAvLyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZCBwYXJzZWQgZm9sbG93aW5nIHRoZSBsYXRlc3QgYWxnb3Nka1xuICAgIC8vIHJlbGVhc2Ugc3RhbmRhcmQuXG4gICAgLy8gVGhpcyB3YXkgd2UgY2FuIGRlY29kZSB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGJ5IHN0aWxsIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlcik7XG4gICAgaWYgKFxuICAgICAgZGVjb2RlZFR4LnR4biAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi50eXBlID09PSAna2V5cmVnJyAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi52b3RlZnN0ICYmXG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVsc3QgJiZcbiAgICAgIGRlY29kZWRUeC50eG4udm90ZWtkXG4gICAgKSB7XG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVrZXkgPSBkZWNvZGVkVHgudHhuLnZvdGVrZXkgfHwgZGVjb2RlZFR4Lm1zaWcuc3Vic2lnWzBdLnBrO1xuICAgICAgZGVjb2RlZFR4LnR4bi5zZWxrZXkgPSBkZWNvZGVkVHgudHhuLnNlbGtleSB8fCBkZWNvZGVkVHgubXNpZy5zdWJzaWdbMF0ucGs7XG4gICAgICBidWZmZXIgPSBkZWNvZGVkVHgubXNpZyB8fCBkZWNvZGVkVHguc2lnID8gZW5jb2RpbmcuZW5jb2RlKGRlY29kZWRUeCkgOiBlbmNvZGluZy5lbmNvZGUoZGVjb2RlZFR4LnR4bik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIGVycm9yIHRvIHRyeSBkaWZmZXJlbnQgZm9ybWF0XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2Fubm90IGJlIGRlY29kZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGRlY29kZSBhIHNpZ25lZCBBbGdvIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBidWZmZXIgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgeyBFbmNvZGVkVHggfSB0aGUgZGVjb2RlZCBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBlcnJvciBpZiBpdCBpcyBub3QgYSB2YWxpZCBlbmNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXI6IEJ1ZmZlcik6IEVuY29kZWRUeCB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoXG4gICAgLy8gcmV0dXJuIGFsZ29zZGsuVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nKGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKS50eG4pO1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9pc3N1ZXMvMzY0XG4gICAgLy8gXCIuLi5zb21lIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSB0cmVhdCB0aGUgb3V0cHV0IG9mIFRyYW5zYWN0aW9uLmZyb21fb2JqX2Zvcl9lbmNvZGluZyBhcyBFbmNvZGVkVHJhbnNhY3Rpb24uXG4gICAgLy8gVGhleSBuZWVkIHRvIGJlIGZpeGVkKG9yIHdlIGF0IGxlYXN0IG5lZWQgdG8gbWFrZSBpdCBzbyBUcmFuc2FjdGlvbiBjb25mb3JtcyB0byBFbmNvZGVkVHJhbnNhY3Rpb24pLlwiXG4gICAgY29uc3QgdHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG5cbiAgICBjb25zdCBzaWduZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNpZ25lZEJ5OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0eC5tc2lnICYmIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICBmb3IgKGNvbnN0IHNpZyBvZiB0eC5tc2lnLnN1YnNpZykge1xuICAgICAgICBjb25zdCBhZGRyID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHNpZy5wayk7XG4gICAgICAgIHNpZ25lcnMucHVzaChhZGRyKTtcbiAgICAgICAgaWYgKHNpZy5zKSB7XG4gICAgICAgICAgc2lnbmVkQnkucHVzaChhZGRyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYXdUcmFuc2FjdGlvbjogbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSxcbiAgICAgIHR4bjogdHgudHhuLFxuICAgICAgc2lnbmVkOiB0cnVlLFxuICAgICAgc2lnbmVyczogc2lnbmVycyxcbiAgICAgIHNpZ25lZEJ5OiBzaWduZWRCeSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkZWNvZGUgYW4gdW5zaWduZWQgQWxnbyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtFbmNvZGVkVHh9IHRoZSBkZWNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqIEB0aHJvd3MgZXJyb3IgaWYgaXQgaXMgbm90IGEgdmFsaWQgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcjogQnVmZmVyKTogRW5jb2RlZFR4IHtcbiAgICBjb25zdCB0eG4gPSBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmF3VHJhbnNhY3Rpb246IG5ldyBVaW50OEFycmF5KGJ1ZmZlciksXG4gICAgICB0eG4sXG4gICAgICBzaWduZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBlbmNvZGVPYmogdGFrZXMgYSBqYXZhc2NyaXB0IG9iamVjdCBhbmQgcmV0dXJucyBpdHMgbXNncGFjayBlbmNvZGluZ1xuICAgKiBOb3RlIHRoYXQgdGhlIGVuY29kaW5nIHNvcnRzIHRoZSBmaWVsZHMgYWxwaGFiZXRpY2FsbHlcbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+fSBvYmoganMgb2JqXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBVaW50OEFycmF5IGJpbmFyeSByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZW5jb2RlT2JqKG9iajogUmVjb3JkPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55Pik6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZU9iaihvYmopO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZU9iaiB0YWtlcyBhIFVpbnQ4QXJyYXkgYW5kIHJldHVybnMgaXRzIGphdmFzY3JpcHQgb2JqXG4gICAqIEBwYXJhbSBvIC0gVWludDhBcnJheSB0byBkZWNvZGVcbiAgICogQHJldHVybnMgb2JqZWN0XG4gICAqL1xuICBkZWNvZGVPYmoobzogQXJyYXlMaWtlPG51bWJlcj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gYWxnb3Nkay5kZWNvZGVPYmoobyk7XG4gIH1cblxuICAvKipcbiAgICogc2VjcmV0S2V5VG9NbmVtb25pYyB0YWtlcyBhbiBBbGdvcmFudCBzZWNyZXQga2V5IGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIG1uZW1vbmljXG4gICAqXG4gICAqIEBwYXJhbSBzayAtIEFsZ29yYW50IHNlY3JldCBrZXlcbiAgICogQHJldHVybiBTZWNyZXQga2V5IGlzIGFzc29jaWF0ZWQgbW5lbW9uaWNcbiAgICovXG4gIHNlY3JldEtleVRvTW5lbW9uaWMoc2s6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2tWYWxpZCA9IEJ1ZmZlci5mcm9tKHNrLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRQcml2YXRlS2V5KHNrVmFsaWQudG9TdHJpbmcoJ2hleCcpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoYFRoZSBzZWNyZXQga2V5OiAke3NrLnRvU3RyaW5nKCdoZXgnKX0gaXMgaW52YWxpZGApO1xuICAgIH1cbiAgICBjb25zdCBza1VuaXQ4QXJyYXkgPSBCdWZmZXIuZnJvbShzayk7XG4gICAgcmV0dXJuIGFsZ29zZGsuc2VjcmV0S2V5VG9NbmVtb25pYyhza1VuaXQ4QXJyYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlZWRGcm9tTW5lbW9uaWMgY29udmVydHMgYSBtbmVtb25pYyBnZW5lcmF0ZWQgdXNpbmcgdGhpcyBsaWJyYXJ5IGludG8gdGhlIHNvdXJjZSBrZXkgdXNlZCB0byBjcmVhdGUgaXRcbiAgICogSXQgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgcGFzc2VkIG1uZW1vbmljIGhhcyBhbiBpbmNvcnJlY3QgY2hlY2tzdW0sIGlmIHRoZSBudW1iZXIgb2Ygd29yZHMgaXMgdW5leHBlY3RlZCwgb3IgaWYgb25lXG4gICAqIG9mIHRoZSBwYXNzZWQgd29yZHMgaXMgbm90IGZvdW5kIGluIHRoZSB3b3JkcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljXG4gICAqIEByZXR1cm5zIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKi9cbiAgc2VlZEZyb21NbmVtb25pYyhtbmVtb25pYzogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsubW5lbW9uaWNUb01hc3RlckRlcml2YXRpb25LZXkobW5lbW9uaWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIGFsZ29zZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3QgbW4gPSB0aGlzLm1uZW1vbmljRnJvbVNlZWQoc2VlZCk7XG4gICAgY29uc3QgYmFzZTY0UHJpdmF0ZUtleSA9IGFsZ29zZGsubW5lbW9uaWNUb1NlY3JldEtleShtbikuc2s7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIG5ldyBgS2V5UGFpcmAgb2JqZWN0IGZyb20gdGhlIGdpdmVuIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZTY0UHJpdmF0ZUtleSA2NCBieXRlcyBsb25nIHByaXZhdGVLZXlcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUtleVBhaXIoYmFzZTY0UHJpdmF0ZUtleTogVWludDhBcnJheSk6IEtleVBhaXIge1xuICAgIGNvbnN0IHNrID0gYmFzZTY0UHJpdmF0ZUtleS5zbGljZSgwLCAzMik7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHJ2OiBCdWZmZXIuZnJvbShzaykudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVByaXZhdGVLZXkgZ2VuZXJhdGVzIGEgc2VlZCB3aXRoIGEgbW5lbW9uaWMgYW5kIHVzaW5nIGFsZ29zZGsuXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKiBAcmV0dXJucyBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICovXG4gIHByb3RlY3RlZCBtbmVtb25pY0Zyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLm1hc3RlckRlcml2YXRpb25LZXlUb01uZW1vbmljKHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGtleSB3aXRoIHRoZSBzdGVsbGFyLXNka1xuICAgKlxuICAgKiBAcGFyYW0gcHVibGljS2V5XG4gICAqIEByZXR1cm5zIEJ1ZmZlclxuICAgKi9cbiAgcHJvdGVjdGVkIGRlY29kZUVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBzdGVsbGFyIHNlZWQgdG8gYWxnb3JhbmQgZW5jb2RpbmdcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSBlbmNvZGVkIHNlZWRcbiAgICovXG4gIGNvbnZlcnRGcm9tU3RlbGxhclNlZWQoc2VlZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU2VlZEVuY29kaW5nLmVuY29kZShzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5U2VjcmV0U2VlZChzZWVkKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhZGRyZXNzIGVuY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZW5jb2RlQWRkcmVzcyhhZGRyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGFkZHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhZGRyZXNzIGRlY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIEFkZHJlc3NcbiAgICovXG4gIGRlY29kZUFkZHJlc3MoYWRkcjogc3RyaW5nKTogQWRkcmVzcyB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhhZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhZGRyZXNzIGludG8gYW4gQUxHTyBvbmVcbiAgICogSWYgdGhlIGdpdmVuIGRhdGEgaXMgYSBTdGVsbGFyIGFkZHJlc3Mgb3IgcHVibGljIGtleSwgaXQgaXMgY29udmVydGVkIHRvIEFMR08gYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3NPclB1YktleSBhbiBBTEdPIGFkZHJlc3MsIG9yIGFuIFN0ZWxsYXIgYWRkcmVzcyBvciBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIGFkZHJlc3MgYWxnbyBhZGRyZXNzIHN0cmluZ1xuICAgKi9cbiAgc3RlbGxhckFkZHJlc3NUb0FsZ29BZGRyZXNzKGFkZHJlc3NPclB1YktleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyB3ZSBoYXZlIGFuIEFsZ29yYW5kIGFkZHJlc3NcbiAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICByZXR1cm4gYWRkcmVzc09yUHViS2V5O1xuICAgIH1cbiAgICAvLyB3ZSBoYXZlIGEgc3RlbGxhciBrZXlcbiAgICBpZiAodGhpcy5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KSkge1xuICAgICAgY29uc3Qgc3RlbGxhclB1YiA9IHRoaXMuZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KTtcbiAgICAgIGNvbnN0IGFsZ29BZGRyZXNzID0gdGhpcy5lbmNvZGVBZGRyZXNzKHN0ZWxsYXJQdWIpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWxnb0FkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBhbGdvQWRkcmVzcztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbnZlcnQgU3RlbGxhciBhZGRyZXNzIHRvIGFuIEFsZ29yYW5kIGFkZHJlc3MgdmlhIHB1YmtleS4nKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIGFuIEFsZ29yYW5kIGFkZHJlc3Mgbm9yIGEgc3RlbGxhciBwdWJrZXkuJyk7XG4gIH1cblxuICAvKipcbiAgICogbXVsdGlzaWdBZGRyZXNzIHRha2VzIG11bHRpc2lnIG1ldGFkYXRhIChwcmVpbWFnZSkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgaHVtYW4gcmVhZGFibGUgQWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb24gbXV0bGlzaWcgdmVyc2lvblxuICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkIG11bHRpc2lnIHRocmVzaG9sZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRycyBsaXN0IG9mIEFsZ29yYW5kIGFkZHJlc3Nlc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKi9cbiAgbXVsdGlzaWdBZGRyZXNzKHZlcnNpb246IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIGFkZHJzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubXVsdGlzaWdBZGRyZXNzKHtcbiAgICAgIHZlcnNpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZUFjY291bnQgZ2VuZXJhdGVzIHVuIGFjY291bnQgd2l0aCBhIHNlY3JldEtleSBhbmQgYW4gYWRkcmVzc1xuICAgKlxuICAgKiBGdW5jdGlvbiBoYXMgbm90IHBhcmFtc1xuICAgKiBAcmV0dXJucyBBY2NvdW50XG4gICAqL1xuICBnZW5lcmF0ZUFjY291bnQoKTogYWxnb3Nkay5BY2NvdW50IHtcbiAgICByZXR1cm4gYWxnb3Nkay5nZW5lcmF0ZUFjY291bnQoKTtcbiAgfVxuXG4gIGdlbmVyYXRlQWNjb3VudEZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIGNvbnN0IGtleXMgPSBuYWNsLnNpZ24ua2V5UGFpci5mcm9tU2VlZChzZWVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcjogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGtleXMucHVibGljS2V5KSxcbiAgICAgIHNrOiBrZXlzLnNlY3JldEtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBUeCBJRCBmcm9tIGFuIGVuY29kZWQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogVGhpcyBpcyBkb25lIGJlY2F1c2Ugb2YgYSBjaGFuZ2UgbWFkZSBvbiB2ZXJzaW9uIDEuMTAuMSBvbiBhbGdvc2RrIHNvIG1ldGhvZCB0eElEKCkgb25seSBzdXBwb3J0cyBTaWduZWRUcmFuc2FjdGlvbiB0eXBlLlxuICAgKiAoaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9ibG9iL2RldmVsb3AvQ0hBTkdFTE9HLm1kIzExMDEpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eEJhc2U2NCAtIGVuY29kZWQgYmFzZTY0IG11bHRpc2lnIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdHJhbnNhY3Rpb24gSURcbiAgICovXG4gIGdldE11bHRpc2lnVHhJRCh0eEJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gQnVmZmVyLmZyb20odHhCYXNlNjQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBkZWNvZGVTaWduVHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKHR4Qnl0ZXMpO1xuICAgIGNvbnN0IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4ID0gZGVjb2RlU2lnblR4LnR4bi5nZXRfb2JqX2Zvcl9lbmNvZGluZygpO1xuICAgIGNvbnN0IHR4Rm9yRW5jb2RpbmcgPSB7IG1zaWc6IGRlY29kZVNpZ25UeC5tc2lnLCB0eG46IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4IH07XG4gICAgY29uc3QgZW5fbXNnID0gZW5jb2RpbmcuZW5jb2RlKHR4Rm9yRW5jb2RpbmcpO1xuICAgIGNvbnN0IHRhZyA9IEJ1ZmZlci5mcm9tKFs4NCwgODhdKTtcbiAgICBjb25zdCBnaCA9IEJ1ZmZlci5mcm9tKGNvbmNhdEFycmF5cyh0YWcsIGVuX21zZykpO1xuICAgIGNvbnN0IGhhc2ggPSBCdWZmZXIuZnJvbShhbGdvTmFjbC5nZW5lcmljSGFzaChnaCkpO1xuICAgIHJldHVybiBiYXNlMzIuZW5jb2RlKGhhc2gpLnNsaWNlKDAsIEFMR09SQU5EX1RSQU5TQUNUSU9OX0xFTkdUSCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIHRyYW5zYWN0aW9uIGRhdGEgaXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSB0b2tlblxuICAgKiBAcGFyYW0gYW1vdW50IHRoZSBhbW91bnQgaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGZyb20gdGhlIG9yaWdpbmF0ZWQgYWRkcmVzc1xuICAgKiBAcGFyYW0gdG8gdGhlIHRhcmdldCBhZGRyZXNzXG4gICAqIEBwYXJhbSBjbG9zZVJlbWFpbmRlclRvIChvcHRpb25hbCkgYWRkcmVzcyB0byBzZW5kIHJlbWFpbmluZyB1bml0cyBpbiBvcmlnaW5hdGVkIGFkZHJlc3NcbiAgICogQHJldHVybnMgJ2VuYWJsZVRva2VuJyBvciAnZGlzYWJsZVRva2VuJ1xuICAgKi9cbiAgZ2V0VG9rZW5UeFR5cGUoYW1vdW50OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgY2xvc2VSZW1haW5kZXJUbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGUgPSAndHJhbnNmZXJUb2tlbic7XG4gICAgaWYgKGFtb3VudCA9PT0gJzAnICYmIGZyb20gPT09IHRvKSB7XG4gICAgICB0eXBlID0gIWNsb3NlUmVtYWluZGVyVG8gPyAnZW5hYmxlVG9rZW4nIDogJ2Rpc2FibGVUb2tlbic7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlmIHRoZSBrZXkgaXMgYSB2YWxpZCBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB2YWxpZGF0ZVxuICAgKi9cbiAgdmFsaWRhdGVCYXNlNjQoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWtleSB8fCB0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJhc2U2NCBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZTY0UmVnRXhwID1cbiAgICAgIC9eKD86W2EtekEtWjAtOStcXC9dezR9KSooPzp8KD86W2EtekEtWjAtOStcXC9dezN9PSl8KD86W2EtekEtWjAtOStcXC9dezJ9PT0pfCg/OlthLXpBLVowLTkrXFwvXXsxfT09PSkpJC87XG4gICAgaWYgKCFiYXNlNjRSZWdFeHAudGVzdChrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmFzZTY0IHN0cmluZycpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -14,7 +14,7 @@ exports.testnetCommon = common_1.default.forCustomChain('mainnet', {
14
14
  name: 'fuji',
15
15
  networkId: 1,
16
16
  chainId: statics_1.coins.get('tavaxc').network.chainId,
17
- }, 'petersburg');
17
+ }, 'london');
18
18
  /**
19
19
  * A Common object defining the chain
20
20
  * TODO BG-35011: create custom Common object since Avalanche doesn't have hardforks
@@ -23,5 +23,5 @@ exports.mainnetCommon = common_1.default.forCustomChain('mainnet', {
23
23
  name: 'mainnet',
24
24
  networkId: 1,
25
25
  chainId: statics_1.coins.get('avaxc').network.chainId,
26
- }, 'petersburg');
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFnRDtBQUNoRCwwQ0FBd0Q7QUFFeEQ7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQUcsZ0JBQWMsQ0FBQyxjQUFjLENBQ3hELFNBQVMsRUFDVDtJQUNFLElBQUksRUFBRSxNQUFNO0lBQ1osU0FBUyxFQUFFLENBQUM7SUFDWixPQUFPLEVBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUEyQixDQUFDLE9BQU87Q0FDbEUsRUFDRCxZQUFZLENBQ2IsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsYUFBYSxHQUFHLGdCQUFjLENBQUMsY0FBYyxDQUN4RCxTQUFTLEVBQ1Q7SUFDRSxJQUFJLEVBQUUsU0FBUztJQUNmLFNBQVMsRUFBRSxDQUFDO0lBQ1osT0FBTyxFQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0NBQ2pFLEVBQ0QsWUFBWSxDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogQSBDb21tb24gb2JqZWN0IGRlZmluaW5nIHRoZSBjaGFpblxuICogVE9ETyBCRy0zNTAxMTogY3JlYXRlIGN1c3RvbSBDb21tb24gb2JqZWN0IHNpbmNlIEF2YWxhbmNoZSBkb2Vzbid0IGhhdmUgaGFyZGZvcmtzXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0bmV0Q29tbW9uID0gRXRoZXJldW1Db21tb24uZm9yQ3VzdG9tQ2hhaW4oXG4gICdtYWlubmV0JyxcbiAge1xuICAgIG5hbWU6ICdmdWppJyxcbiAgICBuZXR3b3JrSWQ6IDEsXG4gICAgY2hhaW5JZDogKGNvaW5zLmdldCgndGF2YXhjJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gIH0sXG4gICdwZXRlcnNidXJnJyxcbik7XG5cbi8qKlxuICogQSBDb21tb24gb2JqZWN0IGRlZmluaW5nIHRoZSBjaGFpblxuICogVE9ETyBCRy0zNTAxMTogY3JlYXRlIGN1c3RvbSBDb21tb24gb2JqZWN0IHNpbmNlIEF2YWxhbmNoZSBkb2Vzbid0IGhhdmUgaGFyZGZvcmtzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWlubmV0Q29tbW9uID0gRXRoZXJldW1Db21tb24uZm9yQ3VzdG9tQ2hhaW4oXG4gICdtYWlubmV0JyxcbiAge1xuICAgIG5hbWU6ICdtYWlubmV0JyxcbiAgICBuZXR3b3JrSWQ6IDEsXG4gICAgY2hhaW5JZDogKGNvaW5zLmdldCgnYXZheGMnKS5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZCxcbiAgfSxcbiAgJ3BldGVyc2J1cmcnLFxuKTtcbiJdfQ==
26
+ }, 'london');
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFnRDtBQUNoRCwwQ0FBd0Q7QUFFeEQ7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQUcsZ0JBQWMsQ0FBQyxjQUFjLENBQ3hELFNBQVMsRUFDVDtJQUNFLElBQUksRUFBRSxNQUFNO0lBQ1osU0FBUyxFQUFFLENBQUM7SUFDWixPQUFPLEVBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUEyQixDQUFDLE9BQU87Q0FDbEUsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsYUFBYSxHQUFHLGdCQUFjLENBQUMsY0FBYyxDQUN4RCxTQUFTLEVBQ1Q7SUFDRSxJQUFJLEVBQUUsU0FBUztJQUNmLFNBQVMsRUFBRSxDQUFDO0lBQ1osT0FBTyxFQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0NBQ2pFLEVBQ0QsUUFBUSxDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogQSBDb21tb24gb2JqZWN0IGRlZmluaW5nIHRoZSBjaGFpblxuICogVE9ETyBCRy0zNTAxMTogY3JlYXRlIGN1c3RvbSBDb21tb24gb2JqZWN0IHNpbmNlIEF2YWxhbmNoZSBkb2Vzbid0IGhhdmUgaGFyZGZvcmtzXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0bmV0Q29tbW9uID0gRXRoZXJldW1Db21tb24uZm9yQ3VzdG9tQ2hhaW4oXG4gICdtYWlubmV0JyxcbiAge1xuICAgIG5hbWU6ICdmdWppJyxcbiAgICBuZXR3b3JrSWQ6IDEsXG4gICAgY2hhaW5JZDogKGNvaW5zLmdldCgndGF2YXhjJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gIH0sXG4gICdsb25kb24nLFxuKTtcblxuLyoqXG4gKiBBIENvbW1vbiBvYmplY3QgZGVmaW5pbmcgdGhlIGNoYWluXG4gKiBUT0RPIEJHLTM1MDExOiBjcmVhdGUgY3VzdG9tIENvbW1vbiBvYmplY3Qgc2luY2UgQXZhbGFuY2hlIGRvZXNuJ3QgaGF2ZSBoYXJkZm9ya3NcbiAqL1xuZXhwb3J0IGNvbnN0IG1haW5uZXRDb21tb24gPSBFdGhlcmV1bUNvbW1vbi5mb3JDdXN0b21DaGFpbihcbiAgJ21haW5uZXQnLFxuICB7XG4gICAgbmFtZTogJ21haW5uZXQnLFxuICAgIG5ldHdvcmtJZDogMSxcbiAgICBjaGFpbklkOiAoY29pbnMuZ2V0KCdhdmF4YycpLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkLFxuICB9LFxuICAnbG9uZG9uJyxcbik7XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics/dist/src/base';
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
2
  import { Eth } from '../../index';
3
3
  import { TransferBuilder } from './transferBuilder';
4
4
  export declare class TransactionBuilder extends Eth.TransactionBuilder {
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/avaxc/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAMlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,GAAG,CAAC,kBAAkB;IAC5D,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;IAQtD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;CASzC"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/avaxc/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAMlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,GAAG,CAAC,kBAAkB;IAC5D,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;IAQtD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;CASzC"}
@@ -61,4 +61,4 @@ var TransactionBuilder = /** @class */ (function (_super) {
61
61
  return TransactionBuilder;
62
62
  }(index_1.Eth.TransactionBuilder));
63
63
  exports.TransactionBuilder = TransactionBuilder;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvdHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtFQUF5QztBQUN6QyxxQ0FBa0M7QUFDbEMsNkNBQTJEO0FBQzNELHdDQUE4QztBQUM5Qyw4QkFBcUM7QUFDckMsMkNBQTZFO0FBQzdFLGlDQUFvQztBQUNwQyxxREFBb0Q7QUFFcEQ7SUFBd0Msc0NBQXNCO0lBRzVELDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBR25CO1FBRkMsS0FBSSxDQUFDLE9BQU8sR0FBRyxpQkFBUyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxpQkFBVyxDQUFDLEtBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyw0Q0FBZSxHQUF6QixVQUEwQixTQUFtQjtRQUMzQyxJQUFNLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLElBQU0sdUJBQXVCLEdBQUcsd0JBQVcsQ0FBQyxTQUFTLENBQUMsb0NBQXVCLEVBQUUsTUFBTSxDQUFDO2FBQ25GLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8saUNBQW9CLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixxQ0FBUSxHQUFSLFVBQVMsSUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBakNELENBQXdDLFdBQUcsQ0FBQyxrQkFBa0IsR0FpQzdEO0FBakNZLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcy9kaXN0L3NyYy9iYXNlJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgeyBFdGggfSBmcm9tICcuLi8uLi9pbmRleCc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9ldGgnO1xuaW1wb3J0IHsgd2FsbGV0U2ltcGxlQnl0ZUNvZGUsIHdhbGxldFNpbXBsZUNvbnN0cnVjdG9yIH0gZnJvbSAnLi93YWxsZXRVdGlsJztcbmltcG9ydCB7IGdldENvbW1vbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgRXRoLlRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNmZXI6IFRyYW5zZmVyQnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29tbW9uID0gZ2V0Q29tbW9uKHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc21hcnQgY29udHJhY3QgZW5jb2RlZCBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFkZHJlc3NlcyAtIHRoZSBjb250cmFjdCBzaWduZXJzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbnRyYWN0RGF0YShhZGRyZXNzZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbXMgPSBbYWRkcmVzc2VzXTtcbiAgICBjb25zdCByZXN1bHRFbmNvZGVkUGFyYW1ldGVycyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciwgcGFyYW1zKVxuICAgICAgLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgLnJlcGxhY2UoJzB4JywgJycpO1xuICAgIHJldHVybiB3YWxsZXRTaW1wbGVCeXRlQ29kZSArIHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRyYW5zZmVyKGRhdGE/OiBzdHJpbmcpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNmZXJzIGNhbiBvbmx5IGJlIHNldCBmb3Igc2VuZCB0cmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl90cmFuc2Zlcikge1xuICAgICAgdGhpcy5fdHJhbnNmZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXI7XG4gIH1cbn1cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvdHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtFQUF5QztBQUN6QyxxQ0FBa0M7QUFDbEMsNkNBQTJEO0FBQzNELHdDQUE4QztBQUM5Qyw4QkFBcUM7QUFDckMsMkNBQTZFO0FBQzdFLGlDQUFvQztBQUNwQyxxREFBb0Q7QUFFcEQ7SUFBd0Msc0NBQXNCO0lBRzVELDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBR25CO1FBRkMsS0FBSSxDQUFDLE9BQU8sR0FBRyxpQkFBUyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxpQkFBVyxDQUFDLEtBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyw0Q0FBZSxHQUF6QixVQUEwQixTQUFtQjtRQUMzQyxJQUFNLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLElBQU0sdUJBQXVCLEdBQUcsd0JBQVcsQ0FBQyxTQUFTLENBQUMsb0NBQXVCLEVBQUUsTUFBTSxDQUFDO2FBQ25GLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8saUNBQW9CLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixxQ0FBUSxHQUFSLFVBQVMsSUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBakNELENBQXdDLFdBQUcsQ0FBQyxrQkFBa0IsR0FpQzdEO0FBakNZLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHsgRXRoIH0gZnJvbSAnLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vZXRoJztcbmltcG9ydCB7IHdhbGxldFNpbXBsZUJ5dGVDb2RlLCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4vd2FsbGV0VXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zZmVyOiBUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGdldENvbW1vbih0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRyZXNzZXMgLSB0aGUgY29udHJhY3Qgc2lnbmVyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb250cmFjdERhdGEoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zID0gW2FkZHJlc3Nlc107XG4gICAgY29uc3QgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnMgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUod2FsbGV0U2ltcGxlQ29uc3RydWN0b3IsIHBhcmFtcylcbiAgICAgIC50b1N0cmluZygnaGV4JylcbiAgICAgIC5yZXBsYWNlKCcweCcsICcnKTtcbiAgICByZXR1cm4gd2FsbGV0U2ltcGxlQnl0ZUNvZGUgKyByZXN1bHRFbmNvZGVkUGFyYW1ldGVycztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0cmFuc2ZlcihkYXRhPzogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zZmVycyBjYW4gb25seSBiZSBzZXQgZm9yIHNlbmQgdHJhbnNhY3Rpb25zJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRoaXMuX3RyYW5zZmVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyO1xuICB9XG59XG4iXX0=
@@ -106,8 +106,8 @@ var BlsKeyPair = /** @class */ (function () {
106
106
  var keySecretShares = BLS.secretShares(polynomial, participants);
107
107
  var keyPublicShare = BLS.publicShare(polynomial);
108
108
  this.keyPair = {
109
- secretShares: keySecretShares.map(function (secretShare) { return '0x' + secretShare.toString(16); }),
110
- publicShare: '0x' + keyPublicShare.toString(16),
109
+ secretShares: keySecretShares.map(function (secretShare) { return crypto_1.bigIntToHex(secretShare); }),
110
+ publicShare: crypto_1.bigIntToHex(keyPublicShare),
111
111
  };
112
112
  };
113
113
  /**
@@ -148,7 +148,7 @@ var BlsKeyPair = /** @class */ (function () {
148
148
  return [4 /*yield*/, BLS.sign(msg, BigInt(this.keyPair.prv))];
149
149
  case 1:
150
150
  signedMessage = _a.sent();
151
- return [2 /*return*/, '0x' + signedMessage.toString(16)];
151
+ return [2 /*return*/, crypto_1.bigIntToHex(signedMessage)];
152
152
  case 2: throw new Error('Missing private key');
153
153
  }
154
154
  });
@@ -165,7 +165,7 @@ var BlsKeyPair = /** @class */ (function () {
165
165
  try {
166
166
  var secretShares = prvKeys.map(function (secretShare) { return BigInt(secretShare); });
167
167
  var prv = BLS.mergeSecretShares(secretShares);
168
- return '0x' + prv.toString(16);
168
+ return crypto_1.bigIntToHex(prv);
169
169
  }
170
170
  catch (e) {
171
171
  throw new Error('Error aggregating prvkeys: ' + e);
@@ -181,7 +181,7 @@ var BlsKeyPair = /** @class */ (function () {
181
181
  try {
182
182
  var secretShares = pubKeys.map(function (secretShare) { return BigInt(secretShare); });
183
183
  var commonPubKey = BLS.mergePublicShares(secretShares);
184
- return '0x' + commonPubKey.toString(16);
184
+ return crypto_1.bigIntToHex(commonPubKey);
185
185
  }
186
186
  catch (e) {
187
187
  throw new Error('Error aggregating pubkeys: ' + e);
@@ -201,7 +201,7 @@ var BlsKeyPair = /** @class */ (function () {
201
201
  BlsKeyPair.aggregateSignatures = function (signatures) {
202
202
  try {
203
203
  var signature = BLS.mergeSignatures(signatures);
204
- return '0x' + signature.toString(16);
204
+ return crypto_1.bigIntToHex(signature);
205
205
  }
206
206
  catch (e) {
207
207
  throw new Error('Error aggregating signatures: ' + e);
@@ -229,4 +229,4 @@ var BlsKeyPair = /** @class */ (function () {
229
229
  return BlsKeyPair;
230
230
  }());
231
231
  exports.BlsKeyPair = BlsKeyPair;
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzS2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2Jhc2VDb2luL2Jsc0tleVBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUE0QjtBQUM1QixrREFBc0M7QUFHdEMsbUNBQStDO0FBQy9DLGlDQUFpRjtBQUNqRiw2Q0FBK0U7QUFFL0UsSUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUM7QUFDdEMsSUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFFekM7O0dBRUc7QUFDSDtJQUdFOzs7O09BSUc7SUFDSCxvQkFBc0IsTUFBdUI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztTQUNoRjthQUFNLElBQUksYUFBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUQ7YUFBTSxJQUFJLGdCQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0IsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyw2QkFBb0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDaEYsZ0JBQU0sQ0FBQyw0QkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN2QjthQUFNLElBQUksb0JBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztnQkFDZixX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c3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIEJMUyBmcm9tICdAYml0Z28vYmxzLWRrZyc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4vYmFzZUtleVBhaXInO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQmxzS2V5cywgS2V5UGFpck9wdGlvbnMsIGlzRGtnLCBpc0Jsc0tleSwgaXNQcml2YXRlS2V5IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1ZhbGlkQkxTUHVibGljS2V5LCBpc1ZhbGlkQkxTUHJpdmF0ZUtleSB9IGZyb20gJy4uLy4uL3V0aWxzL2NyeXB0byc7XG5cbmNvbnN0IERFRkFVTFRfU0lHTkFUVVJFX1RIUkVTSE9MRCA9IDI7XG5jb25zdCBERUZBVUxUX1NJR05BVFVSRV9QQVJUSUNJUEFOVFMgPSAzO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEJMUyBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsc0tleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBCbHNLZXlzO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIHBvbHlub21pYWwuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpck9wdGlvbnN9IHNvdXJjZSBFaXRoZXIgYSBka2cgb3B0aW9ucywgYSBwdWJsaWMgYW5kIHNlY3JldCBzaGFyZXMsIG9yIGEgcHJpdmF0ZSBrZXlcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICB0aGlzLmNyZWF0ZVNoYXJlcyhERUZBVUxUX1NJR05BVFVSRV9USFJFU0hPTEQsIERFRkFVTFRfU0lHTkFUVVJFX1BBUlRJQ0lQQU5UUyk7XG4gICAgfSBlbHNlIGlmIChpc0RrZyhzb3VyY2UpKSB7XG4gICAgICB0aGlzLmNyZWF0ZVNoYXJlcyhzb3VyY2UudGhyZXNob2xkLCBzb3VyY2UucGFydGljaXBhbnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzQmxzS2V5KHNvdXJjZSkpIHtcbiAgICAgIGFzc2VydChzb3VyY2Uuc2VjcmV0U2hhcmVzLmV2ZXJ5KGlzVmFsaWRCTFNQcml2YXRlS2V5KSwgJ0ludmFsaWQgcHJpdmF0ZSBrZXlzJyk7XG4gICAgICBhc3NlcnQoaXNWYWxpZEJMU1B1YmxpY0tleShzb3VyY2UucHVibGljU2hhcmUpLCAnSW52YWxpZCBwdWJsaWMga2V5Jyk7XG4gICAgICB0aGlzLmtleVBhaXIgPSBzb3VyY2U7XG4gICAgfSBlbHNlIGlmIChpc1ByaXZhdGVLZXkoc291cmNlKSkge1xuICAgICAgdGhpcy5rZXlQYWlyID0ge1xuICAgICAgICBwcnY6IHNvdXJjZS5wcnYsXG4gICAgICAgIHB1YmxpY1NoYXJlOiAnJyxcbiAgICAgICAgc2VjcmV0U2hhcmVzOiBbXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlU2hhcmVzKHRocmVzaG9sZDogbnVtYmVyLCBwYXJ0aWNpcGFudHM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChwYXJ0aWNpcGFudHMgPCB0aHJlc2hvbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGFydGljaXBhbnRzIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhyZXNob2xkJyk7XG4gICAgfVxuICAgIGNvbnN0IHBvbHlub21pYWwgPSBCTFMuZ2VuZXJhdGVQb2x5bm9taWFsKHRocmVzaG9sZCk7XG4gICAgY29uc3Qga2V5U2VjcmV0U2hhcmVzID0gQkxTLnNlY3JldFNoYXJlcyhwb2x5bm9taWFsLCBwYXJ0aWNpcGFudHMpO1xuICAgIGNvbnN0IGtleVB1YmxpY1NoYXJlID0gQkxTLnB1YmxpY1NoYXJlKHBvbHlub21pYWwpO1xuICAgIHRoaXMua2V5UGFpciA9IHtcbiAgICAgIHNlY3JldFNoYXJlczoga2V5U2VjcmV0U2hhcmVzLm1hcCgoc2VjcmV0U2hhcmUpID0+ICcweCcgKyBzZWNyZXRTaGFyZS50b1N0cmluZygxNikpLFxuICAgICAgcHVibGljU2hhcmU6ICcweCcgKyBrZXlQdWJsaWNTaGFyZS50b1N0cmluZygxNiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlIC0gdGhpcyBpcyBub3QgcG9zc2libGUgdXNpbmcgQkxTLiBCTFMgZG9lcyBub3Qgc3VwcG9ydCBwcnZrZXkgZGVyaXZlZCBrZXkgZ2VuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBydiBhIGhleGFkZWNpbWFsIHByaXZhdGUga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignUHJpdmF0ZSBrZXkgZGVyaXZhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGJscycpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgLSB0aGlzIGlzIG5vdCBwb3NzaWJsZSB1c2luZyBCTFMuIEJMUyBkb2VzIG5vdCBzdXBwb3J0IHB1YmtleSBkZXJpdmVkIGtleSBnZW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIEFuIGV4dGVuZGVkLCBjb21wcmVzc2VkLCBvciB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignUHVibGljIGtleSBkZXJpdmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYmxzJyk7XG4gIH1cblxuICBnZXRBZGRyZXNzKGZvcm1hdD86IEFkZHJlc3NGb3JtYXQpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0S2V5cygpOiBhbnkge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRLZXlzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIGJ5dGVzIHVzaW5nIHRoZSBrZXkgcGFpclxuICAgKlxuICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIGJ5dGVzIHRvIHNpZ25cbiAgICogQHJldHVybiBzaWduYXR1cmUgb2YgdGhlIGJ5dGVzIHVzaW5nIHRoaXMga2V5cGFpclxuICAgKi9cbiAgYXN5bmMgc2lnbihtc2c6IEJ1ZmZlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGNvbnN0IHNpZ25lZE1lc3NhZ2UgPSBhd2FpdCBCTFMuc2lnbihtc2csIEJpZ0ludCh0aGlzLmtleVBhaXIucHJ2KSk7XG4gICAgICByZXR1cm4gJzB4JyArIHNpZ25lZE1lc3NhZ2UudG9TdHJpbmcoMTYpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZ2dyZWdhdGVzIHRoZSBzZWNyZXQgc2hhcmVzIG9mIGRpZmZlcmVudCBrZXkgcGFpcnMgaW50byBvbmUgcHJpdmF0ZSBrZXlcbiAgICpcbiAgICogQHBhcmFtIHBydktleXMgYW4gYXJyYXkgb2Ygc2VjcmV0IHNoYXJlc1xuICAgKiBAcmV0dXJucyBhIHByaXZhdGUga2V5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFnZ3JlZ2F0ZVBydmtleXMocHJ2S2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGFzc2VydChwcnZLZXlzLmV2ZXJ5KGlzVmFsaWRCTFNQcml2YXRlS2V5KSwgJ0ludmFsaWQgcHJpdmF0ZSBrZXlzJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlY3JldFNoYXJlcyA9IHBydktleXMubWFwKChzZWNyZXRTaGFyZSkgPT4gQmlnSW50KHNlY3JldFNoYXJlKSk7XG4gICAgICBjb25zdCBwcnYgPSBCTFMubWVyZ2VTZWNyZXRTaGFyZXMoc2VjcmV0U2hhcmVzKTtcbiAgICAgIHJldHVybiAnMHgnICsgcHJ2LnRvU3RyaW5nKDE2KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGFnZ3JlZ2F0aW5nIHBydmtleXM6ICcgKyBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWdncmVnYXRlcyB0aGUgcHVibGljIHNoYXJlcyBvZiBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gYSBjb21tb24gcHVibGljIGtleVxuICAgKlxuICAgKiBAcGFyYW0gcHViS2V5cyBhbiBhcnJheSBvZiBwdWJsaWMgc2hhcmVzXG4gICAqIEByZXR1cm5zIGEgY29tbW9uIHB1YmxpYyBrZXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWdncmVnYXRlUHVia2V5cyhwdWJLZXlzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlY3JldFNoYXJlcyA9IHB1YktleXMubWFwKChzZWNyZXRTaGFyZSkgPT4gQmlnSW50KHNlY3JldFNoYXJlKSk7XG4gICAgICBjb25zdCBjb21tb25QdWJLZXkgPSBCTFMubWVyZ2VQdWJsaWNTaGFyZXMoc2VjcmV0U2hhcmVzKTtcbiAgICAgIHJldHVybiAnMHgnICsgY29tbW9uUHViS2V5LnRvU3RyaW5nKDE2KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGFnZ3JlZ2F0aW5nIHB1YmtleXM6ICcgKyBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWdncmVnYXRlcyB0aGUgbWVzc2FnZSBzaWduZWQgYnkgZGlmZmVyZW50IGtleSBwYWlycyBpbnRvIG9uZSBzaWduXG4gICAqXG4gICAqIEBwYXJhbSBzaWduYXR1cmVzIHRoZSBtZXNzYWdlIHNpZ25lZCBieSBkaWZmZXJlbnQga2V5IHBhaXJzLiBUaGUgc2lnbmVyIGlkIGlzIHJlbGV2YW50IHRvIGVuc3VyZSBhIHZhbGlkIHNpZ25hdHVyZS5cbiAgICogQGV4YW1wbGUgPGNhcHRpb24+IEUuZy4sIHRoZSBtZXNzYWdlIGlzIHNpZ25lZCBieSB1c2VyIGFuZCB3YWxsZXQsIHRoZW4gc2lnbmF0dXJlcyB3b3VsZCBiZTo8L2NhcHRpb24+XG4gICAqIHtcbiAgICogICAxOiBCaWdJbnQobWVzc2FnZVNpZ25lZFdpdGhVc2VyUHJ2KSxcbiAgICogICAzOiBCaWdJbnQobWVzc2FnZVNpZ25lZFdpdGhXYWxsZXRQcnYpLFxuICAgKiB9XG4gICAqIEByZXR1cm5zIGEgc2lnbmF0dXJlIGNvbWJpbmluZyBhbGwgdGhlIHByb3ZpZGVkIHNpZ25lZCBtZXNzYWdlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVTaWduYXR1cmVzKHNpZ25hdHVyZXM6IHsgW246IG51bWJlcl06IGJpZ2ludCB9KTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlID0gQkxTLm1lcmdlU2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcbiAgICAgIHJldHVybiAnMHgnICsgc2lnbmF0dXJlLnRvU3RyaW5nKDE2KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGFnZ3JlZ2F0aW5nIHNpZ25hdHVyZXM6ICcgKyBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBmb3IgdGhpcyBrZXkgcGFpclxuICAgKiBAcGFyYW0gcHViIFRoZSBwdWJsaWMga2V5IHdpdGggd2hpY2ggdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZSB3aXRoXG4gICAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQsIGVsc2UgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgdmVyaWZ5U2lnbmF0dXJlKHB1Yjogc3RyaW5nLCBtc2c6IEJ1ZmZlciwgc2lnbmF0dXJlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBhc3NlcnQoaXNWYWxpZEJMU1B1YmxpY0tleShwdWIpLCBgSW52YWxpZCBwdWJsaWMga2V5OiAke3B1Yn1gKTtcbiAgICByZXR1cm4gYXdhaXQgQkxTLnZlcmlmeShCaWdJbnQoc2lnbmF0dXJlKSwgbXNnLCBCaWdJbnQocHViKSk7XG4gIH1cbn1cbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzS2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2Jhc2VDb2luL2Jsc0tleVBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUE0QjtBQUM1QixrREFBc0M7QUFHdEMsbUNBQStDO0FBQy9DLGlDQUFpRjtBQUNqRiw2Q0FBNEY7QUFFNUYsSUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUM7QUFDdEMsSUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFFekM7O0dBRUc7QUFDSDtJQUdFOzs7O09BSUc7SUFDSCxvQkFBc0IsTUFBdUI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztTQUNoRjthQUFNLElBQUksYUFBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUQ7YUFBTSxJQUFJLGdCQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0IsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyw2QkFBb0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDaEYsZ0JBQU0sQ0FBQyw0QkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN2QjthQUFNLElBQUksb0JBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztnQkFDZixX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Q0FBQyxDQUFDO1lBQ3ZFLElBQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6RCxPQUFPLG9CQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNXLDhCQUFtQixHQUFqQyxVQUFrQyxVQUFtQztRQUNuRSxJQUFJO1lBQ0YsSUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRCxPQUFPLG9CQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ2lCLDBCQUFlLEdBQW5DLFVBQW9DLEdBQVcsRUFBRSxHQUFXLEVBQUUsU0FBaUI7Ozs7O3dCQUM3RSxnQkFBTSxDQUFDLDRCQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLHlCQUF1QixHQUFLLENBQUMsQ0FBQzt3QkFDeEQscUJBQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFBOzRCQUE1RCxzQkFBTyxTQUFxRCxFQUFDOzs7O0tBQzlEO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBakpELElBaUpDO0FBakpxQixnQ0FBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIEJMUyBmcm9tICdAYml0Z28vYmxzLWRrZyc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4vYmFzZUtleVBhaXInO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQmxzS2V5cywgS2V5UGFpck9wdGlvbnMsIGlzRGtnLCBpc0Jsc0tleSwgaXNQcml2YXRlS2V5IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1ZhbGlkQkxTUHVibGljS2V5LCBpc1ZhbGlkQkxTUHJpdmF0ZUtleSwgYmlnSW50VG9IZXggfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuXG5jb25zdCBERUZBVUxUX1NJR05BVFVSRV9USFJFU0hPTEQgPSAyO1xuY29uc3QgREVGQVVMVF9TSUdOQVRVUkVfUEFSVElDSVBBTlRTID0gMztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBCTFMga2V5cGFpcnMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbHNLZXlQYWlyIGltcGxlbWVudHMgQmFzZUtleVBhaXIge1xuICBwcm90ZWN0ZWQga2V5UGFpcjogQmxzS2V5cztcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBwb2x5bm9taWFsLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJPcHRpb25zfSBzb3VyY2UgRWl0aGVyIGEgZGtnIG9wdGlvbnMsIGEgcHVibGljIGFuZCBzZWNyZXQgc2hhcmVzLCBvciBhIHByaXZhdGUga2V5XG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgdGhpcy5jcmVhdGVTaGFyZXMoREVGQVVMVF9TSUdOQVRVUkVfVEhSRVNIT0xELCBERUZBVUxUX1NJR05BVFVSRV9QQVJUSUNJUEFOVFMpO1xuICAgIH0gZWxzZSBpZiAoaXNEa2coc291cmNlKSkge1xuICAgICAgdGhpcy5jcmVhdGVTaGFyZXMoc291cmNlLnRocmVzaG9sZCwgc291cmNlLnBhcnRpY2lwYW50cyk7XG4gICAgfSBlbHNlIGlmIChpc0Jsc0tleShzb3VyY2UpKSB7XG4gICAgICBhc3NlcnQoc291cmNlLnNlY3JldFNoYXJlcy5ldmVyeShpc1ZhbGlkQkxTUHJpdmF0ZUtleSksICdJbnZhbGlkIHByaXZhdGUga2V5cycpO1xuICAgICAgYXNzZXJ0KGlzVmFsaWRCTFNQdWJsaWNLZXkoc291cmNlLnB1YmxpY1NoYXJlKSwgJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgICAgdGhpcy5rZXlQYWlyID0gc291cmNlO1xuICAgIH0gZWxzZSBpZiAoaXNQcml2YXRlS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMua2V5UGFpciA9IHtcbiAgICAgICAgcHJ2OiBzb3VyY2UucHJ2LFxuICAgICAgICBwdWJsaWNTaGFyZTogJycsXG4gICAgICAgIHNlY3JldFNoYXJlczogW10sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVNoYXJlcyh0aHJlc2hvbGQ6IG51bWJlciwgcGFydGljaXBhbnRzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFydGljaXBhbnRzIDwgdGhyZXNob2xkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnRpY2lwYW50cyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRocmVzaG9sZCcpO1xuICAgIH1cbiAgICBjb25zdCBwb2x5bm9taWFsID0gQkxTLmdlbmVyYXRlUG9seW5vbWlhbCh0aHJlc2hvbGQpO1xuICAgIGNvbnN0IGtleVNlY3JldFNoYXJlcyA9IEJMUy5zZWNyZXRTaGFyZXMocG9seW5vbWlhbCwgcGFydGljaXBhbnRzKTtcbiAgICBjb25zdCBrZXlQdWJsaWNTaGFyZSA9IEJMUy5wdWJsaWNTaGFyZShwb2x5bm9taWFsKTtcbiAgICB0aGlzLmtleVBhaXIgPSB7XG4gICAgICBzZWNyZXRTaGFyZXM6IGtleVNlY3JldFNoYXJlcy5tYXAoKHNlY3JldFNoYXJlKSA9PiBiaWdJbnRUb0hleChzZWNyZXRTaGFyZSkpLFxuICAgICAgcHVibGljU2hhcmU6IGJpZ0ludFRvSGV4KGtleVB1YmxpY1NoYXJlKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgLSB0aGlzIGlzIG5vdCBwb3NzaWJsZSB1c2luZyBCTFMuIEJMUyBkb2VzIG5vdCBzdXBwb3J0IHBydmtleSBkZXJpdmVkIGtleSBnZW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcHJ2IGEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdQcml2YXRlIGtleSBkZXJpdmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYmxzJyk7XG4gIH1cblxuICAvKipcbiAgICogTm90ZSAtIHRoaXMgaXMgbm90IHBvc3NpYmxlIHVzaW5nIEJMUy4gQkxTIGRvZXMgbm90IHN1cHBvcnQgcHVia2V5IGRlcml2ZWQga2V5IGdlblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gQW4gZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleShwdWI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdQdWJsaWMga2V5IGRlcml2YXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBibHMnKTtcbiAgfVxuXG4gIGdldEFkZHJlc3MoZm9ybWF0PzogQWRkcmVzc0Zvcm1hdCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEFkZHJlc3Mgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXRLZXlzKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEtleXMgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYnl0ZXMgdXNpbmcgdGhlIGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgYnl0ZXMgdG8gc2lnblxuICAgKiBAcmV0dXJuIHNpZ25hdHVyZSBvZiB0aGUgYnl0ZXMgdXNpbmcgdGhpcyBrZXlwYWlyXG4gICAqL1xuICBhc3luYyBzaWduKG1zZzogQnVmZmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5rZXlQYWlyLnBydikge1xuICAgICAgY29uc3Qgc2lnbmVkTWVzc2FnZSA9IGF3YWl0IEJMUy5zaWduKG1zZywgQmlnSW50KHRoaXMua2V5UGFpci5wcnYpKTtcbiAgICAgIHJldHVybiBiaWdJbnRUb0hleChzaWduZWRNZXNzYWdlKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gIH1cblxuICAvKipcbiAgICogQWdncmVnYXRlcyB0aGUgc2VjcmV0IHNoYXJlcyBvZiBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gb25lIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBwcnZLZXlzIGFuIGFycmF5IG9mIHNlY3JldCBzaGFyZXNcbiAgICogQHJldHVybnMgYSBwcml2YXRlIGtleVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVQcnZrZXlzKHBydktleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBhc3NlcnQocHJ2S2V5cy5ldmVyeShpc1ZhbGlkQkxTUHJpdmF0ZUtleSksICdJbnZhbGlkIHByaXZhdGUga2V5cycpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZWNyZXRTaGFyZXMgPSBwcnZLZXlzLm1hcCgoc2VjcmV0U2hhcmUpID0+IEJpZ0ludChzZWNyZXRTaGFyZSkpO1xuICAgICAgY29uc3QgcHJ2ID0gQkxTLm1lcmdlU2VjcmV0U2hhcmVzKHNlY3JldFNoYXJlcyk7XG4gICAgICByZXR1cm4gYmlnSW50VG9IZXgocHJ2KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGFnZ3JlZ2F0aW5nIHBydmtleXM6ICcgKyBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWdncmVnYXRlcyB0aGUgcHVibGljIHNoYXJlcyBvZiBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gYSBjb21tb24gcHVibGljIGtleVxuICAgKlxuICAgKiBAcGFyYW0gcHViS2V5cyBhbiBhcnJheSBvZiBwdWJsaWMgc2hhcmVzXG4gICAqIEByZXR1cm5zIGEgY29tbW9uIHB1YmxpYyBrZXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWdncmVnYXRlUHVia2V5cyhwdWJLZXlzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlY3JldFNoYXJlcyA9IHB1YktleXMubWFwKChzZWNyZXRTaGFyZSkgPT4gQmlnSW50KHNlY3JldFNoYXJlKSk7XG4gICAgICBjb25zdCBjb21tb25QdWJLZXkgPSBCTFMubWVyZ2VQdWJsaWNTaGFyZXMoc2VjcmV0U2hhcmVzKTtcbiAgICAgIHJldHVybiBiaWdJbnRUb0hleChjb21tb25QdWJLZXkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYWdncmVnYXRpbmcgcHVia2V5czogJyArIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZ2dyZWdhdGVzIHRoZSBtZXNzYWdlIHNpZ25lZCBieSBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gb25lIHNpZ25cbiAgICpcbiAgICogQHBhcmFtIHNpZ25hdHVyZXMgdGhlIG1lc3NhZ2Ugc2lnbmVkIGJ5IGRpZmZlcmVudCBrZXkgcGFpcnMuIFRoZSBzaWduZXIgaWQgaXMgcmVsZXZhbnQgdG8gZW5zdXJlIGEgdmFsaWQgc2lnbmF0dXJlLlxuICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj4gRS5nLiwgdGhlIG1lc3NhZ2UgaXMgc2lnbmVkIGJ5IHVzZXIgYW5kIHdhbGxldCwgdGhlbiBzaWduYXR1cmVzIHdvdWxkIGJlOjwvY2FwdGlvbj5cbiAgICoge1xuICAgKiAgIDE6IEJpZ0ludChtZXNzYWdlU2lnbmVkV2l0aFVzZXJQcnYpLFxuICAgKiAgIDM6IEJpZ0ludChtZXNzYWdlU2lnbmVkV2l0aFdhbGxldFBydiksXG4gICAqIH1cbiAgICogQHJldHVybnMgYSBzaWduYXR1cmUgY29tYmluaW5nIGFsbCB0aGUgcHJvdmlkZWQgc2lnbmVkIG1lc3NhZ2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFnZ3JlZ2F0ZVNpZ25hdHVyZXMoc2lnbmF0dXJlczogeyBbbjogbnVtYmVyXTogYmlnaW50IH0pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBCTFMubWVyZ2VTaWduYXR1cmVzKHNpZ25hdHVyZXMpO1xuICAgICAgcmV0dXJuIGJpZ0ludFRvSGV4KHNpZ25hdHVyZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBhZ2dyZWdhdGluZyBzaWduYXR1cmVzOiAnICsgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBzaWduYXR1cmUgZm9yIHRoaXMga2V5IHBhaXJcbiAgICogQHBhcmFtIHB1YiBUaGUgcHVibGljIGtleSB3aXRoIHdoaWNoIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgd2l0aFxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkLCBlbHNlIGZhbHNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIHZlcmlmeVNpZ25hdHVyZShwdWI6IHN0cmluZywgbXNnOiBCdWZmZXIsIHNpZ25hdHVyZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXNzZXJ0KGlzVmFsaWRCTFNQdWJsaWNLZXkocHViKSwgYEludmFsaWQgcHVibGljIGtleTogJHtwdWJ9YCk7XG4gICAgcmV0dXJuIGF3YWl0IEJMUy52ZXJpZnkoQmlnSW50KHNpZ25hdHVyZSksIG1zZywgQmlnSW50KHB1YikpO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ export { BaseUtils } from './baseUtils';
5
5
  export { BaseKeyPair } from './baseKeyPair';
6
6
  export { Ed25519KeyPair } from './ed25519KeyPair';
7
7
  export { TransactionType, StakingOperationTypes } from './enum';
8
+ export { BlsKeyPair } from './blsKeyPair';
8
9
  import * as Error from './errors';
9
10
  import * as Interface from './iface';
10
11
  export { Error, Interface };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAEhE,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}