@bitgo-beta/sdk-coin-ada 2.3.14-beta.9 → 2.3.14-beta.900

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 (46) hide show
  1. package/CHANGELOG.md +948 -0
  2. package/dist/src/ada.d.ts +37 -19
  3. package/dist/src/ada.d.ts.map +1 -1
  4. package/dist/src/ada.js +306 -96
  5. package/dist/src/adaToken.d.ts +1 -1
  6. package/dist/src/adaToken.d.ts.map +1 -1
  7. package/dist/src/adaToken.js +3 -3
  8. package/dist/src/index.js +6 -2
  9. package/dist/src/lib/index.d.ts +4 -1
  10. package/dist/src/lib/index.d.ts.map +1 -1
  11. package/dist/src/lib/index.js +32 -12
  12. package/dist/src/lib/keyPair.js +29 -16
  13. package/dist/src/lib/stakingActivateBuilder.d.ts +1 -1
  14. package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/stakingActivateBuilder.js +30 -10
  16. package/dist/src/lib/{stakingWithdrawRewardsBuilder.d.ts → stakingBaseClaimBuilder.d.ts} +6 -7
  17. package/dist/src/lib/stakingBaseClaimBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/stakingBaseClaimBuilder.js +35 -0
  19. package/dist/src/lib/stakingClaimRewardsBuilder.d.ts +10 -0
  20. package/dist/src/lib/stakingClaimRewardsBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/stakingClaimRewardsBuilder.js +22 -0
  22. package/dist/src/lib/stakingDeactivateBuilder.js +24 -10
  23. package/dist/src/lib/stakingPledgeBuilder.d.ts +23 -0
  24. package/dist/src/lib/stakingPledgeBuilder.d.ts.map +1 -0
  25. package/dist/src/lib/stakingPledgeBuilder.js +43 -0
  26. package/dist/src/lib/stakingWithdrawBuilder.d.ts +12 -0
  27. package/dist/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  28. package/dist/src/lib/stakingWithdrawBuilder.js +22 -0
  29. package/dist/src/lib/transaction.d.ts +35 -5
  30. package/dist/src/lib/transaction.d.ts.map +1 -1
  31. package/dist/src/lib/transaction.js +144 -21
  32. package/dist/src/lib/transactionBuilder.d.ts +5 -2
  33. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  34. package/dist/src/lib/transactionBuilder.js +173 -24
  35. package/dist/src/lib/transactionBuilderFactory.d.ts +8 -2
  36. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  37. package/dist/src/lib/transactionBuilderFactory.js +21 -3
  38. package/dist/src/lib/utils.d.ts +29 -0
  39. package/dist/src/lib/utils.d.ts.map +1 -1
  40. package/dist/src/lib/utils.js +170 -17
  41. package/dist/src/lib/voteDelegationBuilder.d.ts +24 -0
  42. package/dist/src/lib/voteDelegationBuilder.d.ts.map +1 -0
  43. package/dist/src/lib/voteDelegationBuilder.js +84 -0
  44. package/package.json +13 -10
  45. package/dist/src/lib/stakingWithdrawRewardsBuilder.d.ts.map +0 -1
  46. package/dist/src/lib/stakingWithdrawRewardsBuilder.js +0 -43
@@ -7,7 +7,10 @@ const walletInitializationBuilder_1 = require("./walletInitializationBuilder");
7
7
  const transaction_1 = require("./transaction");
8
8
  const stakingActivateBuilder_1 = require("./stakingActivateBuilder");
9
9
  const stakingDeactivateBuilder_1 = require("./stakingDeactivateBuilder");
10
- const stakingWithdrawRewardsBuilder_1 = require("./stakingWithdrawRewardsBuilder");
10
+ const stakingWithdrawBuilder_1 = require("./stakingWithdrawBuilder");
11
+ const stakingPledgeBuilder_1 = require("./stakingPledgeBuilder");
12
+ const stakingClaimRewardsBuilder_1 = require("./stakingClaimRewardsBuilder");
13
+ const voteDelegationBuilder_1 = require("./voteDelegationBuilder");
11
14
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
12
15
  constructor(_coinConfig) {
13
16
  super(_coinConfig);
@@ -25,12 +28,18 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
25
28
  return this.getTransferBuilder(tx);
26
29
  case sdk_core_1.TransactionType.StakingActivate:
27
30
  return this.getStakingActivateBuilder(tx);
31
+ case sdk_core_1.TransactionType.StakingClaim:
32
+ return this.getStakingClaimRewardsBuilder(tx);
28
33
  case sdk_core_1.TransactionType.StakingDeactivate:
29
34
  return this.getStakingDeactivateBuilder(tx);
30
35
  case sdk_core_1.TransactionType.StakingWithdraw:
31
36
  return this.getStakingWithdrawBuilder(tx);
32
37
  case sdk_core_1.TransactionType.WalletInitialization:
33
38
  return this.getWalletInitializationBuilder(tx);
39
+ case sdk_core_1.TransactionType.StakingPledge:
40
+ return this.getStakingPledgeBuilder(tx);
41
+ case sdk_core_1.TransactionType.VoteDelegation:
42
+ return this.getVoteDelegationBuilder(tx);
34
43
  default:
35
44
  throw new sdk_core_1.InvalidTransactionError('unsupported transaction');
36
45
  }
@@ -50,11 +59,20 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
50
59
  getStakingActivateBuilder(tx) {
51
60
  return TransactionBuilderFactory.initializeBuilder(tx, new stakingActivateBuilder_1.StakingActivateBuilder(this._coinConfig));
52
61
  }
62
+ getVoteDelegationBuilder(tx) {
63
+ return TransactionBuilderFactory.initializeBuilder(tx, new voteDelegationBuilder_1.VoteDelegationBuilder(this._coinConfig));
64
+ }
65
+ getStakingClaimRewardsBuilder(tx) {
66
+ return TransactionBuilderFactory.initializeBuilder(tx, new stakingClaimRewardsBuilder_1.StakingClaimRewardsBuilder(this._coinConfig));
67
+ }
53
68
  getStakingDeactivateBuilder(tx) {
54
69
  return TransactionBuilderFactory.initializeBuilder(tx, new stakingDeactivateBuilder_1.StakingDeactivateBuilder(this._coinConfig));
55
70
  }
56
71
  getStakingWithdrawBuilder(tx) {
57
- return TransactionBuilderFactory.initializeBuilder(tx, new stakingWithdrawRewardsBuilder_1.StakingWithdrawRewardsBuilder(this._coinConfig));
72
+ return TransactionBuilderFactory.initializeBuilder(tx, new stakingWithdrawBuilder_1.StakingWithdrawBuilder(this._coinConfig));
73
+ }
74
+ getStakingPledgeBuilder(tx) {
75
+ return TransactionBuilderFactory.initializeBuilder(tx, new stakingPledgeBuilder_1.StakingPledgeBuilder(this._coinConfig));
58
76
  }
59
77
  /**
60
78
  * Initialize the builder with the given transaction
@@ -71,4 +89,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
71
89
  }
72
90
  }
73
91
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBK0c7QUFDL0csdURBQW9EO0FBQ3BELCtFQUE0RTtBQUU1RSwrQ0FBNEM7QUFDNUMscUVBQWtFO0FBQ2xFLHlFQUFzRTtBQUN0RSxtRkFBZ0Y7QUFFaEYsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBd0I7UUFDM0IsSUFBSSxHQUFHLFlBQVksVUFBVSxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSTtZQUNGLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDZixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLG9CQUFvQjtvQkFDdkMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pEO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQ2hFO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QixDQUFDLEVBQWdCO1FBQzdDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUkseURBQTJCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQWdCO1FBQ3hDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksK0NBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELDJCQUEyQixDQUFDLEVBQWdCO1FBQzFDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksbURBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQWdCO1FBQ3hDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksNkRBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQ3BHLElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQW5FRCw4REFtRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFraW5nQWN0aXZhdGVCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdXaXRoZHJhd1Jld2FyZHNCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGlmIChyYXcgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5mcm9tKEJ1ZmZlci5mcm9tKHJhdykudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0FjdGl2YXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nQWN0aXZhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nV2l0aGRyYXdSZXdhcmRzQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cbn1cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBK0c7QUFDL0csdURBQW9EO0FBQ3BELCtFQUE0RTtBQUU1RSwrQ0FBNEM7QUFDNUMscUVBQWtFO0FBQ2xFLHlFQUFzRTtBQUN0RSxxRUFBa0U7QUFDbEUsaUVBQThEO0FBQzlELDZFQUEwRTtBQUMxRSxtRUFBZ0U7QUFFaEUsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBd0I7UUFDM0IsSUFBSSxHQUFHLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLFlBQVk7b0JBQy9CLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLDBCQUFlLENBQUMsaUJBQWlCO29CQUNwQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsS0FBSywwQkFBZSxDQUFDLGVBQWU7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLDBCQUFlLENBQUMsb0JBQW9CO29CQUN2QyxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakQsS0FBSywwQkFBZSxDQUFDLGFBQWE7b0JBQ2hDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxLQUFLLDBCQUFlLENBQUMsY0FBYztvQkFDakMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNDO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCLENBQUMsRUFBZ0I7UUFDN0MsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBZ0I7UUFDeEMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsRUFBZ0I7UUFDdkMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSw2Q0FBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsNkJBQTZCLENBQUMsRUFBZ0I7UUFDNUMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsRUFBZ0I7UUFDMUMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBZ0I7UUFDeEMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsRUFBZ0I7UUFDdEMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssTUFBTSxDQUFDLGlCQUFpQixDQUErQixFQUEyQixFQUFFLE9BQVU7UUFDcEcsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQXJGRCw4REFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFraW5nQWN0aXZhdGVCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ1BsZWRnZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdQbGVkZ2VCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQ2xhaW1SZXdhcmRzQnVpbGRlcic7XG5pbXBvcnQgeyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3ZvdGVEZWxlZ2F0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGlmIChyYXcgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5mcm9tKEJ1ZmZlci5mcm9tKHJhdykudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nQ2xhaW1SZXdhcmRzQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1BsZWRnZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nUGxlZGdlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlZvdGVEZWxlZ2F0aW9uOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFZvdGVEZWxlZ2F0aW9uQnVpbGRlcih0eCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRWb3RlRGVsZWdhdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFZvdGVEZWxlZ2F0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ0NsYWltUmV3YXJkc0J1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdDbGFpbVJld2FyZHNCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBnZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBTdGFraW5nV2l0aGRyYXdCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0U3Rha2luZ1BsZWRnZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdQbGVkZ2VCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdQbGVkZ2VCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uQnVpbGRlcn0gYnVpbGRlciAtIHRoZSBidWlsZGVyIHRvIGJlIGluaXRpYWxpemVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
@@ -1,9 +1,16 @@
1
1
  import { AddressFormat, BaseUtils } from '@bitgo-beta/sdk-core';
2
+ import { DRep, Address } from '@emurgo/cardano-serialization-lib-nodejs';
2
3
  import { KeyPair } from './keyPair';
4
+ export declare const MIN_ADA_FOR_ONE_ASSET = "1500000";
5
+ export declare const VOTE_ALWAYS_ABSTAIN = "always-abstain";
6
+ export declare const VOTE_ALWAYS_NO_CONFIDENCE = "always-no-confidence";
3
7
  export declare class Utils implements BaseUtils {
4
8
  createBaseAddressWithStakeAndPaymentKey(stakeKeyPair: KeyPair, paymentKeyPair: KeyPair, network: AddressFormat): string;
5
9
  validateBlake2b(hash: string): boolean;
6
10
  getRewardAddress(stakingPubKey: string, coinName: string): string;
11
+ isValidDRepId(dRepId: string): boolean;
12
+ getDRepFromDRepId(dRepId: string): DRep;
13
+ getDRepIdFromDRep(dRep: DRep): string;
7
14
  /** @inheritdoc */
8
15
  isValidAddress(address: string): boolean;
9
16
  /** @inheritdoc */
@@ -17,6 +24,28 @@ export declare class Utils implements BaseUtils {
17
24
  isValidSignature(signature: string): boolean;
18
25
  /** @inheritdoc */
19
26
  isValidTransactionId(txId: string): boolean;
27
+ /**
28
+ * Get the transaction body from a serialized transaction
29
+ * @param {string} serializedTx - serialized transaction in hex or base64 format
30
+ * @returns {string} transaction body in hex format
31
+ */
32
+ getTransactionBody(serializedTx: string): string;
33
+ /**
34
+ * Decode wallet address from string.
35
+ * Attempts to decode as Shelley (bech32) first, then Byron (base58).
36
+ * @param {string} address - Valid Byron or Shelley-era address.
37
+ * @returns {Address} - Valid address object.
38
+ * @throws {InvalidAddressError} If the address is neither valid Shelley nor Byron.
39
+ */
40
+ getWalletAddress(address: string): Address;
41
+ /**
42
+ * Decode address string from Address object.
43
+ * Attempts to decode as Shelley (bech32) first, then Byron (base58).
44
+ * @param {Address} address - Valid Address object
45
+ * @returns {string} - Valid Byron or Shelley-era address string.
46
+ * @throws {InvalidAddressError} If the Address object is neither valid Shelley nor Byron.
47
+ */
48
+ getAddressString(address: Address): string;
20
49
  }
21
50
  declare const utils: Utils;
22
51
  export default utils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAShE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,KAAM,YAAW,SAAS;IACrC,uCAAuC,CACrC,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM;IAiCT,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBjE,kBAAkB;IAElB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAyBxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASzC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAS5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG5C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAQL,IAAI,EAIJ,OAAO,EAIR,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE,qBAAa,KAAM,YAAW,SAAS;IACrC,uCAAuC,CACrC,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM;IAiCT,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAcjE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAStC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAuCvC,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAWrC,kBAAkB;IAElB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiDxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASzC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAS5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAQhD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IA0B1C;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAuB3C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Utils = void 0;
6
+ exports.Utils = exports.VOTE_ALWAYS_NO_CONFIDENCE = exports.VOTE_ALWAYS_ABSTAIN = exports.MIN_ADA_FOR_ONE_ASSET = void 0;
4
7
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
8
  const cardano_serialization_lib_nodejs_1 = require("@emurgo/cardano-serialization-lib-nodejs");
6
9
  const keyPair_1 = require("./keyPair");
7
10
  const bech32_1 = require("bech32");
11
+ const bs58_1 = __importDefault(require("bs58"));
12
+ const cbor_1 = __importDefault(require("cbor"));
13
+ exports.MIN_ADA_FOR_ONE_ASSET = '1500000';
14
+ exports.VOTE_ALWAYS_ABSTAIN = 'always-abstain';
15
+ exports.VOTE_ALWAYS_NO_CONFIDENCE = 'always-no-confidence';
8
16
  class Utils {
9
17
  createBaseAddressWithStakeAndPaymentKey(stakeKeyPair, paymentKeyPair, network) {
10
18
  let baseAddr;
@@ -15,7 +23,7 @@ class Utils {
15
23
  // 2. create payment pubKey
16
24
  const paymentPub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(paymentKeyPair.getKeys().pub, 'hex'));
17
25
  // 3. create full base address for staking
18
- baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
26
+ baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
19
27
  return baseAddr.to_address().to_bech32();
20
28
  }
21
29
  else if (network === sdk_core_1.AddressFormat.testnet) {
@@ -24,7 +32,7 @@ class Utils {
24
32
  // 2. create payment pubKey
25
33
  const paymentPub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(paymentKeyPair.getKeys().pub, 'hex'));
26
34
  // 3. create full base address for staking
27
- const baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
35
+ const baseAddr = cardano_serialization_lib_nodejs_1.BaseAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet_preprod().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(paymentPub.hash()), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
28
36
  return baseAddr.to_address().to_bech32();
29
37
  }
30
38
  else {
@@ -44,13 +52,68 @@ class Utils {
44
52
  const stakePub = cardano_serialization_lib_nodejs_1.PublicKey.from_bytes(Buffer.from(stakingPubKey, 'hex'));
45
53
  let rewardAddress;
46
54
  if (coinName === 'ada') {
47
- rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
55
+ rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.mainnet().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
48
56
  }
49
57
  else {
50
- rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet().network_id(), cardano_serialization_lib_nodejs_1.StakeCredential.from_keyhash(stakePub.hash()));
58
+ rewardAddress = cardano_serialization_lib_nodejs_1.RewardAddress.new(cardano_serialization_lib_nodejs_1.NetworkInfo.testnet_preprod().network_id(), cardano_serialization_lib_nodejs_1.Credential.from_keyhash(stakePub.hash()));
51
59
  }
52
60
  return rewardAddress.to_address().to_bech32();
53
61
  }
62
+ isValidDRepId(dRepId) {
63
+ try {
64
+ this.getDRepFromDRepId(dRepId);
65
+ return true;
66
+ }
67
+ catch (err) {
68
+ return false;
69
+ }
70
+ }
71
+ getDRepFromDRepId(dRepId) {
72
+ switch (dRepId) {
73
+ case 'always-abstain':
74
+ return cardano_serialization_lib_nodejs_1.DRep.new_always_abstain();
75
+ case 'always-no-confidence':
76
+ return cardano_serialization_lib_nodejs_1.DRep.new_always_no_confidence();
77
+ default:
78
+ try {
79
+ // for parsing CIP-105 standard DRep ID
80
+ return cardano_serialization_lib_nodejs_1.DRep.from_bech32(dRepId);
81
+ }
82
+ catch (err) {
83
+ // for parsing CIP-129 standard DRep ID
84
+ // https://cips.cardano.org/cip/CIP-0129
85
+ const decodedBech32 = bech32_1.bech32.decode(dRepId);
86
+ const decodedBytes = Buffer.from(bech32_1.bech32.fromWords(decodedBech32.words));
87
+ const header = decodedBytes[0];
88
+ const keyBytes = decodedBytes.subarray(1);
89
+ const keyType = (header & 0xf0) >> 4;
90
+ const credentialType = header & 0x0f;
91
+ if (keyType !== 0x02) {
92
+ throw new Error('Invalid key type for DRep');
93
+ }
94
+ switch (credentialType) {
95
+ case 0x02:
96
+ const ed25519KeyHash = cardano_serialization_lib_nodejs_1.Ed25519KeyHash.from_bytes(keyBytes);
97
+ return cardano_serialization_lib_nodejs_1.DRep.new_key_hash(ed25519KeyHash);
98
+ case 0x03:
99
+ const scriptHash = cardano_serialization_lib_nodejs_1.ScriptHash.from_bytes(keyBytes);
100
+ return cardano_serialization_lib_nodejs_1.DRep.new_script_hash(scriptHash);
101
+ default:
102
+ throw new Error('Invalid credential type for DRep');
103
+ }
104
+ }
105
+ }
106
+ }
107
+ getDRepIdFromDRep(dRep) {
108
+ switch (dRep.kind()) {
109
+ case cardano_serialization_lib_nodejs_1.DRepKind.AlwaysAbstain:
110
+ return exports.VOTE_ALWAYS_ABSTAIN;
111
+ case cardano_serialization_lib_nodejs_1.DRepKind.AlwaysNoConfidence:
112
+ return exports.VOTE_ALWAYS_NO_CONFIDENCE;
113
+ default:
114
+ return dRep.to_bech32();
115
+ }
116
+ }
54
117
  /** @inheritdoc */
55
118
  // this will validate both stake and payment addresses
56
119
  isValidAddress(address) {
@@ -58,22 +121,43 @@ class Utils {
58
121
  const BASE_ADDR_LEN = 92;
59
122
  const REWARD_AND_ENTERPRISE_ADDR_LEN = 47;
60
123
  const POINTER_ADDR_LEN = 52;
61
- try {
62
- const decodedBech = bech32_1.bech32.decode(address, 108);
63
- const wordLength = decodedBech.words.length;
64
- if (!bech32PrefixList.includes(decodedBech.prefix)) {
65
- return false;
124
+ const VALIDATOR_ADDR_LEN = 56;
125
+ //Check for Shelley-era (Bech32) addresses
126
+ if (new RegExp(`^(${bech32PrefixList.join('|')})`).test(address)) {
127
+ try {
128
+ const decodedBech = bech32_1.bech32.decode(address, 108);
129
+ const wordLength = decodedBech.words.length;
130
+ if (bech32PrefixList.includes(decodedBech.prefix) &&
131
+ (wordLength === BASE_ADDR_LEN ||
132
+ wordLength === REWARD_AND_ENTERPRISE_ADDR_LEN ||
133
+ wordLength === POINTER_ADDR_LEN)) {
134
+ return true;
135
+ }
66
136
  }
67
- if (wordLength !== BASE_ADDR_LEN &&
68
- wordLength !== REWARD_AND_ENTERPRISE_ADDR_LEN &&
69
- wordLength !== POINTER_ADDR_LEN) {
70
- return false;
137
+ catch (e) {
138
+ console.log(`Address: ${address} failed Bech32 test with error: ${e}`);
71
139
  }
140
+ }
141
+ //Check for Validator addresses
142
+ if (new RegExp(`^(?!pool)[a-z0-9]{${VALIDATOR_ADDR_LEN}}$`).test(address)) {
72
143
  return true;
73
144
  }
74
- catch (err) {
75
- return false;
145
+ //Check for Byron-era address
146
+ try {
147
+ // Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
148
+ if (address.startsWith('DdzFF')) {
149
+ console.log(`Rejecting Daedalus wallet address: ${address}`);
150
+ return false;
151
+ }
152
+ const decoded = bs58_1.default.decode(address);
153
+ const cborData = cbor_1.default.decodeFirstSync(decoded);
154
+ return Array.isArray(cborData) && cborData.length >= 2;
155
+ }
156
+ catch (e) {
157
+ console.log(`Address: ${address} failed Byron test with error: ${e}`);
158
+ console.log(e.stack);
76
159
  }
160
+ return false;
77
161
  }
78
162
  /** @inheritdoc */
79
163
  isValidBlockId(hash) {
@@ -117,8 +201,77 @@ class Utils {
117
201
  isValidTransactionId(txId) {
118
202
  return this.validateBlake2b(txId);
119
203
  }
204
+ /**
205
+ * Get the transaction body from a serialized transaction
206
+ * @param {string} serializedTx - serialized transaction in hex or base64 format
207
+ * @returns {string} transaction body in hex format
208
+ */
209
+ getTransactionBody(serializedTx) {
210
+ const HEX_REGEX = /^[0-9a-fA-F]+$/;
211
+ const bufferRawTransaction = HEX_REGEX.test(serializedTx)
212
+ ? Buffer.from(serializedTx, 'hex')
213
+ : Buffer.from(serializedTx, 'base64');
214
+ return Buffer.from(cardano_serialization_lib_nodejs_1.Transaction.from_bytes(bufferRawTransaction).body().to_bytes()).toString('hex');
215
+ }
216
+ /**
217
+ * Decode wallet address from string.
218
+ * Attempts to decode as Shelley (bech32) first, then Byron (base58).
219
+ * @param {string} address - Valid Byron or Shelley-era address.
220
+ * @returns {Address} - Valid address object.
221
+ * @throws {InvalidAddressError} If the address is neither valid Shelley nor Byron.
222
+ */
223
+ getWalletAddress(address) {
224
+ if (!address || typeof address !== 'string') {
225
+ throw new sdk_core_1.InvalidAddressError('Provided address is not a valid string');
226
+ }
227
+ // Try decoding as a Shelley (bech32) address first
228
+ try {
229
+ return cardano_serialization_lib_nodejs_1.Address.from_bech32(address);
230
+ }
231
+ catch (e) {
232
+ console.error(`Could not decode shelly address from string '${address}'`);
233
+ }
234
+ // Try decoding as a Byron (base58) address later
235
+ try {
236
+ // Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
237
+ if (address.startsWith('DdzFF')) {
238
+ throw new sdk_core_1.InvalidAddressError('Provided string is a Daedalus address');
239
+ }
240
+ return cardano_serialization_lib_nodejs_1.ByronAddress.from_base58(address).to_address();
241
+ }
242
+ catch (e) {
243
+ console.error(`Could not decode byron address from string '${address}'`);
244
+ }
245
+ throw new sdk_core_1.InvalidAddressError('Provided string is not a valid Shelley or Byron address');
246
+ }
247
+ /**
248
+ * Decode address string from Address object.
249
+ * Attempts to decode as Shelley (bech32) first, then Byron (base58).
250
+ * @param {Address} address - Valid Address object
251
+ * @returns {string} - Valid Byron or Shelley-era address string.
252
+ * @throws {InvalidAddressError} If the Address object is neither valid Shelley nor Byron.
253
+ */
254
+ getAddressString(address) {
255
+ // Check all Shelley address types
256
+ if (cardano_serialization_lib_nodejs_1.BaseAddress.from_address(address) ||
257
+ cardano_serialization_lib_nodejs_1.EnterpriseAddress.from_address(address) ||
258
+ cardano_serialization_lib_nodejs_1.RewardAddress.from_address(address) ||
259
+ cardano_serialization_lib_nodejs_1.PointerAddress.from_address(address)) {
260
+ return address.to_bech32();
261
+ }
262
+ const byronAddress = cardano_serialization_lib_nodejs_1.ByronAddress.from_address(address);
263
+ // Reject Daedalus wallet addresses (Byron-era addresses starting with "DdzFF")
264
+ if (byronAddress) {
265
+ if (byronAddress.to_base58().startsWith('DdzFF')) {
266
+ throw new sdk_core_1.InvalidAddressError('Provided address is a Daedalus address');
267
+ }
268
+ return byronAddress.to_base58();
269
+ }
270
+ // If neither, it's invalid
271
+ throw new sdk_core_1.InvalidAddressError('Provided Address is not a valid Shelley or Byron address');
272
+ }
120
273
  }
121
274
  exports.Utils = Utils;
122
275
  const utils = new Utils();
123
276
  exports.default = utils;
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUNoRSwrRkFPa0Q7QUFDbEQsdUNBQW9DO0FBQ3BDLG1DQUFnQztBQUVoQyxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDckMseUJBQXlCO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFFdkMsTUFBTSxRQUFRLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUYsMENBQTBDO1lBQzFDLFFBQVEsR0FBRyw4Q0FBVyxDQUFDLEdBQUcsQ0FDeEIsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQy9DLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUM7YUFBTSxJQUFJLE9BQU8sS0FBSyx3QkFBYSxDQUFDLE9BQU8sRUFBRTtZQUM1Qyx5QkFBeUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsNENBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsMkJBQTJCO1lBQzNCLE1BQU0sVUFBVSxHQUFHLDRDQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFGLDBDQUEwQztZQUMxQyxNQUFNLFFBQVEsR0FBRyw4Q0FBVyxDQUFDLEdBQUcsQ0FDOUIsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQy9DLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUM7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBcUIsRUFBRSxRQUFnQjtRQUN0RCxNQUFNLFFBQVEsR0FBRyw0Q0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksYUFBYSxDQUFDO1FBQ2xCLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN0QixhQUFhLEdBQUcsZ0RBQWEsQ0FBQyxHQUFHLENBQy9CLDhDQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQ2xDLGtEQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1NBQ0g7YUFBTTtZQUNMLGFBQWEsR0FBRyxnREFBYSxDQUFDLEdBQUcsQ0FDL0IsOENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEMsa0RBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQzlDLENBQUM7U0FDSDtRQUNELE9BQU8sYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsc0RBQXNEO0lBQ3RELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7UUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFNUIsSUFBSTtZQUNGLE1BQU0sV0FBVyxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFDRSxVQUFVLEtBQUssYUFBYTtnQkFDNUIsVUFBVSxLQUFLLDhCQUE4QjtnQkFDN0MsVUFBVSxLQUFLLGdCQUFnQixFQUMvQjtnQkFDQSxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsR0FBVztRQUMzQix3RUFBd0U7UUFDeEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJO1lBQ0YsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE1BQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUk7WUFDRixJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsTUFBTTtZQUNOLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLElBQUk7WUFDRixtREFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBeElELHNCQXdJQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgQmFzZVV0aWxzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIFB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgTmV0d29ya0luZm8sXG4gIFN0YWtlQ3JlZGVudGlhbCxcbiAgUmV3YXJkQWRkcmVzcyxcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGNyZWF0ZUJhc2VBZGRyZXNzV2l0aFN0YWtlQW5kUGF5bWVudEtleShcbiAgICBzdGFrZUtleVBhaXI6IEtleVBhaXIsXG4gICAgcGF5bWVudEtleVBhaXI6IEtleVBhaXIsXG4gICAgbmV0d29yazogQWRkcmVzc0Zvcm1hdFxuICApOiBzdHJpbmcge1xuICAgIGxldCBiYXNlQWRkcjtcbiAgICBpZiAobmV0d29yayA9PT0gQWRkcmVzc0Zvcm1hdC5tYWlubmV0KSB7XG4gICAgICAvLyAxLiBjcmVhdGUgc3Rha2UgcHViS2V5XG4gICAgICBjb25zdCBrZXkgPSBzdGFrZUtleVBhaXIuZ2V0S2V5cygpLnB1YjtcblxuICAgICAgY29uc3Qgc3Rha2VQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShrZXksICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8ubWFpbm5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrID09PSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQpIHtcbiAgICAgIC8vIDEuIGNyZWF0ZSBzdGFrZSBwdWJLZXlcbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWIsICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBjb25zdCBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIFN0YWtlQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW1wcm9wZXIgTmV0d29yayBUeXBlIScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlQmxha2UyYihoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGhhc2gubGVuZ3RoICE9PSA2NCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzaC5tYXRjaCgvXlthLXpBLVowLTldKyQvKSAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldFJld2FyZEFkZHJlc3Moc3Rha2luZ1B1YktleTogc3RyaW5nLCBjb2luTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFrZVB1YiA9IFB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtpbmdQdWJLZXksICdoZXgnKSk7XG4gICAgbGV0IHJld2FyZEFkZHJlc3M7XG4gICAgaWYgKGNvaW5OYW1lID09PSAnYWRhJykge1xuICAgICAgcmV3YXJkQWRkcmVzcyA9IFJld2FyZEFkZHJlc3MubmV3KFxuICAgICAgICBOZXR3b3JrSW5mby5tYWlubmV0KCkubmV0d29ya19pZCgpLFxuICAgICAgICBTdGFrZUNyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJld2FyZEFkZHJlc3MgPSBSZXdhcmRBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldCgpLm5ldHdvcmtfaWQoKSxcbiAgICAgICAgU3Rha2VDcmVkZW50aWFsLmZyb21fa2V5aGFzaChzdGFrZVB1Yi5oYXNoKCkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmV3YXJkQWRkcmVzcy50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRCZWNoID0gYmVjaDMyLmRlY29kZShhZGRyZXNzLCAxMDgpO1xuICAgICAgY29uc3Qgd29yZExlbmd0aCA9IGRlY29kZWRCZWNoLndvcmRzLmxlbmd0aDtcbiAgICAgIGlmICghYmVjaDMyUHJlZml4TGlzdC5pbmNsdWRlcyhkZWNvZGVkQmVjaC5wcmVmaXgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgd29yZExlbmd0aCAhPT0gQkFTRV9BRERSX0xFTiAmJlxuICAgICAgICB3b3JkTGVuZ3RoICE9PSBSRVdBUkRfQU5EX0VOVEVSUFJJU0VfQUREUl9MRU4gJiZcbiAgICAgICAgd29yZExlbmd0aCAhPT0gUE9JTlRFUl9BRERSX0xFTlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJsYWtlMmIoaGFzaCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyB0aGlzIHdpbGwgcmV0dXJuIHRydWUgZm9yIGJvdGggZXh0ZW5kZWQgYW5kIG5vbi1leHRlbmRlZCBFRDI1NTE5IGtleXNcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkS2V5KGtleSk7XG4gIH1cblxuICBpc1ZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1YjogcHViS2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgRWQyNTUxOVNpZ25hdHVyZS5mcm9tX2hleChzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYih0eElkKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFxRjtBQUNyRiwrRkFnQmtEO0FBQ2xELHVDQUFvQztBQUNwQyxtQ0FBZ0M7QUFDaEMsZ0RBQXdCO0FBQ3hCLGdEQUF3QjtBQUVYLFFBQUEscUJBQXFCLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLFFBQUEsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFDdkMsUUFBQSx5QkFBeUIsR0FBRyxzQkFBc0IsQ0FBQztBQUVoRSxNQUFhLEtBQUs7SUFDaEIsdUNBQXVDLENBQ3JDLFlBQXFCLEVBQ3JCLGNBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxPQUFPLEtBQUssd0JBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0Qyx5QkFBeUI7WUFDekIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUV2QyxNQUFNLFFBQVEsR0FBRyw0Q0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9ELDJCQUEyQjtZQUMzQixNQUFNLFVBQVUsR0FBRyw0Q0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxRiwwQ0FBMEM7WUFDMUMsUUFBUSxHQUFHLDhDQUFXLENBQUMsR0FBRyxDQUN4Qiw4Q0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUNsQyw2Q0FBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDMUMsNkNBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUks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QUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLDhCQUFtQixDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLE9BQWdCO1FBQy9CLGtDQUFrQztRQUNsQyxJQUNFLDhDQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNqQyxvREFBaUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLGdEQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxpREFBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFDcEMsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRywrQ0FBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCwrRUFBK0U7UUFDL0UsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLDhCQUFtQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUNELE9BQU8sWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsTUFBTSxJQUFJLDhCQUFtQixDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDNUYsQ0FBQztDQUNGO0FBclNELHNCQXFTQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCwgQmFzZVV0aWxzLCBJbnZhbGlkQWRkcmVzc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIFB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgTmV0d29ya0luZm8sXG4gIENyZWRlbnRpYWwsXG4gIFJld2FyZEFkZHJlc3MsXG4gIFRyYW5zYWN0aW9uIGFzIENhcmRhbm9UcmFuc2FjdGlvbixcbiAgRFJlcCxcbiAgRWQyNTUxOUtleUhhc2gsXG4gIFNjcmlwdEhhc2gsXG4gIERSZXBLaW5kLFxuICBBZGRyZXNzLFxuICBFbnRlcnByaXNlQWRkcmVzcyxcbiAgUG9pbnRlckFkZHJlc3MsXG4gIEJ5cm9uQWRkcmVzcyxcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCBjYm9yIGZyb20gJ2Nib3InO1xuXG5leHBvcnQgY29uc3QgTUlOX0FEQV9GT1JfT05FX0FTU0VUID0gJzE1MDAwMDAnO1xuZXhwb3J0IGNvbnN0IFZPVEVfQUxXQVlTX0FCU1RBSU4gPSAnYWx3YXlzLWFic3RhaW4nO1xuZXhwb3J0IGNvbnN0IFZPVEVfQUxXQVlTX05PX0NPTkZJREVOQ0UgPSAnYWx3YXlzLW5vLWNvbmZpZGVuY2UnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICBjcmVhdGVCYXNlQWRkcmVzc1dpdGhTdGFrZUFuZFBheW1lbnRLZXkoXG4gICAgc3Rha2VLZXlQYWlyOiBLZXlQYWlyLFxuICAgIHBheW1lbnRLZXlQYWlyOiBLZXlQYWlyLFxuICAgIG5ldHdvcms6IEFkZHJlc3NGb3JtYXRcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgYmFzZUFkZHI7XG4gICAgaWYgKG5ldHdvcmsgPT09IEFkZHJlc3NGb3JtYXQubWFpbm5ldCkge1xuICAgICAgLy8gMS4gY3JlYXRlIHN0YWtlIHB1YktleVxuICAgICAgY29uc3Qga2V5ID0gc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWI7XG5cbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oa2V5LCAnaGV4JykpO1xuICAgICAgLy8gMi4gY3JlYXRlIHBheW1lbnQgcHViS2V5XG4gICAgICBjb25zdCBwYXltZW50UHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20ocGF5bWVudEtleVBhaXIuZ2V0S2V5cygpLnB1YiwgJ2hleCcpKTtcbiAgICAgIC8vIDMuIGNyZWF0ZSBmdWxsIGJhc2UgYWRkcmVzcyBmb3Igc3Rha2luZ1xuICAgICAgYmFzZUFkZHIgPSBCYXNlQWRkcmVzcy5uZXcoXG4gICAgICAgIE5ldHdvcmtJbmZvLm1haW5uZXQoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHBheW1lbnRQdWIuaGFzaCgpKSxcbiAgICAgICAgQ3JlZGVudGlhbC5mcm9tX2tleWhhc2goc3Rha2VQdWIuaGFzaCgpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBiYXNlQWRkci50b19hZGRyZXNzKCkudG9fYmVjaDMyKCk7XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrID09PSBBZGRyZXNzRm9ybWF0LnRlc3RuZXQpIHtcbiAgICAgIC8vIDEuIGNyZWF0ZSBzdGFrZSBwdWJLZXlcbiAgICAgIGNvbnN0IHN0YWtlUHViID0gUHVibGljS2V5LmZyb21fYnl0ZXMoQnVmZmVyLmZyb20oc3Rha2VLZXlQYWlyLmdldEtleXMoKS5wdWIsICdoZXgnKSk7XG4gICAgICAvLyAyLiBjcmVhdGUgcGF5bWVudCBwdWJLZXlcbiAgICAgIGNvbnN0IHBheW1lbnRQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShwYXltZW50S2V5UGFpci5nZXRLZXlzKCkucHViLCAnaGV4JykpO1xuICAgICAgLy8gMy4gY3JlYXRlIGZ1bGwgYmFzZSBhZGRyZXNzIGZvciBzdGFraW5nXG4gICAgICBjb25zdCBiYXNlQWRkciA9IEJhc2VBZGRyZXNzLm5ldyhcbiAgICAgICAgTmV0d29ya0luZm8udGVzdG5ldF9wcmVwcm9kKCkubmV0d29ya19pZCgpLFxuICAgICAgICBDcmVkZW50aWFsLmZyb21fa2V5aGFzaChwYXltZW50UHViLmhhc2goKSksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gYmFzZUFkZHIudG9fYWRkcmVzcygpLnRvX2JlY2gzMigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcHJvcGVyIE5ldHdvcmsgVHlwZSEnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUJsYWtlMmIoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFoYXNoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChoYXNoLmxlbmd0aCAhPT0gNjQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2gubWF0Y2goL15bYS16QS1aMC05XSskLykgIT09IG51bGw7XG4gIH1cblxuICBnZXRSZXdhcmRBZGRyZXNzKHN0YWtpbmdQdWJLZXk6IHN0cmluZywgY29pbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3Rha2VQdWIgPSBQdWJsaWNLZXkuZnJvbV9ieXRlcyhCdWZmZXIuZnJvbShzdGFraW5nUHViS2V5LCAnaGV4JykpO1xuICAgIGxldCByZXdhcmRBZGRyZXNzO1xuICAgIGlmIChjb2luTmFtZSA9PT0gJ2FkYScpIHtcbiAgICAgIHJld2FyZEFkZHJlc3MgPSBSZXdhcmRBZGRyZXNzLm5ldyhOZXR3b3JrSW5mby5tYWlubmV0KCkubmV0d29ya19pZCgpLCBDcmVkZW50aWFsLmZyb21fa2V5aGFzaChzdGFrZVB1Yi5oYXNoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV3YXJkQWRkcmVzcyA9IFJld2FyZEFkZHJlc3MubmV3KFxuICAgICAgICBOZXR3b3JrSW5mby50ZXN0bmV0X3ByZXByb2QoKS5uZXR3b3JrX2lkKCksXG4gICAgICAgIENyZWRlbnRpYWwuZnJvbV9rZXloYXNoKHN0YWtlUHViLmhhc2goKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXdhcmRBZGRyZXNzLnRvX2FkZHJlc3MoKS50b19iZWNoMzIoKTtcbiAgfVxuXG4gIGlzVmFsaWREUmVwSWQoZFJlcElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5nZXREUmVwRnJvbURSZXBJZChkUmVwSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RFJlcEZyb21EUmVwSWQoZFJlcElkOiBzdHJpbmcpOiBEUmVwIHtcbiAgICBzd2l0Y2ggKGRSZXBJZCkge1xuICAgICAgY2FzZSAnYWx3YXlzLWFic3RhaW4nOlxuICAgICAgICByZXR1cm4gRFJlcC5uZXdfYWx3YXlzX2Fic3RhaW4oKTtcbiAgICAgIGNhc2UgJ2Fsd2F5cy1uby1jb25maWRlbmNlJzpcbiAgICAgICAgcmV0dXJuIERSZXAubmV3X2Fsd2F5c19ub19jb25maWRlbmNlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGZvciBwYXJzaW5nIENJUC0xMDUgc3RhbmRhcmQgRFJlcCBJRFxuICAgICAgICAgIHJldHVybiBEUmVwLmZyb21fYmVjaDMyKGRSZXBJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8vIGZvciBwYXJzaW5nIENJUC0xMjkgc3RhbmRhcmQgRFJlcCBJRFxuICAgICAgICAgIC8vIGh0dHBzOi8vY2lwcy5jYXJkYW5vLm9yZy9jaXAvQ0lQLTAxMjlcbiAgICAgICAgICBjb25zdCBkZWNvZGVkQmVjaDMyID0gYmVjaDMyLmRlY29kZShkUmVwSWQpO1xuICAgICAgICAgIGNvbnN0IGRlY29kZWRCeXRlcyA9IEJ1ZmZlci5mcm9tKGJlY2gzMi5mcm9tV29yZHMoZGVjb2RlZEJlY2gzMi53b3JkcykpO1xuICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGRlY29kZWRCeXRlc1swXTtcbiAgICAgICAgICBjb25zdCBrZXlCeXRlcyA9IGRlY29kZWRCeXRlcy5zdWJhcnJheSgxKTtcblxuICAgICAgICAgIGNvbnN0IGtleVR5cGUgPSAoaGVhZGVyICYgMHhmMCkgPj4gNDtcbiAgICAgICAgICBjb25zdCBjcmVkZW50aWFsVHlwZSA9IGhlYWRlciAmIDB4MGY7XG5cbiAgICAgICAgICBpZiAoa2V5VHlwZSAhPT0gMHgwMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSB0eXBlIGZvciBEUmVwJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoIChjcmVkZW50aWFsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAweDAyOlxuICAgICAgICAgICAgICBjb25zdCBlZDI1NTE5S2V5SGFzaCA9IEVkMjU1MTlLZXlIYXNoLmZyb21fYnl0ZXMoa2V5Qnl0ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gRFJlcC5uZXdfa2V5X2hhc2goZWQyNTUxOUtleUhhc2gpO1xuICAgICAgICAgICAgY2FzZSAweDAzOlxuICAgICAgICAgICAgICBjb25zdCBzY3JpcHRIYXNoID0gU2NyaXB0SGFzaC5mcm9tX2J5dGVzKGtleUJ5dGVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIERSZXAubmV3X3NjcmlwdF9oYXNoKHNjcmlwdEhhc2gpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyZWRlbnRpYWwgdHlwZSBmb3IgRFJlcCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldERSZXBJZEZyb21EUmVwKGRSZXA6IERSZXApOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZFJlcC5raW5kKCkpIHtcbiAgICAgIGNhc2UgRFJlcEtpbmQuQWx3YXlzQWJzdGFpbjpcbiAgICAgICAgcmV0dXJuIFZPVEVfQUxXQVlTX0FCU1RBSU47XG4gICAgICBjYXNlIERSZXBLaW5kLkFsd2F5c05vQ29uZmlkZW5jZTpcbiAgICAgICAgcmV0dXJuIFZPVEVfQUxXQVlTX05PX0NPTkZJREVOQ0U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZFJlcC50b19iZWNoMzIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gdGhpcyB3aWxsIHZhbGlkYXRlIGJvdGggc3Rha2UgYW5kIHBheW1lbnQgYWRkcmVzc2VzXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJlY2gzMlByZWZpeExpc3QgPSBbJ2FkZHInLCAnYWRkcl90ZXN0JywgJ3N0YWtlJywgJ3N0YWtlX3Rlc3QnXTtcbiAgICBjb25zdCBCQVNFX0FERFJfTEVOID0gOTI7XG4gICAgY29uc3QgUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOID0gNDc7XG4gICAgY29uc3QgUE9JTlRFUl9BRERSX0xFTiA9IDUyO1xuICAgIGNvbnN0IFZBTElEQVRPUl9BRERSX0xFTiA9IDU2O1xuXG4gICAgLy9DaGVjayBmb3IgU2hlbGxleS1lcmEgKEJlY2gzMikgYWRkcmVzc2VzXG4gICAgaWYgKG5ldyBSZWdFeHAoYF4oJHtiZWNoMzJQcmVmaXhMaXN0LmpvaW4oJ3wnKX0pYCkudGVzdChhZGRyZXNzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb2RlZEJlY2ggPSBiZWNoMzIuZGVjb2RlKGFkZHJlc3MsIDEwOCk7XG4gICAgICAgIGNvbnN0IHdvcmRMZW5ndGggPSBkZWNvZGVkQmVjaC53b3Jkcy5sZW5ndGg7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBiZWNoMzJQcmVmaXhMaXN0LmluY2x1ZGVzKGRlY29kZWRCZWNoLnByZWZpeCkgJiZcbiAgICAgICAgICAod29yZExlbmd0aCA9PT0gQkFTRV9BRERSX0xFTiB8fFxuICAgICAgICAgICAgd29yZExlbmd0aCA9PT0gUkVXQVJEX0FORF9FTlRFUlBSSVNFX0FERFJfTEVOIHx8XG4gICAgICAgICAgICB3b3JkTGVuZ3RoID09PSBQT0lOVEVSX0FERFJfTEVOKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQWRkcmVzczogJHthZGRyZXNzfSBmYWlsZWQgQmVjaDMyIHRlc3Qgd2l0aCBlcnJvcjogJHtlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2hlY2sgZm9yIFZhbGlkYXRvciBhZGRyZXNzZXNcbiAgICBpZiAobmV3IFJlZ0V4cChgXig/IXBvb2wpW2EtejAtOV17JHtWQUxJREFUT1JfQUREUl9MRU59fSRgKS50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL0NoZWNrIGZvciBCeXJvbi1lcmEgYWRkcmVzc1xuICAgIHRyeSB7XG4gICAgICAvLyBSZWplY3QgRGFlZGFsdXMgd2FsbGV0IGFkZHJlc3NlcyAoQnlyb24tZXJhIGFkZHJlc3NlcyBzdGFydGluZyB3aXRoIFwiRGR6RkZcIilcbiAgICAgIGlmIChhZGRyZXNzLnN0YXJ0c1dpdGgoJ0RkekZGJykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlamVjdGluZyBEYWVkYWx1cyB3YWxsZXQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlY29kZWQgPSBiczU4LmRlY29kZShhZGRyZXNzKTtcbiAgICAgIGNvbnN0IGNib3JEYXRhID0gY2Jvci5kZWNvZGVGaXJzdFN5bmMoZGVjb2RlZCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjYm9yRGF0YSkgJiYgY2JvckRhdGEubGVuZ3RoID49IDI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coYEFkZHJlc3M6ICR7YWRkcmVzc30gZmFpbGVkIEJ5cm9uIHRlc3Qgd2l0aCBlcnJvcjogJHtlfWApO1xuICAgICAgY29uc29sZS5sb2coZS5zdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYihoYXNoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBmb3IgYm90aCBleHRlbmRlZCBhbmQgbm9uLWV4dGVuZGVkIEVEMjU1MTkga2V5c1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KHB1YktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHViOiBwdWJLZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBFZDI1NTE5U2lnbmF0dXJlLmZyb21faGV4KHNpZ25hdHVyZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVCbGFrZTJiKHR4SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdHJhbnNhY3Rpb24gYm9keSBmcm9tIGEgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VyaWFsaXplZFR4IC0gc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBpbiBoZXggb3IgYmFzZTY0IGZvcm1hdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0cmFuc2FjdGlvbiBib2R5IGluIGhleCBmb3JtYXRcbiAgICovXG4gIGdldFRyYW5zYWN0aW9uQm9keShzZXJpYWxpemVkVHg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgSEVYX1JFR0VYID0gL15bMC05YS1mQS1GXSskLztcbiAgICBjb25zdCBidWZmZXJSYXdUcmFuc2FjdGlvbiA9IEhFWF9SRUdFWC50ZXN0KHNlcmlhbGl6ZWRUeClcbiAgICAgID8gQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnaGV4JylcbiAgICAgIDogQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnYmFzZTY0Jyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKENhcmRhbm9UcmFuc2FjdGlvbi5mcm9tX2J5dGVzKGJ1ZmZlclJhd1RyYW5zYWN0aW9uKS5ib2R5KCkudG9fYnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSB3YWxsZXQgYWRkcmVzcyBmcm9tIHN0cmluZy5cbiAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGFzIFNoZWxsZXkgKGJlY2gzMikgZmlyc3QsIHRoZW4gQnlyb24gKGJhc2U1OCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVmFsaWQgQnlyb24gb3IgU2hlbGxleS1lcmEgYWRkcmVzcy5cbiAgICogQHJldHVybnMge0FkZHJlc3N9IC0gVmFsaWQgYWRkcmVzcyBvYmplY3QuXG4gICAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9IElmIHRoZSBhZGRyZXNzIGlzIG5laXRoZXIgdmFsaWQgU2hlbGxleSBub3IgQnlyb24uXG4gICAqL1xuICBnZXRXYWxsZXRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3Mge1xuICAgIGlmICghYWRkcmVzcyB8fCB0eXBlb2YgYWRkcmVzcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBhZGRyZXNzIGlzIG5vdCBhIHZhbGlkIHN0cmluZycpO1xuICAgIH1cblxuICAgIC8vIFRyeSBkZWNvZGluZyBhcyBhIFNoZWxsZXkgKGJlY2gzMikgYWRkcmVzcyBmaXJzdFxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQWRkcmVzcy5mcm9tX2JlY2gzMihhZGRyZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZGVjb2RlIHNoZWxseSBhZGRyZXNzIGZyb20gc3RyaW5nICcke2FkZHJlc3N9J2ApO1xuICAgIH1cblxuICAgIC8vIFRyeSBkZWNvZGluZyBhcyBhIEJ5cm9uIChiYXNlNTgpIGFkZHJlc3MgbGF0ZXJcbiAgICB0cnkge1xuICAgICAgLy8gUmVqZWN0IERhZWRhbHVzIHdhbGxldCBhZGRyZXNzZXMgKEJ5cm9uLWVyYSBhZGRyZXNzZXMgc3RhcnRpbmcgd2l0aCBcIkRkekZGXCIpXG4gICAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCdEZHpGRicpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBzdHJpbmcgaXMgYSBEYWVkYWx1cyBhZGRyZXNzJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCeXJvbkFkZHJlc3MuZnJvbV9iYXNlNTgoYWRkcmVzcykudG9fYWRkcmVzcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBkZWNvZGUgYnlyb24gYWRkcmVzcyBmcm9tIHN0cmluZyAnJHthZGRyZXNzfSdgKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoJ1Byb3ZpZGVkIHN0cmluZyBpcyBub3QgYSB2YWxpZCBTaGVsbGV5IG9yIEJ5cm9uIGFkZHJlc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgYWRkcmVzcyBzdHJpbmcgZnJvbSBBZGRyZXNzIG9iamVjdC5cbiAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGFzIFNoZWxsZXkgKGJlY2gzMikgZmlyc3QsIHRoZW4gQnlyb24gKGJhc2U1OCkuXG4gICAqIEBwYXJhbSB7QWRkcmVzc30gYWRkcmVzcyAtIFZhbGlkIEFkZHJlc3Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVmFsaWQgQnlyb24gb3IgU2hlbGxleS1lcmEgYWRkcmVzcyBzdHJpbmcuXG4gICAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9IElmIHRoZSBBZGRyZXNzIG9iamVjdCBpcyBuZWl0aGVyIHZhbGlkIFNoZWxsZXkgbm9yIEJ5cm9uLlxuICAgKi9cbiAgZ2V0QWRkcmVzc1N0cmluZyhhZGRyZXNzOiBBZGRyZXNzKTogc3RyaW5nIHtcbiAgICAvLyBDaGVjayBhbGwgU2hlbGxleSBhZGRyZXNzIHR5cGVzXG4gICAgaWYgKFxuICAgICAgQmFzZUFkZHJlc3MuZnJvbV9hZGRyZXNzKGFkZHJlc3MpIHx8XG4gICAgICBFbnRlcnByaXNlQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcykgfHxcbiAgICAgIFJld2FyZEFkZHJlc3MuZnJvbV9hZGRyZXNzKGFkZHJlc3MpIHx8XG4gICAgICBQb2ludGVyQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcylcbiAgICApIHtcbiAgICAgIHJldHVybiBhZGRyZXNzLnRvX2JlY2gzMigpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5cm9uQWRkcmVzcyA9IEJ5cm9uQWRkcmVzcy5mcm9tX2FkZHJlc3MoYWRkcmVzcyk7XG4gICAgLy8gUmVqZWN0IERhZWRhbHVzIHdhbGxldCBhZGRyZXNzZXMgKEJ5cm9uLWVyYSBhZGRyZXNzZXMgc3RhcnRpbmcgd2l0aCBcIkRkekZGXCIpXG4gICAgaWYgKGJ5cm9uQWRkcmVzcykge1xuICAgICAgaWYgKGJ5cm9uQWRkcmVzcy50b19iYXNlNTgoKS5zdGFydHNXaXRoKCdEZHpGRicpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKCdQcm92aWRlZCBhZGRyZXNzIGlzIGEgRGFlZGFsdXMgYWRkcmVzcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ5cm9uQWRkcmVzcy50b19iYXNlNTgoKTtcbiAgICB9XG5cbiAgICAvLyBJZiBuZWl0aGVyLCBpdCdzIGludmFsaWRcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcignUHJvdmlkZWQgQWRkcmVzcyBpcyBub3QgYSB2YWxpZCBTaGVsbGV5IG9yIEJ5cm9uIGFkZHJlc3MnKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { BaseKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction';
5
+ export declare class VoteDelegationBuilder extends TransactionBuilder {
6
+ constructor(_coinConfig: Readonly<CoinConfig>);
7
+ protected get transactionType(): TransactionType;
8
+ /** @inheritdoc */
9
+ initBuilder(tx: Transaction): void;
10
+ /**
11
+ * Creates the proper certificates needed to delegate a user's vote to a given DRep
12
+ *
13
+ * @param stakingPublicKey The user's public stake key
14
+ * @param dRepId The DRep ID of the DRep we will delegate vote to
15
+ */
16
+ addVoteDelegationCertificate(stakingPublicKey: string, dRepId: string): this;
17
+ /** @inheritdoc */
18
+ protected buildImplementation(): Promise<Transaction>;
19
+ /** @inheritdoc */
20
+ protected fromImplementation(rawTransaction: string): Transaction;
21
+ /** @inheritdoc */
22
+ protected signImplementation(key: BaseKey): Transaction;
23
+ }
24
+ //# sourceMappingURL=voteDelegationBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voteDelegationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/voteDelegationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC;;;;;OAKG;IACH,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAW5E,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;CAGxD"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.VoteDelegationBuilder = void 0;
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const transactionBuilder_1 = require("./transactionBuilder");
42
+ const CardanoWasm = __importStar(require("@emurgo/cardano-serialization-lib-nodejs"));
43
+ const utils_1 = __importDefault(require("./utils"));
44
+ class VoteDelegationBuilder extends transactionBuilder_1.TransactionBuilder {
45
+ constructor(_coinConfig) {
46
+ super(_coinConfig);
47
+ this._type = sdk_core_1.TransactionType.VoteDelegation;
48
+ }
49
+ get transactionType() {
50
+ return sdk_core_1.TransactionType.VoteDelegation;
51
+ }
52
+ /** @inheritdoc */
53
+ initBuilder(tx) {
54
+ super.initBuilder(tx);
55
+ }
56
+ /**
57
+ * Creates the proper certificates needed to delegate a user's vote to a given DRep
58
+ *
59
+ * @param stakingPublicKey The user's public stake key
60
+ * @param dRepId The DRep ID of the DRep we will delegate vote to
61
+ */
62
+ addVoteDelegationCertificate(stakingPublicKey, dRepId) {
63
+ const stakeCredential = CardanoWasm.Credential.from_keyhash(CardanoWasm.PublicKey.from_bytes(Buffer.from(stakingPublicKey, 'hex')).hash());
64
+ const voteDelegationCert = CardanoWasm.Certificate.new_vote_delegation(CardanoWasm.VoteDelegation.new(stakeCredential, utils_1.default.getDRepFromDRepId(dRepId)));
65
+ this._certs.push(voteDelegationCert);
66
+ return this;
67
+ }
68
+ /** @inheritdoc */
69
+ async buildImplementation() {
70
+ const tx = await super.buildImplementation();
71
+ tx.setTransactionType(sdk_core_1.TransactionType.VoteDelegation);
72
+ return tx;
73
+ }
74
+ /** @inheritdoc */
75
+ fromImplementation(rawTransaction) {
76
+ return super.fromImplementation(rawTransaction);
77
+ }
78
+ /** @inheritdoc */
79
+ signImplementation(key) {
80
+ return super.signImplementation(key);
81
+ }
82
+ }
83
+ exports.VoteDelegationBuilder = VoteDelegationBuilder;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm90ZURlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92b3RlRGVsZWdhdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBRWhFLDZEQUEwRDtBQUUxRCxzRkFBd0U7QUFDeEUsb0RBQStCO0FBRS9CLE1BQWEscUJBQXNCLFNBQVEsdUNBQWtCO0lBQzNELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxjQUFjLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsY0FBYyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0QkFBNEIsQ0FBQyxnQkFBd0IsRUFBRSxNQUFjO1FBQ25FLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUN6RCxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQzlFLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQ3BFLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDcEYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWhERCxzREFnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0ICogYXMgQ2FyZGFub1dhc20gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgYWRhVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBWb3RlRGVsZWdhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcHJvcGVyIGNlcnRpZmljYXRlcyBuZWVkZWQgdG8gZGVsZWdhdGUgYSB1c2VyJ3Mgdm90ZSB0byBhIGdpdmVuIERSZXBcbiAgICpcbiAgICogQHBhcmFtIHN0YWtpbmdQdWJsaWNLZXkgVGhlIHVzZXIncyBwdWJsaWMgc3Rha2Uga2V5XG4gICAqIEBwYXJhbSBkUmVwSWQgVGhlIERSZXAgSUQgb2YgdGhlIERSZXAgd2Ugd2lsbCBkZWxlZ2F0ZSB2b3RlIHRvXG4gICAqL1xuICBhZGRWb3RlRGVsZWdhdGlvbkNlcnRpZmljYXRlKHN0YWtpbmdQdWJsaWNLZXk6IHN0cmluZywgZFJlcElkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBzdGFrZUNyZWRlbnRpYWwgPSBDYXJkYW5vV2FzbS5DcmVkZW50aWFsLmZyb21fa2V5aGFzaChcbiAgICAgIENhcmRhbm9XYXNtLlB1YmxpY0tleS5mcm9tX2J5dGVzKEJ1ZmZlci5mcm9tKHN0YWtpbmdQdWJsaWNLZXksICdoZXgnKSkuaGFzaCgpXG4gICAgKTtcbiAgICBjb25zdCB2b3RlRGVsZWdhdGlvbkNlcnQgPSBDYXJkYW5vV2FzbS5DZXJ0aWZpY2F0ZS5uZXdfdm90ZV9kZWxlZ2F0aW9uKFxuICAgICAgQ2FyZGFub1dhc20uVm90ZURlbGVnYXRpb24ubmV3KHN0YWtlQ3JlZGVudGlhbCwgYWRhVXRpbHMuZ2V0RFJlcEZyb21EUmVwSWQoZFJlcElkKSlcbiAgICApO1xuICAgIHRoaXMuX2NlcnRzLnB1c2godm90ZURlbGVnYXRpb25DZXJ0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgdHguc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5Wb3RlRGVsZWdhdGlvbik7XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuc2lnbkltcGxlbWVudGF0aW9uKGtleSk7XG4gIH1cbn1cbiJdfQ==