@bitgo/account-lib 2.17.2-rc.8 → 2.18.0-rc.3

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 (77) hide show
  1. package/DEVELOPER.md +45 -18
  2. package/README.md +83 -48
  3. package/dist/browser/bitgo-account-lib.min.js +1 -1
  4. package/dist/package.json +6 -4
  5. package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +1 -1
  6. package/dist/src/coin/baseCoin/ed25519KeyPair.js +1 -1
  7. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +3 -3
  8. package/dist/src/coin/dot/addressInitializationBuilder.js +1 -1
  9. package/dist/src/coin/dot/iface.d.ts +12 -5
  10. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  11. package/dist/src/coin/dot/iface.js +15 -2
  12. package/dist/src/coin/dot/transferBuilder.d.ts +3 -3
  13. package/dist/src/coin/dot/transferBuilder.js +1 -1
  14. package/dist/src/coin/dot/utils.d.ts +8 -1
  15. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  16. package/dist/src/coin/dot/utils.js +15 -6
  17. package/dist/src/coin/eth/transaction.js +2 -2
  18. package/dist/src/coin/eth/utils.d.ts +2 -2
  19. package/dist/src/coin/eth/utils.d.ts.map +1 -1
  20. package/dist/src/coin/eth/utils.js +3 -3
  21. package/dist/src/coin/sol/index.d.ts +3 -0
  22. package/dist/src/coin/sol/index.d.ts.map +1 -1
  23. package/dist/src/coin/sol/index.js +8 -2
  24. package/dist/src/coin/sol/keyPair.d.ts +4 -22
  25. package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
  26. package/dist/src/coin/sol/keyPair.js +42 -89
  27. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  28. package/dist/src/coin/sol/transactionBuilder.js +8 -2
  29. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  30. package/dist/src/coin/sol/utils.js +4 -7
  31. package/dist/src/coin/stx/abstractContractBuilder.d.ts +19 -0
  32. package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +1 -0
  33. package/dist/src/coin/stx/abstractContractBuilder.js +140 -0
  34. package/dist/src/coin/stx/constants.d.ts +8 -0
  35. package/dist/src/coin/stx/constants.d.ts.map +1 -0
  36. package/dist/src/coin/stx/constants.js +19 -0
  37. package/dist/src/coin/stx/contractBuilder.d.ts +2 -11
  38. package/dist/src/coin/stx/contractBuilder.d.ts.map +1 -1
  39. package/dist/src/coin/stx/contractBuilder.js +14 -115
  40. package/dist/src/coin/stx/iface.d.ts +5 -0
  41. package/dist/src/coin/stx/iface.d.ts.map +1 -1
  42. package/dist/src/coin/stx/iface.js +1 -1
  43. package/dist/src/coin/stx/keyPair.d.ts.map +1 -1
  44. package/dist/src/coin/stx/keyPair.js +3 -3
  45. package/dist/src/coin/stx/sendmanyBuilder.d.ts +23 -0
  46. package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +1 -0
  47. package/dist/src/coin/stx/sendmanyBuilder.js +140 -0
  48. package/dist/src/coin/stx/transaction.d.ts.map +1 -1
  49. package/dist/src/coin/stx/transaction.js +28 -15
  50. package/dist/src/coin/stx/transactionBuilder.d.ts +1 -1
  51. package/dist/src/coin/stx/transactionBuilder.d.ts.map +1 -1
  52. package/dist/src/coin/stx/transactionBuilder.js +6 -7
  53. package/dist/src/coin/stx/transactionBuilderFactory.d.ts +2 -0
  54. package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +1 -1
  55. package/dist/src/coin/stx/transactionBuilderFactory.js +8 -1
  56. package/dist/src/coin/stx/transferBuilder.d.ts +3 -3
  57. package/dist/src/coin/stx/transferBuilder.d.ts.map +1 -1
  58. package/dist/src/coin/stx/transferBuilder.js +2 -4
  59. package/dist/src/coin/stx/utils.d.ts +12 -5
  60. package/dist/src/coin/stx/utils.d.ts.map +1 -1
  61. package/dist/src/coin/stx/utils.js +32 -18
  62. package/dist/src/index.d.ts +2 -0
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +4 -2
  65. package/dist/src/mpc/curves.d.ts +14 -0
  66. package/dist/src/mpc/curves.d.ts.map +1 -0
  67. package/dist/src/mpc/curves.js +99 -0
  68. package/dist/src/mpc/shamir.d.ts +7 -0
  69. package/dist/src/mpc/shamir.d.ts.map +1 -0
  70. package/dist/src/mpc/shamir.js +91 -0
  71. package/dist/src/mpc/tss.d.ts +69 -0
  72. package/dist/src/mpc/tss.d.ts.map +1 -0
  73. package/dist/src/mpc/tss.js +255 -0
  74. package/dist/src/utils/ed25519KeyDeriver.d.ts +49 -0
  75. package/dist/src/utils/ed25519KeyDeriver.d.ts.map +1 -0
  76. package/dist/src/utils/ed25519KeyDeriver.js +92 -0
  77. package/package.json +6 -4
@@ -252,7 +252,13 @@ var TransactionBuilder = /** @class */ (function (_super) {
252
252
  };
253
253
  /** @inheritdoc */
254
254
  TransactionBuilder.prototype.validateKey = function (key) {
255
- var keyPair = new _1.KeyPair({ prv: key.key });
255
+ var keyPair;
256
+ try {
257
+ keyPair = new _1.KeyPair({ prv: key.key });
258
+ }
259
+ catch (_a) {
260
+ throw new errors_1.BuildTransactionError('Invalid key');
261
+ }
256
262
  if (!keyPair.getKeys().prv) {
257
263
  throw new errors_1.BuildTransactionError('Invalid key');
258
264
  }
@@ -315,4 +321,4 @@ var TransactionBuilder = /** @class */ (function (_super) {
315
321
  return TransactionBuilder;
316
322
  }(baseCoin_1.BaseTransactionBuilder));
317
323
  exports.TransactionBuilder = TransactionBuilder;
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBc0U7QUFDdEUsNkNBQXlFO0FBRXpFLDZDQUE0QztBQUM1QywyQ0FBc0Y7QUFDdEYsaUNBQWdIO0FBQ2hILHNCQUE0QjtBQUM1Qix5Q0FBc0Q7QUFDdEQsaUVBQWdFO0FBQ2hFLGtEQUE0QjtBQUU1Qix1RUFBc0U7QUFFdEU7SUFBaUQsc0NBQXNCO0lBV3JFLDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBRW5CO1FBUFMsdUJBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQUM1QyxjQUFRLEdBQWMsRUFBRSxDQUFDO1FBS2pDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztJQUNsRCxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILHdDQUFXLEdBQVgsVUFBWSxFQUFlO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsbURBQXdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNGLEtBQTBCLFVBQXNCLEVBQXRCLEtBQUEsSUFBSSxDQUFD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QUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLElBQUkscUJBQVksQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLDJDQUFjLEdBQXRCO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksOEJBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLDBDQUFhLEdBQXJCO1FBQ0UsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztJQUVILHlCQUFDO0FBQUQsQ0FBQyxBQXZSRCxDQUFpRCxpQ0FBc0IsR0F1UnRFO0FBdlJxQixnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MsIEJhc2VLZXksIEZlZU9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmxvY2toYXNoLCBQdWJsaWNLZXksIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCBpc1ZhbGlkQmxvY2tJZCwgaXNWYWxpZE1lbW8sIGlzVmFsaWRQdWJsaWNLZXksIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc29sSW5zdHJ1Y3Rpb25GYWN0b3J5IH0gZnJvbSAnLi9zb2xJbnN0cnVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgRHVyYWJsZU5vbmNlUGFyYW1zLCBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlbnRCbG9ja2hhc2g6IEJsb2NraGFzaDtcbiAgcHJvdGVjdGVkIF9ub25jZUluZm86IE5vbmNlO1xuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9zaWduZXJzOiBLZXlQYWlyW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnNlbmRlcih0eERhdGEuZmVlUGF5ZXIgYXMgc3RyaW5nKTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSwgdHhEYXRhLmR1cmFibGVOb25jZSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0eC50eXBlLCB0eC5zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbykge1xuICAgICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb246IE1lbW8gPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5tZW1vKG1lbW9JbnN0cnVjdGlvbi5wYXJhbXMubWVtbyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UpIHtcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb246IE5vbmNlID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMubm9uY2UodHhEYXRhLm5vbmNlLCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5wYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNvbFRyYW5zYWN0aW9uID0gdGhpcy5idWlsZFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNvbGFuYSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlbnRCbG9ja2hhc2gsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VudCBibG9ja2hhc2ggaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuXG4gICAgY29uc3QgdHggPSBuZXcgU29sVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzKSB7XG4gICAgICB0eC5zaWduYXR1cmVzID0gdGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzO1xuICAgIH1cblxuICAgIHR4LmZlZVBheWVyID0gbmV3IFB1YmxpY0tleSh0aGlzLl9zZW5kZXIpO1xuXG4gICAgaWYgKHRoaXMuX25vbmNlSW5mbykge1xuICAgICAgdHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkodGhpcy5fbm9uY2VJbmZvKVswXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lbW8pIHtcbiAgICAgIGNvbnN0IG1lbW9EYXRhOiBNZW1vID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEucHVzaChtZW1vRGF0YSk7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KG1lbW9EYXRhKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubGFtcG9ydHNQZXJTaWduYXR1cmUgPSB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZTtcblxuICAgIGZvciAoY29uc3Qgc2lnbmVyIG9mIHRoaXMuX3NpZ25lcnMpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3Qgc2VjcmV0S2V5ID0gc2lnbmVyLmdldEtleXModHJ1ZSkucHJ2O1xuICAgICAgYXNzZXJ0KHNlY3JldEtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpO1xuICAgICAgdHgucGFydGlhbFNpZ24oeyBwdWJsaWNLZXksIHNlY3JldEtleSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleSk7XG4gICAgY29uc3QgcHJ2ID0ga2V5LmtleTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjogcHJ2IH0pO1xuICAgIHRoaXMuX3NpZ25lcnMucHVzaChzaWduZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghc2VuZGVyQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShzZW5kZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIHNlbmRlciwgZ290OiAnICsgc2VuZGVyQWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlciA9IHNlbmRlckFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBub25jZVxuICAgKiBSZXF1aXJlcyBib3RoIG9wdGlvbmFsIHBhcmFtcyBpbiBvcmRlciB0byB1c2UgdGhlIGR1cmFibGUgbm9uY2VcbiAgICpcbiAgICogQHBhcmFtIHtCbG9ja2hhc2h9IGJsb2NrSGFzaCBUaGUgbGF0ZXN0IGJsb2NrSGFzaFxuICAgKiBAcGFyYW0ge0R1cmFibGVOb25jZVBhcmFtc30gW2R1cmFibGVOb25jZVBhcmFtc10gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdhbGxldE5vbmNlQWRkcmVzcyBhbmQgdGhlIGF1dGhXYWxsZXRBZGRyZXNzIChyZXF1aXJlZCBmb3IgZHVyYWJsZSBub25jZSlcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBub25jZShibG9ja0hhc2g6IEJsb2NraGFzaCwgZHVyYWJsZU5vbmNlUGFyYW1zPzogRHVyYWJsZU5vbmNlUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFibG9ja0hhc2ggfHwgIWlzVmFsaWRCbG9ja0lkKGJsb2NrSGFzaCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBibG9ja0hhc2gsIGdvdDogJyArIGJsb2NrSGFzaCk7XG4gICAgfVxuICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMpIHtcbiAgICAgIGlmICghZHVyYWJsZU5vbmNlUGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3Npbmcgd2FsbGV0Tm9uY2VBZGRyZXNzLCBnb3Q6ICcgKyBkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCFkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MgfHwgIWlzVmFsaWRQdWJsaWNLZXkoZHVyYWJsZU5vbmNlUGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3NpbmcgYXV0aFdhbGxldEFkZHJlc3MsIGdvdDogJyArIGR1cmFibGVOb25jZVBhcmFtcy5hdXRoV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzID09PSBkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwYXJhbXM6IHdhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25vbmNlSW5mbyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IGR1cmFibGVOb25jZVBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuX3JlY2VudEJsb2NraGFzaCA9IGJsb2NrSGFzaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbWVtbyhtZW1vOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTWVtbyhtZW1vKTtcbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZlZShmZWVPcHRpb25zOiBGZWVPcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUgPSBOdW1iZXIoZmVlT3B0aW9ucy5hbW91bnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVTZW5kZXIoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG4gIC8qKiBWYWxpZGF0ZXMgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgbWVtbyBhcyBzdHJpbmdcbiAgICovXG4gIHZhbGlkYXRlTWVtbyhtZW1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lbW8pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgbWVtbywgZ290OiAnICsgbWVtbyk7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZE1lbW8obWVtbykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01lbW8gaXMgdG9vIGxvbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9zaWduZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRTaWduZXIoa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy5fc2lnbmVycy5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgaWYgKGtwLmdldEtleXMoKS5wcnYgPT09IGtleS5rZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRHVwbGljYXRlZCBzaWduZXI6ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgc2VuZGVyIGZpZWxkIGlzIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVTZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlbmRlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgbm9uY2UgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWNlbnRCbG9ja2hhc2ggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub25jZSBibG9ja2hhc2gnKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBc0U7QUFDdEUsNkNBQXlFO0FBRXpFLDZDQUE0QztBQUM1QywyQ0FBc0Y7QUFDdEYsaUNBQWdIO0FBQ2hILHNCQUE0QjtBQUM1Qix5Q0FBc0Q7QUFDdEQsaUVBQWdFO0FBQ2hFLGtEQUE0QjtBQUU1Qix1RUFBc0U7QUFFdEU7SUFBaUQsc0NBQXNCO0lBV3JFLDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBRW5CO1FBUFMsdUJBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQUM1QyxjQUFRLEdBQWMsRUFBRSxDQUFDO1FBS2pDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztJQUNsRCxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILHdDQUFXLEdBQVgsVUFBWSxFQUFlO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsbURBQXdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNGLEtBQTBCLFVBQXNCLEVBQXRCLEtBQUEsSUFBSSxDQUFD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SSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxFQUFFO1lBQ3ZCLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLElBQUkscUJBQVksQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLDJDQUFjLEdBQXRCO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksOEJBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLDBDQUFhLEdBQXJCO1FBQ0UsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztJQUVILHlCQUFDO0FBQUQsQ0FBQyxBQTdSRCxDQUFpRCxpQ0FBc0IsR0E2UnRFO0FBN1JxQixnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MsIEJhc2VLZXksIEZlZU9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmxvY2toYXNoLCBQdWJsaWNLZXksIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCBpc1ZhbGlkQmxvY2tJZCwgaXNWYWxpZE1lbW8sIGlzVmFsaWRQdWJsaWNLZXksIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc29sSW5zdHJ1Y3Rpb25GYWN0b3J5IH0gZnJvbSAnLi9zb2xJbnN0cnVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgRHVyYWJsZU5vbmNlUGFyYW1zLCBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlbnRCbG9ja2hhc2g6IEJsb2NraGFzaDtcbiAgcHJvdGVjdGVkIF9ub25jZUluZm86IE5vbmNlO1xuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9zaWduZXJzOiBLZXlQYWlyW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnNlbmRlcih0eERhdGEuZmVlUGF5ZXIgYXMgc3RyaW5nKTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSwgdHhEYXRhLmR1cmFibGVOb25jZSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0eC50eXBlLCB0eC5zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbykge1xuICAgICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb246IE1lbW8gPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5tZW1vKG1lbW9JbnN0cnVjdGlvbi5wYXJhbXMubWVtbyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UpIHtcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb246IE5vbmNlID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMubm9uY2UodHhEYXRhLm5vbmNlLCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5wYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNvbFRyYW5zYWN0aW9uID0gdGhpcy5idWlsZFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNvbGFuYSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlbnRCbG9ja2hhc2gsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VudCBibG9ja2hhc2ggaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuXG4gICAgY29uc3QgdHggPSBuZXcgU29sVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzKSB7XG4gICAgICB0eC5zaWduYXR1cmVzID0gdGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzO1xuICAgIH1cblxuICAgIHR4LmZlZVBheWVyID0gbmV3IFB1YmxpY0tleSh0aGlzLl9zZW5kZXIpO1xuXG4gICAgaWYgKHRoaXMuX25vbmNlSW5mbykge1xuICAgICAgdHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkodGhpcy5fbm9uY2VJbmZvKVswXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lbW8pIHtcbiAgICAgIGNvbnN0IG1lbW9EYXRhOiBNZW1vID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEucHVzaChtZW1vRGF0YSk7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KG1lbW9EYXRhKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubGFtcG9ydHNQZXJTaWduYXR1cmUgPSB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZTtcblxuICAgIGZvciAoY29uc3Qgc2lnbmVyIG9mIHRoaXMuX3NpZ25lcnMpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3Qgc2VjcmV0S2V5ID0gc2lnbmVyLmdldEtleXModHJ1ZSkucHJ2O1xuICAgICAgYXNzZXJ0KHNlY3JldEtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpO1xuICAgICAgdHgucGFydGlhbFNpZ24oeyBwdWJsaWNLZXksIHNlY3JldEtleSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleSk7XG4gICAgY29uc3QgcHJ2ID0ga2V5LmtleTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjogcHJ2IH0pO1xuICAgIHRoaXMuX3NpZ25lcnMucHVzaChzaWduZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghc2VuZGVyQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShzZW5kZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIHNlbmRlciwgZ290OiAnICsgc2VuZGVyQWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlciA9IHNlbmRlckFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBub25jZVxuICAgKiBSZXF1aXJlcyBib3RoIG9wdGlvbmFsIHBhcmFtcyBpbiBvcmRlciB0byB1c2UgdGhlIGR1cmFibGUgbm9uY2VcbiAgICpcbiAgICogQHBhcmFtIHtCbG9ja2hhc2h9IGJsb2NrSGFzaCBUaGUgbGF0ZXN0IGJsb2NrSGFzaFxuICAgKiBAcGFyYW0ge0R1cmFibGVOb25jZVBhcmFtc30gW2R1cmFibGVOb25jZVBhcmFtc10gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdhbGxldE5vbmNlQWRkcmVzcyBhbmQgdGhlIGF1dGhXYWxsZXRBZGRyZXNzIChyZXF1aXJlZCBmb3IgZHVyYWJsZSBub25jZSlcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBub25jZShibG9ja0hhc2g6IEJsb2NraGFzaCwgZHVyYWJsZU5vbmNlUGFyYW1zPzogRHVyYWJsZU5vbmNlUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFibG9ja0hhc2ggfHwgIWlzVmFsaWRCbG9ja0lkKGJsb2NrSGFzaCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBibG9ja0hhc2gsIGdvdDogJyArIGJsb2NrSGFzaCk7XG4gICAgfVxuICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMpIHtcbiAgICAgIGlmICghZHVyYWJsZU5vbmNlUGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3Npbmcgd2FsbGV0Tm9uY2VBZGRyZXNzLCBnb3Q6ICcgKyBkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCFkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MgfHwgIWlzVmFsaWRQdWJsaWNLZXkoZHVyYWJsZU5vbmNlUGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3NpbmcgYXV0aFdhbGxldEFkZHJlc3MsIGdvdDogJyArIGR1cmFibGVOb25jZVBhcmFtcy5hdXRoV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzID09PSBkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwYXJhbXM6IHdhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25vbmNlSW5mbyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IGR1cmFibGVOb25jZVBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuX3JlY2VudEJsb2NraGFzaCA9IGJsb2NrSGFzaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbWVtbyhtZW1vOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTWVtbyhtZW1vKTtcbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZlZShmZWVPcHRpb25zOiBGZWVPcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUgPSBOdW1iZXIoZmVlT3B0aW9ucy5hbW91bnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQga2V5UGFpcjogS2V5UGFpcjtcbiAgICB0cnkge1xuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG5cbiAgICBpZiAoIWtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVNlbmRlcigpO1xuICAgIHRoaXMudmFsaWRhdGVOb25jZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cbiAgLyoqIFZhbGlkYXRlcyB0aGUgbWVtb1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVtbyAtIHRoZSBtZW1vIGFzIHN0cmluZ1xuICAgKi9cbiAgdmFsaWRhdGVNZW1vKG1lbW86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghbWVtbykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBtZW1vLCBnb3Q6ICcgKyBtZW1vKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkTWVtbyhtZW1vKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWVtbyBpcyB0b28gbG9uZycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgZ2l2ZW4ga2V5IGlzIG5vdCBhbHJlYWR5IGluIHRoaXMuX3NpZ25lcnNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlS2V5fSBrZXkgLSBUaGUga2V5IHRvIGNoZWNrXG4gICAqL1xuICBwcml2YXRlIGNoZWNrRHVwbGljYXRlZFNpZ25lcihrZXk6IEJhc2VLZXkpIHtcbiAgICB0aGlzLl9zaWduZXJzLmZvckVhY2goKGtwKSA9PiB7XG4gICAgICBpZiAoa3AuZ2V0S2V5cygpLnBydiA9PT0ga2V5LmtleSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdEdXBsaWNhdGVkIHNpZ25lcjogJyArIGtleS5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBzZW5kZXIgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VuZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2VuZGVyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBub25jZSBmaWVsZCBpcyBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTm9uY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlY2VudEJsb2NraGFzaCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vbmNlIGJsb2NraGFzaCcpO1xuICAgIH1cbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAGnB,WAAW,IAAI,cAAc,EAC7B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAQhD,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,kBAAkB;AAClB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAOtE;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED,kBAAkB;AAElB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAcnG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,cAAc,GAAG,eAAe,CAa/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,sBAAsB,GAAG,qBAAqB,CAW7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAOnE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAGnB,WAAW,IAAI,cAAc,EAC7B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAOhD,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,kBAAkB;AAClB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAOtE;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED,kBAAkB;AAElB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAcnG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,cAAc,GAAG,eAAe,CAa/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,sBAAsB,GAAG,qBAAqB,CAW7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAOnE"}
@@ -12,7 +12,6 @@ var baseCoin_1 = require("../baseCoin");
12
12
  var errors_1 = require("../baseCoin/errors");
13
13
  var tweetnacl_1 = __importDefault(require("tweetnacl"));
14
14
  var DECODED_BLOCK_HASH_LENGTH = 32; // https://docs.solana.com/developing/programming-model/transactions#blockhash-format
15
- var DECODED_ADDRESS_LENGTH = 32; // https://docs.solana.com/developing/programming-model/transactions#account-address-format
16
15
  var DECODED_SIGNATURE_LENGTH = 64; // https://docs.solana.com/terminology#signature
17
16
  var BASE_58_ENCONDING_REGEX = '[1-9A-HJ-NP-Za-km-z]';
18
17
  /** @inheritdoc */
@@ -44,12 +43,10 @@ exports.isValidPrivateKey = isValidPrivateKey;
44
43
  /** @inheritdoc */
45
44
  function isValidPublicKey(pubKey) {
46
45
  try {
47
- return (!!pubKey &&
48
- new RegExp(BASE_58_ENCONDING_REGEX).test(pubKey) &&
49
- bs58_1.default.decode(pubKey).length === DECODED_ADDRESS_LENGTH &&
50
- web3_js_1.PublicKey.isOnCurve(new web3_js_1.PublicKey(pubKey).toBuffer()));
46
+ new web3_js_1.PublicKey(pubKey);
47
+ return true;
51
48
  }
52
- catch (e) {
49
+ catch (_a) {
53
50
  return false;
54
51
  }
55
52
  }
@@ -241,4 +238,4 @@ function validateRawTransaction(rawTransaction) {
241
238
  }
242
239
  }
243
240
  exports.validateRawTransaction = validateRawTransaction;
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBUXlCO0FBQ3pCLDhDQUF3QjtBQUN4Qiw4REFBcUM7QUFDckMseUNBTXFCO0FBQ3JCLHdDQUE4QztBQUM5Qyw2Q0FBcUY7QUFFckYsd0RBQTZCO0FBRTdCLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMscUZBQXFGO0FBQzNILElBQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsMkZBQTJGO0FBQzlILElBQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ3JGLElBQU0sdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7QUFFdkQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUZELHdDQUVDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLElBQUk7UUFDRixPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyx5QkFBeUIsQ0FDbkgsQ0FBQztLQUNIO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGlCQUFpQixDQUFDLE1BQTJCO0lBQzNELElBQUk7UUFDRixJQUFNLEdBQUcsR0FBZSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMs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O1FBQ3BCLElBQUksQ0FBQywwQ0FBOEIsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRTtZQUM3RSxNQUFNLElBQUkscUJBQVksQ0FBQyx1REFBdUQsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ25IO0tBQ0Y7QUFDSCxDQUFDO0FBTkQsMERBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsY0FBc0I7SUFDM0QsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNuQixNQUFNLElBQUksOEJBQXFCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztLQUN2RTtJQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUMxQyxNQUFNLElBQUksOEJBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM1RDtBQUNILENBQUM7QUFQRCx3REFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleXBhaXIsXG4gIFB1YmxpY0tleSxcbiAgU2lnbmF0dXJlUHVia2V5UGFpcixcbiAgU3lzdGVtSW5zdHJ1Y3Rpb24sXG4gIFN5c3RlbVByb2dyYW0sXG4gIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQge1xuICBNQVhfTUVNT19MRU5HVEgsXG4gIE1FTU9fUFJPR1JBTV9QSyxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bSxcbiAgVkFMSURfU1lTVEVNX0lOU1RSVUNUSU9OX1RZUEVTLFxuICB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBOb3RTdXBwb3J0ZWQsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciwgVXRpbHNFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBWYWxpZEluc3RydWN0aW9uVHlwZXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5cbmNvbnN0IERFQ09ERURfQkxPQ0tfSEFTSF9MRU5HVEggPSAzMjsgLy8gaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vZGV2ZWxvcGluZy9wcm9ncmFtbWluZy1tb2RlbC90cmFuc2FjdGlvbnMjYmxvY2toYXNoLWZvcm1hdFxuY29uc3QgREVDT0RFRF9BRERSRVNTX0xFTkdUSCA9IDMyOyAvLyBodHRwczovL2RvY3Muc29sYW5hLmNvbS9kZXZlbG9waW5nL3Byb2dyYW1taW5nLW1vZGVsL3RyYW5zYWN0aW9ucyNhY2NvdW50LWFkZHJlc3MtZm9ybWF0XG5jb25zdCBERUNPREVEX1NJR05BVFVSRV9MRU5HVEggPSA2NDsgLy8gaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vdGVybWlub2xvZ3kjc2lnbmF0dXJlXG5jb25zdCBCQVNFXzU4X0VOQ09ORElOR19SRUdFWCA9ICdbMS05QS1ISi1OUC1aYS1rbS16XSc7XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZFB1YmxpY0tleShhZGRyZXNzKTtcbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhaGFzaCAmJiBuZXcgUmVnRXhwKEJBU0VfNThfRU5DT05ESU5HX1JFR0VYKS50ZXN0KGhhc2gpICYmIGJzNTguZGVjb2RlKGhhc2gpLmxlbmd0aCA9PT0gREVDT0RFRF9CTE9DS19IQVNIX0xFTkdUSFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJ2S2V5OiBzdHJpbmcgfCBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qga2V5OiBVaW50OEFycmF5ID0gdHlwZW9mIHBydktleSA9PT0gJ3N0cmluZycgPyB0aGlzLmJhc2U1OFRvVWludDhBcnJheShwcnZLZXkpIDogcHJ2S2V5O1xuICAgIHJldHVybiAhIUtleXBhaXIuZnJvbVNlY3JldEtleShrZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHViS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgISFwdWJLZXkgJiZcbiAgICAgIG5ldyBSZWdFeHAoQkFTRV81OF9FTkNPTkRJTkdfUkVHRVgpLnRlc3QocHViS2V5KSAmJlxuICAgICAgYnM1OC5kZWNvZGUocHViS2V5KS5sZW5ndGggPT09IERFQ09ERURfQUREUkVTU19MRU5HVEggJiZcbiAgICAgIFB1YmxpY0tleS5pc09uQ3VydmUobmV3IFB1YmxpY0tleShwdWJLZXkpLnRvQnVmZmVyKCkpXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhc2lnbmF0dXJlICYmIGJzNTguZGVjb2RlKHNpZ25hdHVyZSkubGVuZ3RoID09PSBERUNPREVEX1NJR05BVFVSRV9MRU5HVEg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG4vLyBUcmFuc2FjdGlvbklkIGFyZSB0aGUgZmlyc3Qgc2lnbmF0dXJlIG9uIGEgVHJhbnNhY3Rpb25cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRoaXMuaXNWYWxpZFNpZ25hdHVyZSh0eElkKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgb2YgbGFtcG9ydHMgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIG1lbW8gb3Igbm90LlxuICpcbiAqIEBwYXJhbSBtZW1vIC0gdGhlIG1lbW8gc3RyaW5nXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNZW1vKG1lbW86IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gQnVmZmVyLmZyb20obWVtbykubGVuZ3RoIDw9IE1BWF9NRU1PX0xFTkdUSDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgcmF3IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nIGZvcm1hdFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IHR4ID0gU29sVHJhbnNhY3Rpb24uZnJvbShCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2Jhc2U2NCcpKTtcbiAgICB0eC5zZXJpYWxpemUoeyByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZmllcyBpZiBzaWduYXR1cmUgZm9yIG1lc3NhZ2UgaXMgdmFsaWQuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHNlcmlhbGl6ZWRUeCAtIHR4IGFzIGEgYmFzZTY0IHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIHNpZ25hdHVyZSBhcyBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY0tleSAtIHB1YmxpYyBrZXkgYXMgYmFzZSA1OFxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKHNlcmlhbGl6ZWRUeDogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZywgcHVibGljS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkUmF3VHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4KSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdJbnZhbGlkIHNlcmlhbGl6ZWRUeCcpO1xuICB9XG4gIGlmICghaXNWYWxpZFB1YmxpY0tleShwdWJsaWNLZXkpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgcHVibGljS2V5Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgfVxuICBjb25zdCBtc2cgPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeCwgJ2Jhc2U2NCcpKS5zZXJpYWxpemVNZXNzYWdlKCk7XG4gIGNvbnN0IHNpZyA9IGJhc2U1OFRvVWludDhBcnJheShzaWduYXR1cmUpO1xuICBjb25zdCBwdWIgPSBuZXcgUHVibGljS2V5KHB1YmxpY0tleSk7XG4gIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG1zZywgc2lnLCBwdWIudG9CdWZmZXIoKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNlNTggc3RyaW5nIGludG8gYSBVaW50OEFycmF5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCAtIGEgc3RyaW5nIGluIGJhc2U1OFxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IC0gYW4gVWludDhBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTU4VG9VaW50OEFycmF5KGlucHV0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJzNTguZGVjb2RlKGlucHV0KSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBVaW50OEFycmF5IHRvIGEgYmFzZTU4IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGlucHV0IC0gYW4gVWludDhBcnJheVxuICogQHJldHVybnMge3N0cmluZ30gLSBhIHN0cmluZyBpbiBiYXNlNThcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVpbnQ4QXJyYXlUb2Jhc2U1OChpbnB1dDogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBiczU4LmVuY29kZShpbnB1dCk7XG59XG5cbi8qKlxuICogQ291bnQgdGhlIGFtb3VudCBvZiBzaWduYXR1cmVzIGFyZSBub3QgbnVsbC5cbiAqXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVB1YmtleVBhaXJbXX0gc2lnbmF0dXJlcyAtIGFuIGFycmF5IG9mIFNpZ25hdHVyZVB1YmtleVBhaXJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gdGhlIGFtb3VudCBvZiB2YWxpZCBzaWduYXR1cmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3VudE5vdE51bGxTaWduYXR1cmVzKHNpZ25hdHVyZXM6IFNpZ25hdHVyZVB1YmtleVBhaXJbXSk6IG51bWJlciB7XG4gIHJldHVybiBzaWduYXR1cmVzLmZpbHRlcigoc2lnKSA9PiAhIXNpZy5zaWduYXR1cmUpLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhbGwgc2lnbmF0dXJlcyBhcmUgY29tcGxldGVkLlxuICpcbiAqIEBwYXJhbSB7U2lnbmF0dXJlUHVia2V5UGFpcltdfSBzaWduYXR1cmVzIC0gc2lnbmF0dXJlc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlc0FsbFNpZ25hdHVyZXMoc2lnbmF0dXJlczogU2lnbmF0dXJlUHVia2V5UGFpcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaWduYXR1cmVzLmxlbmd0aCA+IDAgJiYgY291bnROb3ROdWxsU2lnbmF0dXJlcyhzaWduYXR1cmVzKSA9PT0gc2lnbmF0dXJlcy5sZW5ndGg7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNhY3Rpb24gVHlwZSBiYXNlZCBvbiB0aGUgIHRyYW5zYWN0aW9uIGluc3RydWN0aW9ucy5cbiAqIE9ubHkgV2FsbGV0IGluaXRpYWxpemF0aW9uIGFuZCBUcmFuc2ZlciB0cmFuc2FjdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiBAcGFyYW0ge1NvbFRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbiAtIHRoZSBzb2xhbmEgdHJhbnNhY3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvblR5cGV9IC0gdGhlIHR5cGUgb2YgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbjogU29sVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvblR5cGUge1xuICBjb25zdCB7IGluc3RydWN0aW9ucyB9ID0gdHJhbnNhY3Rpb247XG4gIHZhbGlkYXRlSW50cnVjdGlvblR5cGVzKGluc3RydWN0aW9ucyk7XG4gIGlmIChcbiAgICBpbnN0cnVjdGlvbnMubGVuZ3RoIDw9IDMgJiZcbiAgICBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb25zW3dhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMuQ3JlYXRlXSkgPT09IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQ3JlYXRlICYmXG4gICAgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uc1t3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLkluaXRpYWxpemVOb25jZV0pID09PVxuICAgICAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Jbml0aWFsaXplTm9uY2VBY2NvdW50XG4gICkge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYSBpbnN0cnVjdGlvbiBUeXBlIGJhc2VkIG9uIHRoZSBzb2xhbmEgaW5zdHJ1Y3Rpb25zLlxuICogVGhyb3dzIGlmIHRoZSBzb2xhbmEgaW5zdHJ1Y3Rpb24gcHJvZ3JhbSBpcyBub3Qgc3VwcG9ydGVkXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9ufSBpbnN0cnVjdGlvbiAtIGEgc29sYW5hIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VmFsaWRJbnN0cnVjdGlvblR5cGVzfSAtIGEgIHNvbGFuYSBpbnN0cnVjdGlvbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb246IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24pOiBWYWxpZEluc3RydWN0aW9uVHlwZXMge1xuICBzd2l0Y2ggKGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpKSB7XG4gICAgY2FzZSBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSykudG9TdHJpbmcoKTpcbiAgICAgIHJldHVybiAnTWVtbyc7XG4gICAgY2FzZSBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgcmV0dXJuIFN5c3RlbUluc3RydWN0aW9uLmRlY29kZUluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoXG4gICAgICAgICdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiBwcm9ncmFtIGlkIG5vdCBzdXBwb3J0ZWQ6ICcgKyBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9TdHJpbmcoKSxcbiAgICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzb2xhbmEgaW5zdHJ1Y3Rpb25zIHR5cGVzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGJ1aWxkZXIuXG4gKiBUaHJvd3MgaWYgdGhlIGluc3RydWN0aW9uIHR5cGUgaXMgaW52YWxpZC5cbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259IGluc3RydWN0aW9uIC0gYSBzb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVJbnRydWN0aW9uVHlwZXMoaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBpZiAoIVZBTElEX1NZU1RFTV9JTlNUUlVDVElPTl9UWVBFUy5pbmNsdWRlcyhnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pKSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIFRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgfVxufVxuIl19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBUXlCO0FBQ3pCLDhDQUF3QjtBQUN4Qiw4REFBcUM7QUFDckMseUNBTXFCO0FBQ3JCLHdDQUE4QztBQUM5Qyw2Q0FBcUY7QUFFckYsd0RBQTZCO0FBRTdCLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMscUZBQXFGO0FBQzNILElBQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ3JGLElBQU0sdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7QUFFdkQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUZELHdDQUVDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLElBQUk7UUFDRixPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyx5QkFBeUIsQ0FDbkgsQ0FBQztLQUNIO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGlCQUFpQixDQUFDLE1BQTJCO0lBQzNELElBQUk7UUFDRixJQUFNLEdBQUcsR0FBZSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzlGLE9BQU8sQ0FBQyxDQUFD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Q0FBQyxjQUFjLEVBQUU7UUFDbkIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkU7SUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLEVBQUU7UUFDMUMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUQ7QUFDSCxDQUFDO0FBUEQsd0RBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBLZXlwYWlyLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZVB1YmtleVBhaXIsXG4gIFN5c3RlbUluc3RydWN0aW9uLFxuICBTeXN0ZW1Qcm9ncmFtLFxuICBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgTUFYX01FTU9fTEVOR1RILFxuICBNRU1PX1BST0dSQU1fUEssXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0sXG4gIFZBTElEX1NZU1RFTV9JTlNUUlVDVElPTl9UWVBFUyxcbiAgd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgTm90U3VwcG9ydGVkLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsIFV0aWxzRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVmFsaWRJbnN0cnVjdGlvblR5cGVzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuXG5jb25zdCBERUNPREVEX0JMT0NLX0hBU0hfTEVOR1RIID0gMzI7IC8vIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2RldmVsb3BpbmcvcHJvZ3JhbW1pbmctbW9kZWwvdHJhbnNhY3Rpb25zI2Jsb2NraGFzaC1mb3JtYXRcbmNvbnN0IERFQ09ERURfU0lHTkFUVVJFX0xFTkdUSCA9IDY0OyAvLyBodHRwczovL2RvY3Muc29sYW5hLmNvbS90ZXJtaW5vbG9neSNzaWduYXR1cmVcbmNvbnN0IEJBU0VfNThfRU5DT05ESU5HX1JFR0VYID0gJ1sxLTlBLUhKLU5QLVphLWttLXpdJztcblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkUHVibGljS2V5KGFkZHJlc3MpO1xufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgISFoYXNoICYmIG5ldyBSZWdFeHAoQkFTRV81OF9FTkNPTkRJTkdfUkVHRVgpLnRlc3QoaGFzaCkgJiYgYnM1OC5kZWNvZGUoaGFzaCkubGVuZ3RoID09PSBERUNPREVEX0JMT0NLX0hBU0hfTEVOR1RIXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShwcnZLZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBrZXk6IFVpbnQ4QXJyYXkgPSB0eXBlb2YgcHJ2S2V5ID09PSAnc3RyaW5nJyA/IHRoaXMuYmFzZTU4VG9VaW50OEFycmF5KHBydktleSkgOiBwcnZLZXk7XG4gICAgcmV0dXJuICEhS2V5cGFpci5mcm9tU2VjcmV0S2V5KGtleSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBQdWJsaWNLZXkocHViS2V5KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFzaWduYXR1cmUgJiYgYnM1OC5kZWNvZGUoc2lnbmF0dXJlKS5sZW5ndGggPT09IERFQ09ERURfU0lHTkFUVVJFX0xFTkdUSDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbi8vIFRyYW5zYWN0aW9uSWQgYXJlIHRoZSBmaXJzdCBzaWduYXR1cmUgb24gYSBUcmFuc2FjdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGhpcy5pc1ZhbGlkU2lnbmF0dXJlKHR4SWQpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBvZiBsYW1wb3J0cyBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gdGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIGJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSAmJiBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgbWVtbyBvciBub3QuXG4gKlxuICogQHBhcmFtIG1lbW8gLSB0aGUgbWVtbyBzdHJpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShtZW1vKS5sZW5ndGggPD0gTUFYX01FTU9fTEVOR1RIO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgZm9ybWF0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdHggPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnYmFzZTY0JykpO1xuICAgIHR4LnNlcmlhbGl6ZSh7IHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2VyaWFsaXplZFR4IC0gdHggYXMgYSBiYXNlNjQgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIC0gc2lnbmF0dXJlIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IC0gcHVibGljIGtleSBhcyBiYXNlIDU4XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUoc2VyaWFsaXplZFR4OiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHgpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgc2VyaWFsaXplZFR4Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBwdWJsaWNLZXknKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IG1zZyA9IFNvbFRyYW5zYWN0aW9uLmZyb20oQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnYmFzZTY0JykpLnNlcmlhbGl6ZU1lc3NhZ2UoKTtcbiAgY29uc3Qgc2lnID0gYmFzZTU4VG9VaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gIGNvbnN0IHB1YiA9IG5ldyBQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobXNnLCBzaWcsIHB1Yi50b0J1ZmZlcigpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2U1OCBzdHJpbmcgaW50byBhIFVpbnQ4QXJyYXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IC0gYSBzdHJpbmcgaW4gYmFzZTU4XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gLSBhbiBVaW50OEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNThUb1VpbnQ4QXJyYXkoaW5wdXQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnM1OC5kZWNvZGUoaW5wdXQpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBiYXNlNTggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gaW5wdXQgLSBhbiBVaW50OEFycmF5XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIGEgc3RyaW5nIGluIGJhc2U1OFxuICovXG5leHBvcnQgZnVuY3Rpb24gVWludDhBcnJheVRvYmFzZTU4KGlucHV0OiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGJzNTguZW5jb2RlKGlucHV0KTtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgYW1vdW50IG9mIHNpZ25hdHVyZXMgYXJlIG5vdCBudWxsLlxuICpcbiAqIEBwYXJhbSB7U2lnbmF0dXJlUHVia2V5UGFpcltdfSBzaWduYXR1cmVzIC0gYW4gYXJyYXkgb2YgU2lnbmF0dXJlUHVia2V5UGFpclxuICogQHJldHVybnMge251bWJlcn0gLSB0aGUgYW1vdW50IG9mIHZhbGlkIHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvdW50Tm90TnVsbFNpZ25hdHVyZXMoc2lnbmF0dXJlczogU2lnbmF0dXJlUHVia2V5UGFpcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMuZmlsdGVyKChzaWcpID0+ICEhc2lnLnNpZ25hdHVyZSkubGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFsbCBzaWduYXR1cmVzIGFyZSBjb21wbGV0ZWQuXG4gKlxuICogQHBhcmFtIHtTaWduYXR1cmVQdWJrZXlQYWlyW119IHNpZ25hdHVyZXMgLSBzaWduYXR1cmVzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzQWxsU2lnbmF0dXJlcyhzaWduYXR1cmVzOiBTaWduYXR1cmVQdWJrZXlQYWlyW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMubGVuZ3RoID4gMCAmJiBjb3VudE5vdE51bGxTaWduYXR1cmVzKHNpZ25hdHVyZXMpID09PSBzaWduYXR1cmVzLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0cmFuc2FjdGlvbiBUeXBlIGJhc2VkIG9uIHRoZSAgdHJhbnNhY3Rpb24gaW5zdHJ1Y3Rpb25zLlxuICogT25seSBXYWxsZXQgaW5pdGlhbGl6YXRpb24gYW5kIFRyYW5zZmVyIHRyYW5zYWN0aW9ucyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7U29sVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gdGhlIHNvbGFuYSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uVHlwZX0gLSB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uOiBTb2xUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uVHlwZSB7XG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zIH0gPSB0cmFuc2FjdGlvbjtcbiAgdmFsaWRhdGVJbnRydWN0aW9uVHlwZXMoaW5zdHJ1Y3Rpb25zKTtcbiAgaWYgKFxuICAgIGluc3RydWN0aW9ucy5sZW5ndGggPD0gMyAmJlxuICAgIGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbnNbd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcy5DcmVhdGVdKSA9PT0gVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5DcmVhdGUgJiZcbiAgICBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb25zW3dhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMuSW5pdGlhbGl6ZU5vbmNlXSkgPT09XG4gICAgICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkluaXRpYWxpemVOb25jZUFjY291bnRcbiAgKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBhIGluc3RydWN0aW9uIFR5cGUgYmFzZWQgb24gdGhlIHNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKiBUaHJvd3MgaWYgdGhlIHNvbGFuYSBpbnN0cnVjdGlvbiBwcm9ncmFtIGlzIG5vdCBzdXBwb3J0ZWRcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259IGluc3RydWN0aW9uIC0gYSBzb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtWYWxpZEluc3RydWN0aW9uVHlwZXN9IC0gYSAgc29sYW5hIGluc3RydWN0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbik6IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlcyB7XG4gIHN3aXRjaCAoaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvU3RyaW5nKCkpIHtcbiAgICBjYXNlIG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKS50b1N0cmluZygpOlxuICAgICAgcmV0dXJuICdNZW1vJztcbiAgICBjYXNlIFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvU3RyaW5nKCk6XG4gICAgICByZXR1cm4gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlSW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIGluc3RydWN0aW9uIHByb2dyYW0gaWQgbm90IHN1cHBvcnRlZDogJyArIGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpLFxuICAgICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNvbGFuYSBpbnN0cnVjdGlvbnMgdHlwZXMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnVpbGRlci5cbiAqIFRocm93cyBpZiB0aGUgaW5zdHJ1Y3Rpb24gdHlwZSBpcyBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb24gLSBhIHNvbGFuYSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUludHJ1Y3Rpb25UeXBlcyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGlmICghVkFMSURfU1lTVEVNX0lOU1RSVUNUSU9OX1RZUEVTLmluY2x1ZGVzKGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbikpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgcmF3IHRyYW5zYWN0aW9uIGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LCB0aHJvdyBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { ClarityValue, PostCondition, PostConditionMode } from '@stacks/transactions';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ export declare abstract class AbstractContractBuilder extends TransactionBuilder {
6
+ private _options;
7
+ protected _contractAddress: string;
8
+ protected _contractName: string;
9
+ protected _functionName: string;
10
+ protected _postConditionMode?: PostConditionMode;
11
+ protected _postConditions?: PostCondition[];
12
+ protected _functionArgs: ClarityValue[];
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ initBuilder(tx: Transaction): void;
15
+ /** @inheritdoc */
16
+ protected buildImplementation(): Promise<Transaction>;
17
+ private buildContractCallOptions;
18
+ }
19
+ //# sourceMappingURL=abstractContractBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractContractBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/abstractContractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,8BAAsB,uBAAwB,SAAQ,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAoE;IACpF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5C,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,wBAAwB;CA4BjC"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __importDefault = (this && this.__importDefault) || function (mod) {
65
+ return (mod && mod.__esModule) ? mod : { "default": mod };
66
+ };
67
+ Object.defineProperty(exports, "__esModule", { value: true });
68
+ exports.AbstractContractBuilder = void 0;
69
+ var bn_js_1 = __importDefault(require("bn.js"));
70
+ var transactions_1 = require("@stacks/transactions");
71
+ var baseCoin_1 = require("../baseCoin");
72
+ var errors_1 = require("../baseCoin/errors");
73
+ var transactionBuilder_1 = require("./transactionBuilder");
74
+ var AbstractContractBuilder = /** @class */ (function (_super) {
75
+ __extends(AbstractContractBuilder, _super);
76
+ function AbstractContractBuilder(_coinConfig) {
77
+ return _super.call(this, _coinConfig) || this;
78
+ }
79
+ AbstractContractBuilder.prototype.initBuilder = function (tx) {
80
+ var txData = tx.toJson();
81
+ if (txData.payload === undefined) {
82
+ throw new errors_1.InvalidTransactionError('payload must not be undefined');
83
+ }
84
+ if (txData.payload.payloadType === transactions_1.PayloadType.ContractCall) {
85
+ this._contractAddress = txData.payload.contractAddress;
86
+ this._contractName = txData.payload.contractName;
87
+ this._functionName = txData.payload.functionName;
88
+ this._functionArgs = txData.payload.functionArgs;
89
+ _super.prototype.initBuilder.call(this, tx);
90
+ }
91
+ else {
92
+ throw new errors_1.BuildTransactionError('Transaction should be contract call');
93
+ }
94
+ };
95
+ /** @inheritdoc */
96
+ AbstractContractBuilder.prototype.buildImplementation = function () {
97
+ return __awaiter(this, void 0, void 0, function () {
98
+ var _a;
99
+ return __generator(this, function (_b) {
100
+ switch (_b.label) {
101
+ case 0:
102
+ this._options = this.buildContractCallOptions();
103
+ this.transaction.setTransactionType(baseCoin_1.TransactionType.ContractCall);
104
+ _a = this.transaction;
105
+ return [4 /*yield*/, transactions_1.makeUnsignedContractCall(this._options)];
106
+ case 1:
107
+ _a.stxTransaction = _b.sent();
108
+ return [4 /*yield*/, _super.prototype.buildImplementation.call(this)];
109
+ case 2: return [2 /*return*/, _b.sent()];
110
+ }
111
+ });
112
+ });
113
+ };
114
+ AbstractContractBuilder.prototype.buildContractCallOptions = function () {
115
+ var defaultOpts = {
116
+ contractAddress: this._contractAddress,
117
+ contractName: this._contractName,
118
+ functionName: this._functionName,
119
+ functionArgs: this._functionArgs,
120
+ postConditionMode: this._postConditionMode,
121
+ postConditions: this._postConditions,
122
+ anchorMode: this._anchorMode,
123
+ network: this._network,
124
+ fee: new bn_js_1.default(this._fee.fee),
125
+ nonce: new bn_js_1.default(this._nonce),
126
+ };
127
+ if (this._fromPubKeys.length === 1) {
128
+ return __assign(__assign({}, defaultOpts), { publicKey: this._fromPubKeys[0] });
129
+ }
130
+ else if (this._fromPubKeys.length > 1) {
131
+ return __assign(__assign({}, defaultOpts), { publicKeys: this._fromPubKeys, numSignatures: this._numberSignatures });
132
+ }
133
+ else {
134
+ throw new errors_1.InvalidParameterValueError('supply at least 1 public key');
135
+ }
136
+ };
137
+ return AbstractContractBuilder;
138
+ }(transactionBuilder_1.TransactionBuilder));
139
+ exports.AbstractContractBuilder = AbstractContractBuilder;
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250cmFjdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zdHgvYWJzdHJhY3RDb250cmFjdEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBMkI7QUFDM0IscURBUzhCO0FBQzlCLHdDQUE4QztBQUM5Qyw2Q0FBZ0g7QUFFaEgsMkRBQTBEO0FBRTFEO0lBQXNELDJDQUFrQjtJQVN0RSxpQ0FBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVELDZDQUFXLEdBQVgsVUFBWSxFQUFlO1FBQ3pCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSywwQkFBVyxDQUFDLFlBQVksRUFBRTtZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakQsaUJBQU0sV0FBVyxZQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxNQUFNLElBQUksOEJBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDRixxREFBbUIsR0FBbkM7Ozs7Ozt3QkFDRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO3dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ2xFLEtBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQTt3QkFBa0IscUJBQU0sdUNBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFBOzt3QkFBL0UsR0FBaUIsY0FBYyxHQUFHLFNBQTZDLENBQUM7d0JBQ3pFLHFCQUFNLGlCQUFNLG1CQUFtQixXQUFFLEVBQUE7NEJBQXhDLHNCQUFPLFNBQWlDLEVBQUM7Ozs7S0FDMUM7SUFFTywwREFBd0IsR0FBaEM7UUFDRSxJQUFNLFdBQVcsR0FBd0I7WUFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdEMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMxQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QixHQUFHLEVBQUUsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDOUIsS0FBSyxFQUFFLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLDZCQUNLLFdBQVcsS0FDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFDL0I7U0FDSDthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLDZCQUNLLFdBQVcsS0FDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFDckM7U0FDSDthQUFNO1lBQ0wsTUFBTSxJQUFJLG1DQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBQ0gsOEJBQUM7QUFBRCxDQUFDLEFBakVELENBQXNELHVDQUFrQixHQWlFdkU7QUFqRXFCLDBEQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIENsYXJpdHlWYWx1ZSxcbiAgQ29udHJhY3RDYWxsT3B0aW9ucyxcbiAgbWFrZVVuc2lnbmVkQ29udHJhY3RDYWxsLFxuICBQYXlsb2FkVHlwZSxcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyxcbiAgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX29wdGlvbnM6IFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyB8IFVuc2lnbmVkTXVsdGlTaWdDb250cmFjdENhbGxPcHRpb25zO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0TmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3Bvc3RDb25kaXRpb25Nb2RlPzogUG9zdENvbmRpdGlvbk1vZGU7XG4gIHByb3RlY3RlZCBfcG9zdENvbmRpdGlvbnM/OiBQb3N0Q29uZGl0aW9uW107XG4gIHByb3RlY3RlZCBfZnVuY3Rpb25BcmdzOiBDbGFyaXR5VmFsdWVbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICBpZiAodHhEYXRhLnBheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdwYXlsb2FkIG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gdHhEYXRhLnBheWxvYWQuY29udHJhY3RBZGRyZXNzO1xuICAgICAgdGhpcy5fY29udHJhY3ROYW1lID0gdHhEYXRhLnBheWxvYWQuY29udHJhY3ROYW1lO1xuICAgICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gdHhEYXRhLnBheWxvYWQuZnVuY3Rpb25OYW1lO1xuICAgICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdHhEYXRhLnBheWxvYWQuZnVuY3Rpb25BcmdzO1xuICAgICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBzaG91bGQgYmUgY29udHJhY3QgY2FsbCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuYnVpbGRDb250cmFjdENhbGxPcHRpb25zKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbiA9IGF3YWl0IG1ha2VVbnNpZ25lZENvbnRyYWN0Q2FsbCh0aGlzLl9vcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRyYWN0Q2FsbE9wdGlvbnMoKTogVW5zaWduZWRDb250cmFjdENhbGxPcHRpb25zIHwgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRzOiBDb250cmFjdENhbGxPcHRpb25zID0ge1xuICAgICAgY29udHJhY3RBZGRyZXNzOiB0aGlzLl9jb250cmFjdEFkZHJlc3MsXG4gICAgICBjb250cmFjdE5hbWU6IHRoaXMuX2NvbnRyYWN0TmFtZSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5fZnVuY3Rpb25OYW1lLFxuICAgICAgZnVuY3Rpb25BcmdzOiB0aGlzLl9mdW5jdGlvbkFyZ3MsXG4gICAgICBwb3N0Q29uZGl0aW9uTW9kZTogdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUsXG4gICAgICBwb3N0Q29uZGl0aW9uczogdGhpcy5fcG9zdENvbmRpdGlvbnMsXG4gICAgICBhbmNob3JNb2RlOiB0aGlzLl9hbmNob3JNb2RlLFxuICAgICAgbmV0d29yazogdGhpcy5fbmV0d29yayxcbiAgICAgIGZlZTogbmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSxcbiAgICAgIG5vbmNlOiBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRzLFxuICAgICAgICBwdWJsaWNLZXk6IHRoaXMuX2Zyb21QdWJLZXlzWzBdLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRzLFxuICAgICAgICBwdWJsaWNLZXlzOiB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgbnVtU2lnbmF0dXJlczogdGhpcy5fbnVtYmVyU2lnbmF0dXJlcyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignc3VwcGx5IGF0IGxlYXN0IDEgcHVibGljIGtleScpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ export declare const FUNCTION_NAME_SENDMANY = "send-many";
2
+ export declare const CONTRACT_NAME_SENDMANY = "send-many-memo";
3
+ export declare const CONTRACT_NAME_STAKING = "pox";
4
+ export declare const VALID_CONTRACT_FUNCTION_NAMES: string[];
5
+ export declare const DEFAULT_SEED_SIZE_BYTES = 64;
6
+ export declare const ANCHOR_MODE = 3;
7
+ export declare const DEFAULT_MULTISIG_SIG_NUMBER = 2;
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,eAAO,MAAM,6BAA6B,UAOzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_MULTISIG_SIG_NUMBER = exports.ANCHOR_MODE = exports.DEFAULT_SEED_SIZE_BYTES = exports.VALID_CONTRACT_FUNCTION_NAMES = exports.CONTRACT_NAME_STAKING = exports.CONTRACT_NAME_SENDMANY = exports.FUNCTION_NAME_SENDMANY = void 0;
4
+ exports.FUNCTION_NAME_SENDMANY = 'send-many';
5
+ exports.CONTRACT_NAME_SENDMANY = 'send-many-memo';
6
+ exports.CONTRACT_NAME_STAKING = 'pox';
7
+ exports.VALID_CONTRACT_FUNCTION_NAMES = [
8
+ 'stack-stx',
9
+ 'delegate-stx',
10
+ 'delegate-stack-stx',
11
+ 'stack-aggregation-commit',
12
+ 'revoke-delegate-stx',
13
+ 'send-many',
14
+ ];
15
+ exports.DEFAULT_SEED_SIZE_BYTES = 64;
16
+ // https://github.com/stacksgov/sips/blob/main/sips/sip-005/sip-005-blocks-and-transactions.md#transaction-encoding
17
+ exports.ANCHOR_MODE = 3;
18
+ exports.DEFAULT_MULTISIG_SIG_NUMBER = 2;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc3R4L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLHNCQUFzQixHQUFHLFdBQVcsQ0FBQztBQUNyQyxRQUFBLHNCQUFzQixHQUFHLGdCQUFnQixDQUFDO0FBQzFDLFFBQUEscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0FBRTlCLFFBQUEsNkJBQTZCLEdBQUc7SUFDM0MsV0FBVztJQUNYLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQixXQUFXO0NBQ1osQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLG1IQUFtSDtBQUN0RyxRQUFBLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDaEIsUUFBQSwyQkFBMkIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUX05BTUVfU0VORE1BTlkgPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUX05BTUVfU1RBS0lORyA9ICdwb3gnO1xuXG5leHBvcnQgY29uc3QgVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMgPSBbXG4gICdzdGFjay1zdHgnLFxuICAnZGVsZWdhdGUtc3R4JyxcbiAgJ2RlbGVnYXRlLXN0YWNrLXN0eCcsXG4gICdzdGFjay1hZ2dyZWdhdGlvbi1jb21taXQnLFxuICAncmV2b2tlLWRlbGVnYXRlLXN0eCcsXG4gICdzZW5kLW1hbnknLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gNjQ7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3Nnb3Yvc2lwcy9ibG9iL21haW4vc2lwcy9zaXAtMDA1L3NpcC0wMDUtYmxvY2tzLWFuZC10cmFuc2FjdGlvbnMubWQjdHJhbnNhY3Rpb24tZW5jb2RpbmdcbmV4cG9ydCBjb25zdCBBTkNIT1JfTU9ERSA9IDM7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSID0gMjtcbiJdfQ==
@@ -1,20 +1,11 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
2
  import { ClarityValue } from '@stacks/transactions';
3
3
  import { Transaction } from './transaction';
4
- import { TransactionBuilder } from './transactionBuilder';
5
4
  import { ClarityValueJson } from './iface';
6
- export declare class ContractBuilder extends TransactionBuilder {
7
- private _options;
8
- private _contractAddress;
9
- private _contractName;
10
- private _functionName;
11
- private _functionArgs;
12
- private _anchorMode;
5
+ import { AbstractContractBuilder } from './abstractContractBuilder';
6
+ export declare class ContractBuilder extends AbstractContractBuilder {
13
7
  constructor(_coinConfig: Readonly<CoinConfig>);
14
8
  initBuilder(tx: Transaction): void;
15
- /** @inheritdoc */
16
- protected buildImplementation(): Promise<Transaction>;
17
- private buildContractCallOptions;
18
9
  /**
19
10
  * Set the contract address
20
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/contractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAKL,YAAY,EAUb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAoE;IACpF,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,wBAAwB;IA4BhC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI;IAY7D,OAAO,CAAC,OAAO;CA8BhB"}
1
+ {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/contractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAuC,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAKL,YAAY,EAKb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;gBAC9C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI;IAY7D,OAAO,CAAC,OAAO;CA8BhB"}