@bitgo/account-lib 2.19.0-rc.1 → 2.19.0-rc.4

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 (65) hide show
  1. package/DEVELOPER.md +1 -1
  2. package/dist/browser/bitgo-account-lib.js +1 -1
  3. package/dist/package.json +8 -8
  4. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +11 -2
  5. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -1
  6. package/dist/src/coin/algo/keyRegistrationBuilder.js +58 -15
  7. package/dist/src/coin/algo/transaction.d.ts.map +1 -1
  8. package/dist/src/coin/algo/transaction.js +12 -6
  9. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  10. package/dist/src/coin/algo/utils.js +6 -2
  11. package/dist/src/coin/baseCoin/blsKeyPair.js +7 -7
  12. package/dist/src/coin/baseCoin/index.d.ts +1 -0
  13. package/dist/src/coin/baseCoin/index.d.ts.map +1 -1
  14. package/dist/src/coin/baseCoin/index.js +4 -2
  15. package/dist/src/coin/dot/iface.d.ts +8 -2
  16. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  17. package/dist/src/coin/dot/iface.js +2 -1
  18. package/dist/src/coin/dot/index.d.ts +1 -0
  19. package/dist/src/coin/dot/index.d.ts.map +1 -1
  20. package/dist/src/coin/dot/index.js +4 -2
  21. package/dist/src/coin/dot/transaction.d.ts +18 -2
  22. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  23. package/dist/src/coin/dot/transaction.js +66 -66
  24. package/dist/src/coin/dot/transactionBuilder.d.ts +6 -2
  25. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  26. package/dist/src/coin/dot/transactionBuilder.js +20 -24
  27. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +2 -1
  28. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  29. package/dist/src/coin/dot/transactionBuilderFactory.js +4 -1
  30. package/dist/src/coin/dot/txnSchema.d.ts +1 -0
  31. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  32. package/dist/src/coin/dot/txnSchema.js +5 -2
  33. package/dist/src/coin/dot/utils.d.ts +20 -4
  34. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  35. package/dist/src/coin/dot/utils.js +33 -5
  36. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
  37. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
  38. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +112 -0
  39. package/dist/src/coin/eth2/keyPair.js +2 -2
  40. package/dist/src/coin/near/utils.d.ts.map +1 -1
  41. package/dist/src/coin/near/utils.js +3 -2
  42. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
  43. package/dist/src/coin/sol/ataInitializationBuilder.js +6 -3
  44. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
  45. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
  46. package/dist/src/coin/sol/ataInitializationTransaction.js +102 -0
  47. package/dist/src/coin/sol/iface.d.ts +0 -1
  48. package/dist/src/coin/sol/iface.d.ts.map +1 -1
  49. package/dist/src/coin/sol/iface.js +1 -1
  50. package/dist/src/coin/sol/transaction.d.ts +5 -2
  51. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  52. package/dist/src/coin/sol/transaction.js +10 -22
  53. package/dist/src/coin/sol/transactionBuilder.d.ts +1 -1
  54. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  55. package/dist/src/coin/sol/transactionBuilder.js +1 -1
  56. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +3 -1
  57. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  58. package/dist/src/coin/sol/transactionBuilderFactory.js +8 -3
  59. package/dist/src/mpc/tss.d.ts +6 -6
  60. package/dist/src/mpc/tss.d.ts.map +1 -1
  61. package/dist/src/mpc/tss.js +3 -2
  62. package/dist/src/utils/crypto.d.ts +7 -0
  63. package/dist/src/utils/crypto.d.ts.map +1 -1
  64. package/dist/src/utils/crypto.js +13 -2
  65. package/package.json +8 -8
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo/account-lib",
3
- "version": "2.19.0-rc.1",
3
+ "version": "2.19.0-rc.4",
4
4
  "description": "BitGo's account library functions",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -39,19 +39,19 @@
39
39
  "@bitgo/blake2b": "^3.0.2",
40
40
  "@bitgo/bls": "^0.1.0",
41
41
  "@bitgo/bls-dkg": "^1.0.2-rc.0",
42
- "@bitgo/statics": "^6.17.0-rc.1",
42
+ "@bitgo/statics": "^6.17.0-rc.3",
43
43
  "@celo/contractkit": "^1.2.4",
44
44
  "@ethereumjs/common": "^2.4.0",
45
45
  "@ethereumjs/tx": "^3.3.0",
46
46
  "@hashgraph/sdk": "~2.3.0",
47
- "@polkadot/api": "^7.3.1",
48
- "@solana/spl-token": "^0.1.8",
49
- "@solana/web3.js": "^1.30.2",
47
+ "@polkadot/api": "^7.8.1",
48
+ "@solana/spl-token": "0.1.8",
49
+ "@solana/web3.js": "1.31.0",
50
50
  "@stablelib/hex": "^1.0.0",
51
51
  "@stablelib/sha384": "^1.0.0",
52
52
  "@stacks/transactions": "2.0.1",
53
- "@substrate/txwrapper-core": "1.5.1",
54
- "@substrate/txwrapper-polkadot": "1.5.1",
53
+ "@substrate/txwrapper-core": "1.5.3",
54
+ "@substrate/txwrapper-polkadot": "1.5.3",
55
55
  "@taquito/local-forging": "6.3.5-beta.0",
56
56
  "@taquito/signer": "6.3.5-beta.0",
57
57
  "@types/lodash": "^4.14.151",
@@ -126,5 +126,5 @@
126
126
  "publishConfig": {
127
127
  "access": "public"
128
128
  },
129
- "gitHead": "22df475afa3f049571b6e1eedd81296c2bfbbe14"
129
+ "gitHead": "6aace63b155de400288d5c8bf2b2e01f919e2246"
130
130
  }
@@ -66,18 +66,27 @@ export declare class KeyRegistrationBuilder extends TransactionBuilder {
66
66
  *
67
67
  * @returns {KeyRegistrationBuilder} This Key Registration builder.
68
68
  *
69
- * @param {boolean} nonPart. All new Algorand accounts are participating by default.
69
+ * @param {boolean} nonParticipation All new Algorand accounts are participating by default.
70
70
  * This means that they earn rewards. Mark an account nonparticipating by setting this value to true and this account
71
- * will no longer earn rewards
71
+ * will no longer earn rewards NEVER.
72
72
  * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
73
73
  */
74
74
  nonParticipation(nonParticipation: boolean): KeyRegistrationBuilder;
75
75
  protected buildAlgoTxn(): algosdk.Transaction;
76
+ private buildOfflineKeyRegTransaction;
77
+ private buildOnlineKeyRegTransaction;
78
+ private buildNonParticipationKeyRegTransaction;
76
79
  protected get transactionType(): TransactionType;
77
80
  /** @inheritdoc */
78
81
  protected fromImplementation(rawTransaction: Uint8Array | string): Transaction;
79
82
  /** @inheritdoc */
80
83
  validateRawTransaction(rawTransaction: Uint8Array | string): void;
84
+ private isNonParticipationKeyRegAlgoSDKTransaction;
85
+ private isNonParticipationKeyRegAccountLibTransaction;
86
+ private isOnlineKeyRegAlgoSDKTransaction;
87
+ private isOnlineKeyRegAccountLibTransaction;
88
+ private isOfflineKeyRegAlgoSDKTransaction;
89
+ private isOfflineKeyRegAccountLibTransaction;
81
90
  /** @inheritdoc */
82
91
  validateTransaction(transaction: Transaction): void;
83
92
  private validateFields;
@@ -1 +1 @@
1
- {"version":3,"file":"keyRegistrationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/keyRegistrationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAEzB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG5C;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAI5C;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAKjD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAOhD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAO/C;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAI,SAAQ,GAAG,sBAAsB;IAOrD;;;;;;;;;OASG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,GAAG,sBAAsB;IAMnE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW;IA4B7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW;IAkB9E,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAoBjE,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAOnD,OAAO,CAAC,cAAc;CAmBvB"}
1
+ {"version":3,"file":"keyRegistrationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/keyRegistrationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAEzB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG5C;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAI5C;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAKjD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAOhD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAO/C;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAI,SAAQ,GAAG,sBAAsB;IAOrD;;;;;;;;;OASG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,GAAG,sBAAsB;IAMnE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW;IAQ7C,OAAO,CAAC,6BAA6B;IAarC,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,sCAAsC;IAe9C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW;IAkB9E,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAoBjE,OAAO,CAAC,0CAA0C;IAIlD,OAAO,CAAC,6CAA6C;IAIrD,OAAO,CAAC,gCAAgC;IAMxC,OAAO,CAAC,mCAAmC;IAI3C,OAAO,CAAC,iCAAiC;IAWzC,OAAO,CAAC,oCAAoC;IAW5C,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAenD,OAAO,CAAC,cAAc;CAmBvB"}
@@ -105,9 +105,9 @@ var KeyRegistrationBuilder = /** @class */ (function (_super) {
105
105
  *
106
106
  * @returns {KeyRegistrationBuilder} This Key Registration builder.
107
107
  *
108
- * @param {boolean} nonPart. All new Algorand accounts are participating by default.
108
+ * @param {boolean} nonParticipation All new Algorand accounts are participating by default.
109
109
  * This means that they earn rewards. Mark an account nonparticipating by setting this value to true and this account
110
- * will no longer earn rewards
110
+ * will no longer earn rewards NEVER.
111
111
  * https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
112
112
  */
113
113
  KeyRegistrationBuilder.prototype.nonParticipation = function (nonParticipation) {
@@ -115,12 +115,20 @@ var KeyRegistrationBuilder = /** @class */ (function (_super) {
115
115
  return this;
116
116
  };
117
117
  KeyRegistrationBuilder.prototype.buildAlgoTxn = function () {
118
- if (!this._nonParticipation) {
119
- return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this.suggestedParams);
120
- }
121
- else {
122
- return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, undefined, undefined, undefined, undefined, this.suggestedParams, this._reKeyTo, this._nonParticipation);
123
- }
118
+ return this.isOfflineKeyRegAccountLibTransaction()
119
+ ? this.buildOfflineKeyRegTransaction()
120
+ : this.isNonParticipationKeyRegAccountLibTransaction()
121
+ ? this.buildNonParticipationKeyRegTransaction()
122
+ : this.buildOnlineKeyRegTransaction();
123
+ };
124
+ KeyRegistrationBuilder.prototype.buildOfflineKeyRegTransaction = function () {
125
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, undefined, undefined, undefined, undefined, this.suggestedParams);
126
+ };
127
+ KeyRegistrationBuilder.prototype.buildOnlineKeyRegTransaction = function () {
128
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this.suggestedParams);
129
+ };
130
+ KeyRegistrationBuilder.prototype.buildNonParticipationKeyRegTransaction = function () {
131
+ return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, undefined, undefined, undefined, undefined, this.suggestedParams, this._reKeyTo, true);
124
132
  };
125
133
  Object.defineProperty(KeyRegistrationBuilder.prototype, "transactionType", {
126
134
  get: function () {
@@ -134,16 +142,16 @@ var KeyRegistrationBuilder = /** @class */ (function (_super) {
134
142
  var tx = _super.prototype.fromImplementation.call(this, rawTransaction);
135
143
  var algoTxn = tx.getAlgoTransaction();
136
144
  if (algoTxn) {
137
- if (!algoTxn.nonParticipation) {
145
+ if (this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn)) {
146
+ this.nonParticipation(!!algoTxn.nonParticipation);
147
+ }
148
+ else if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
138
149
  this.voteKey(algoTxn.voteKey.toString('base64'));
139
150
  this.selectionKey(algoTxn.selectionKey.toString('base64'));
140
151
  this.voteFirst(algoTxn.voteFirst);
141
152
  this.voteLast(algoTxn.voteLast);
142
153
  this.voteKeyDilution(algoTxn.voteKeyDilution);
143
154
  }
144
- else {
145
- this.nonParticipation(algoTxn.nonParticipation);
146
- }
147
155
  }
148
156
  return tx;
149
157
  };
@@ -154,16 +162,51 @@ var KeyRegistrationBuilder = /** @class */ (function (_super) {
154
162
  if (algoTxn.type !== algosdk_1.default.TransactionType.keyreg) {
155
163
  throw new errors_1.InvalidTransactionError("Invalid Transaction Type: " + algoTxn.type + ". Expected " + algosdk_1.default.TransactionType.keyreg);
156
164
  }
157
- if (!algoTxn.nonParticipation) {
165
+ if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
158
166
  this.validateFields(algoTxn.voteKey.toString('base64'), algoTxn.selectionKey.toString('base64'), algoTxn.voteFirst, algoTxn.voteLast, algoTxn.voteKeyDilution);
159
167
  }
160
168
  };
169
+ KeyRegistrationBuilder.prototype.isNonParticipationKeyRegAlgoSDKTransaction = function (algoTxn) {
170
+ return !!algoTxn.nonParticipation;
171
+ };
172
+ KeyRegistrationBuilder.prototype.isNonParticipationKeyRegAccountLibTransaction = function () {
173
+ return !!this._nonParticipation;
174
+ };
175
+ KeyRegistrationBuilder.prototype.isOnlineKeyRegAlgoSDKTransaction = function (algoTxn) {
176
+ return !(this.isOfflineKeyRegAlgoSDKTransaction(algoTxn) || this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn));
177
+ };
178
+ KeyRegistrationBuilder.prototype.isOnlineKeyRegAccountLibTransaction = function () {
179
+ return !(this.isOfflineKeyRegAccountLibTransaction() || this.isNonParticipationKeyRegAccountLibTransaction());
180
+ };
181
+ KeyRegistrationBuilder.prototype.isOfflineKeyRegAlgoSDKTransaction = function (algoTxn) {
182
+ return (!algoTxn.voteKey &&
183
+ !algoTxn.selectionKey &&
184
+ !algoTxn.voteFirst &&
185
+ !algoTxn.voteLast &&
186
+ !algoTxn.voteKeyDilution &&
187
+ !algoTxn.nonParticipation);
188
+ };
189
+ KeyRegistrationBuilder.prototype.isOfflineKeyRegAccountLibTransaction = function () {
190
+ return (!this._voteKey &&
191
+ !this._selectionKey &&
192
+ !this._voteFirst &&
193
+ !this._voteLast &&
194
+ !this._voteKeyDilution &&
195
+ !this._nonParticipation);
196
+ };
161
197
  /** @inheritdoc */
162
198
  KeyRegistrationBuilder.prototype.validateTransaction = function (transaction) {
163
199
  _super.prototype.validateTransaction.call(this, transaction);
164
- if (!this._nonParticipation) {
200
+ if (this.isOnlineKeyRegAccountLibTransaction()) {
201
+ // invalid offline will reach here
165
202
  this.validateFields(this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution);
166
203
  }
204
+ else {
205
+ // offline or nonparticipation transaction
206
+ if (this._voteKey || this._selectionKey || this._voteFirst || this._voteLast || this._voteKeyDilution) {
207
+ throw new errors_1.InvalidTransactionError('VoteKey, SelectionKey, VoteFirst, VoteLast, VoteKeyDilution fields cannot be set when offline or nonparticipation is set');
208
+ }
209
+ }
167
210
  };
168
211
  KeyRegistrationBuilder.prototype.validateFields = function (voteKey, selectionKey, voteFirst, voteLast, voteKeyDilution) {
169
212
  var validationResult = txnSchema_1.KeyRegTxnSchema.validate({
@@ -180,4 +223,4 @@ var KeyRegistrationBuilder = /** @class */ (function (_super) {
180
223
  return KeyRegistrationBuilder;
181
224
  }(transactionBuilder_1.TransactionBuilder));
182
225
  exports.KeyRegistrationBuilder = KeyRegistrationBuilder;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UmVnaXN0cmF0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2FsZ28va2V5UmVnaXN0cmF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBcUM7QUFDckMsb0RBQThCO0FBRTlCLHdDQUE4QztBQUM5Qyw2Q0FBNkQ7QUFDN0QsMkRBQTBEO0FBRTFELHlDQUE4QztBQUM5QyxrREFBNEI7QUFFNUI7SUFBNEMsMENBQWtCO0lBUTVELGdDQUFZLFVBQWdDO2VBQzFDLGtCQUFNLFVBQVUsQ0FBQztJQUNuQixDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILHdDQUFPLEdBQVAsVUFBUSxHQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCw2Q0FBWSxHQUFaLFVBQWEsR0FBVztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsMENBQVMsR0FBVCxVQUFVLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCx5Q0FBUSxHQUFSLFVBQVMsS0FBYTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVE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dCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UmVnVHhuU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgS2V5UmVnaXN0cmF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdm90ZUtleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NlbGVjdGlvbktleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3ZvdGVGaXJzdDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3ZvdGVMYXN0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdm90ZUtleURpbHV0aW9uOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbm9uUGFydGljaXBhdGlvbjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2b3RlIGtleVxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBrZXkgVGhlIHJvb3QgcGFydGljaXBhdGlvbiBwdWJsaWMga2V5LiBTZWUgR2VuZXJhdGUgYSBQYXJ0aWNpcGF0aW9uIEtleSB0byBsZWFybiBtb3JlLlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICB2b3RlS2V5KGtleTogc3RyaW5nKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5fdm90ZUtleSA9IGtleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICpTZXRzIHRoZSBzZWxlY3Rpb24ga2V5XG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGtleSBUaGUgVlJGIHB1YmxpYyBrZXkgZm9yIHRoZSBhY2NvdW50LlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICBzZWxlY3Rpb25LZXkoa2V5OiBzdHJpbmcpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25LZXkgPSBrZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpTZXRzIHRoZSB2b3RlIGZpcnN0IHJvdW5kXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJvdW5kIFRoZSBmaXJzdCByb3VuZCB0aGF0IHRoZSBwYXJ0aWNpcGF0aW9uIGtleSBpcyB2YWxpZC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdGhlIEZpcnN0VmFsaWQgcm91bmQgb2YgdGhlIGtleXJlZyB0cmFuc2FjdGlvbi5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy8ja2V5LXJlZ2lzdHJhdGlvbi10cmFuc2FjdGlvblxuICAgKi9cbiAgdm90ZUZpcnN0KHJvdW5kOiBudW1iZXIpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyb3VuZCkpO1xuICAgIHRoaXMuX3ZvdGVGaXJzdCA9IHJvdW5kO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdm90ZSBsYXN0IHJvdW5kXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQSByZWNvbW1lbmRlZCByYW5nZSBpcyAzLDAwMCwwMDAgcm91bmRzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcm91bmQgTm8gdGhlb3JldGljYWwgbGltaXQuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3J1bi1hLW5vZGUvcGFydGljaXBhdGUvZ2VuZXJhdGVfa2V5cy9cbiAgICovXG4gIHZvdGVMYXN0KHJvdW5kOiBudW1iZXIpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyb3VuZCkpO1xuICAgIHRoaXMuX3ZvdGVMYXN0ID0gcm91bmQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2b3RlIGtleSBkaWx1dGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDEwLDAwMFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBbMTAwMDBdLiBUbyByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHBhcnRpY2lwYXRpb24ga2V5LCBzZXQgdGhlIGtleSBkaWx1dGlvbiB2YWx1ZSB0byByb3VnaGx5IHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcmFuZ2UgdGhhdCB0aGUgcGFydGtleSBpcyB2YWxpZCBmb3IuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3J1bi1hLW5vZGUvcGFydGljaXBhdGUvZ2VuZXJhdGVfa2V5cy8jZ2VuZXJhdGUtdGhlLXBhcnRpY2lwYXRpb24ta2V5LXdpdGgtZ29hbFxuICAgKiBAcGFyYW0gc2l6ZVxuICAgKi9cbiAgdm90ZUtleURpbHV0aW9uKHNpemUgPSAxMDAwMCk6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHNpemUpKTtcbiAgICB0aGlzLl92b3RlS2V5RGlsdXRpb24gPSBzaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbm9uIHBhcnRpY2lwYXRpb24gZmxhZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9uUGFydC4gQWxsIG5ldyBBbGdvcmFuZCBhY2NvdW50cyBhcmUgcGFydGljaXBhdGluZyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhleSBlYXJuIHJld2FyZHMuIE1hcmsgYW4gYWNjb3VudCBub25wYXJ0aWNpcGF0aW5nIGJ5IHNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIGFuZCB0aGlzIGFjY291bnRcbiAgICogd2lsbCBubyBsb25nZXIgZWFybiByZXdhcmRzXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3JlZmVyZW5jZS90cmFuc2FjdGlvbnMvI2tleS1yZWdpc3RyYXRpb24tdHJhbnNhY3Rpb25cbiAgICovXG4gIG5vblBhcnRpY2lwYXRpb24obm9uUGFydGljaXBhdGlvbjogYm9vbGVhbik6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuX25vblBhcnRpY2lwYXRpb24gPSBub25QYXJ0aWNpcGF0aW9uO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRBbGdvVHhuKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIGlmICghdGhpcy5fbm9uUGFydGljaXBhdGlvbikge1xuICAgICAgcmV0dXJuIGFsZ29zZGsubWFrZUtleVJlZ2lzdHJhdGlvblR4bldpdGhTdWdnZXN0ZWRQYXJhbXMoXG4gICAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgICAgdGhpcy5fbm90ZSxcbiAgICAgICAgdGhpcy5fdm90ZUtleSxcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uS2V5LFxuICAgICAgICB0aGlzLl92b3RlRmlyc3QsXG4gICAgICAgIHRoaXMuX3ZvdGVMYXN0LFxuICAgICAgICB0aGlzLl92b3RlS2V5RGlsdXRpb24sXG4gICAgICAgIHRoaXMuc3VnZ2VzdGVkUGFyYW1zLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFsZ29zZGsubWFrZUtleVJlZ2lzdHJhdGlvblR4bldpdGhTdWdnZXN0ZWRQYXJhbXMoXG4gICAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgICAgdGhpcy5fbm90ZSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHRoaXMuc3VnZ2VzdGVkUGFyYW1zLFxuICAgICAgICB0aGlzLl9yZUtleVRvLFxuICAgICAgICB0aGlzLl9ub25QYXJ0aWNpcGF0aW9uLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogVWludDhBcnJheSB8IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IHN1cGVyLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgYWxnb1R4biA9IHR4LmdldEFsZ29UcmFuc2FjdGlvbigpO1xuXG4gICAgaWYgKGFsZ29UeG4pIHtcbiAgICAgIGlmICghYWxnb1R4bi5ub25QYXJ0aWNpcGF0aW9uKSB7XG4gICAgICAgIHRoaXMudm90ZUtleShhbGdvVHhuLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXkoYWxnb1R4bi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgdGhpcy52b3RlRmlyc3QoYWxnb1R4bi52b3RlRmlyc3QpO1xuICAgICAgICB0aGlzLnZvdGVMYXN0KGFsZ29UeG4udm90ZUxhc3QpO1xuICAgICAgICB0aGlzLnZvdGVLZXlEaWx1dGlvbihhbGdvVHhuLnZvdGVLZXlEaWx1dGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5vblBhcnRpY2lwYXRpb24oYWxnb1R4bi5ub25QYXJ0aWNpcGF0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVUeG4gPSBVdGlscy5kZWNvZGVBbGdvVHhuKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBhbGdvVHhuID0gZGVjb2RlVHhuLnR4bjtcbiAgICBpZiAoYWxnb1R4bi50eXBlICE9PSBhbGdvc2RrLlRyYW5zYWN0aW9uVHlwZS5rZXlyZWcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHthbGdvVHhuLnR5cGV9LiBFeHBlY3RlZCAke2FsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLmtleXJlZ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWFsZ29UeG4ubm9uUGFydGljaXBhdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkcyhcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgYWxnb1R4bi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICBhbGdvVHhuLnZvdGVGaXJzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlTGFzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5RGlsdXRpb24sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIGlmICghdGhpcy5fbm9uUGFydGljaXBhdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkcyh0aGlzLl92b3RlS2V5LCB0aGlzLl9zZWxlY3Rpb25LZXksIHRoaXMuX3ZvdGVGaXJzdCwgdGhpcy5fdm90ZUxhc3QsIHRoaXMuX3ZvdGVLZXlEaWx1dGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcyhcbiAgICB2b3RlS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0aW9uS2V5OiBzdHJpbmcsXG4gICAgdm90ZUZpcnN0OiBudW1iZXIsXG4gICAgdm90ZUxhc3Q6IG51bWJlcixcbiAgICB2b3RlS2V5RGlsdXRpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IEtleVJlZ1R4blNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICB2b3RlS2V5LFxuICAgICAgc2VsZWN0aW9uS2V5LFxuICAgICAgdm90ZUZpcnN0LFxuICAgICAgdm90ZUxhc3QsXG4gICAgICB2b3RlS2V5RGlsdXRpb24sXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UmVnaXN0cmF0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2FsZ28va2V5UmVnaXN0cmF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBcUM7QUFDckMsb0RBQThCO0FBRTlCLHdDQUE4QztBQUM5Qyw2Q0FBNkQ7QUFDN0QsMkRBQTBEO0FBRTFELHlDQUE4QztBQUM5QyxrREFBNEI7QUFFNUI7SUFBNEMsMENBQWtCO0lBUTVELGdDQUFZLFVBQWdDO2VBQzFDLGtCQUFNLFVBQVUsQ0FBQztJQUNuQixDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILHdDQUFPLEdBQVAsVUFBUSxHQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCw2Q0FBWSxHQUFaLFVBQWEsR0FBVztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsMENBQVMsR0FBVCxVQUFVLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCx5Q0FBUSxHQUFSLFVBQVMsS0FBYTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxnREFBZSxHQUFmLFVBQWdCLElBQVk7UUFBWixxQkFBQSxFQUFBLFlBQVk7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGlEQUFnQixHQUFoQixVQUFpQixnQkFBeUI7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVTLDZDQUFZLEdBQXRCO1FBQ0UsT0FBTyxJQUFJLENBQUMsb0NBQW9DLEVBQUU7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxFQUFFO2dCQUN0RCxDQUFDLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLDhEQUE2QixHQUFyQztRQUNFLE9BQU8saUJBQU8sQ0FBQyx5Q0FBeUMsQ0FDdEQsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsS0FBSyxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFTyw2REFBNEIsR0FBcEM7UUFDRSxPQUFPLGlCQUFPLENBQUMseUNBQXlDLENBQ3RELElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRU8sdUVBQXNDLEdBQTlDO1FBQ0UsT0FBTyxpQkFBTyxDQUFDLHlDQUF5QyxDQUN0RCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxLQUFLLEVBQ1YsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFjLG1EQUFlO2FBQTdCO1lBQ0UsT0FBTywwQkFBZSxDQUFDLG9CQUFvQixDQUFDO1FBQzlDLENBQUM7OztPQUFBO0lBRUQsa0JBQWtCO0lBQ1IsbURBQWtCLEdBQTVCLFVBQTZCLGNBQW1DO1FBQzlELElBQU0sRUFBRSxHQUFHLGlCQUFNLGtCQUFrQixZQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRXhDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxJQUFJLENBQUMsMENBQTBDLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDbkQ7aUJBQU0sSUFBSSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQy9DO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdURBQXNCLEdBQXRCLFVBQXVCLGNBQW1DO1FBQ3hELElBQU0sU0FBUyxHQUFHLGVBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsSUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssaUJBQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQ25ELE1BQU0sSUFBSSxnQ0FBdUIsQ0FDL0IsK0JBQTZCLE9BQU8sQ0FBQyxJQUFJLG1CQUFjLGlCQUFPLENBQUMsZUFBZSxDQUFDLE1BQVEsQ0FDeEYsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FDakIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQ2xDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUN2QyxPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsZUFBZSxDQUN4QixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sMkVBQTBDLEdBQWxELFVBQW1ELE9BQTRCO1FBQzdFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwQyxDQUFDO0lBRU8sOEVBQTZDLEdBQXJEO1FBQ0UsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFTyxpRUFBZ0MsR0FBeEMsVUFBeUMsT0FBNEI7UUFDbkUsT0FBTyxDQUFDLENBQ04sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxPQUFPLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7SUFFTyxvRUFBbUMsR0FBM0M7UUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxJQUFJLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFTyxrRUFBaUMsR0FBekMsVUFBMEMsT0FBNEI7UUFDcEUsT0FBTyxDQUNMLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDaEIsQ0FBQyxPQUFPLENBQUMsWUFBWTtZQUNyQixDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xCLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDakIsQ0FBQyxPQUFPLENBQUMsZUFBZTtZQUN4QixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFTyxxRUFBb0MsR0FBNUM7UUFDRSxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNkLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNoQixDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2YsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3RCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvREFBbUIsR0FBbkIsVUFBb0IsV0FBd0I7UUFDMUMsaUJBQU0sbUJBQW1CLFlBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsbUNBQW1DLEVBQUUsRUFBRTtZQUM5QyxrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2hIO2FBQU07WUFDTCwwQ0FBMEM7WUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckcsTUFBTSxJQUFJLGdDQUF1QixDQUMvQiwwSEFBMEgsQ0FDM0gsQ0FBQzthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sK0NBQWMsR0FBdEIsVUFDRSxPQUFlLEVBQ2YsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsZUFBdUI7UUFFdkIsSUFBTSxnQkFBZ0IsR0FBRywyQkFBZSxDQUFDLFFBQVEsQ0FBQztZQUNoRCxPQUFPLFNBQUE7WUFDUCxZQUFZLGNBQUE7WUFDWixTQUFTLFdBQUE7WUFDVCxRQUFRLFVBQUE7WUFDUixlQUFlLGlCQUFBO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxvQ0FBa0MsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQVMsQ0FBQyxDQUFDO1NBQ3ZHO0lBQ0gsQ0FBQztJQUNILDZCQUFDO0FBQUQsQ0FBQyxBQTlRRCxDQUE0Qyx1Q0FBa0IsR0E4UTdEO0FBOVFZLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBhbGdvc2RrIGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBLZXlSZWdUeG5TY2hlbWEgfSBmcm9tICcuL3R4blNjaGVtYSc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF92b3RlS2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uS2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdm90ZUZpcnN0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdm90ZUxhc3Q6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF92b3RlS2V5RGlsdXRpb246IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9ub25QYXJ0aWNpcGF0aW9uOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZvdGUga2V5XG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGtleSBUaGUgcm9vdCBwYXJ0aWNpcGF0aW9uIHB1YmxpYyBrZXkuIFNlZSBHZW5lcmF0ZSBhIFBhcnRpY2lwYXRpb24gS2V5IHRvIGxlYXJuIG1vcmUuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3JlZmVyZW5jZS90cmFuc2FjdGlvbnMvI2tleS1yZWdpc3RyYXRpb24tdHJhbnNhY3Rpb25cbiAgICovXG4gIHZvdGVLZXkoa2V5OiBzdHJpbmcpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLl92b3RlS2V5ID0ga2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKlNldHMgdGhlIHNlbGVjdGlvbiBrZXlcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0ga2V5IFRoZSBWUkYgcHVibGljIGtleSBmb3IgdGhlIGFjY291bnQuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3JlZmVyZW5jZS90cmFuc2FjdGlvbnMvI2tleS1yZWdpc3RyYXRpb24tdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlbGVjdGlvbktleShrZXk6IHN0cmluZyk6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuX3NlbGVjdGlvbktleSA9IGtleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlNldHMgdGhlIHZvdGUgZmlyc3Qgcm91bmRcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcm91bmQgVGhlIGZpcnN0IHJvdW5kIHRoYXQgdGhlIHBhcnRpY2lwYXRpb24ga2V5IGlzIHZhbGlkLiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgRmlyc3RWYWxpZCByb3VuZCBvZiB0aGUga2V5cmVnIHRyYW5zYWN0aW9uLlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICB2b3RlRmlyc3Qocm91bmQ6IG51bWJlcik6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHJvdW5kKSk7XG4gICAgdGhpcy5fdm90ZUZpcnN0ID0gcm91bmQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2b3RlIGxhc3Qgcm91bmRcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBBIHJlY29tbWVuZGVkIHJhbmdlIGlzIDMsMDAwLDAwMCByb3VuZHMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByb3VuZCBObyB0aGVvcmV0aWNhbCBsaW1pdC5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcnVuLWEtbm9kZS9wYXJ0aWNpcGF0ZS9nZW5lcmF0ZV9rZXlzL1xuICAgKi9cbiAgdm90ZUxhc3Qocm91bmQ6IG51bWJlcik6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHJvdW5kKSk7XG4gICAgdGhpcy5fdm90ZUxhc3QgPSByb3VuZDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZvdGUga2V5IGRpbHV0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gMTAsMDAwXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIFsxMDAwMF0uIFRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgcGFydGljaXBhdGlvbiBrZXksIHNldCB0aGUga2V5IGRpbHV0aW9uIHZhbHVlIHRvIHJvdWdobHkgdGhlIHNxdWFyZSByb290IG9mIHRoZSByYW5nZSB0aGF0IHRoZSBwYXJ0a2V5IGlzIHZhbGlkIGZvci5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcnVuLWEtbm9kZS9wYXJ0aWNpcGF0ZS9nZW5lcmF0ZV9rZXlzLyNnZW5lcmF0ZS10aGUtcGFydGljaXBhdGlvbi1rZXktd2l0aC1nb2FsXG4gICAqIEBwYXJhbSBzaXplXG4gICAqL1xuICB2b3RlS2V5RGlsdXRpb24oc2l6ZSA9IDEwMDAwKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoc2l6ZSkpO1xuICAgIHRoaXMuX3ZvdGVLZXlEaWx1dGlvbiA9IHNpemU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBub24gcGFydGljaXBhdGlvbiBmbGFnXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBub25QYXJ0aWNpcGF0aW9uIEFsbCBuZXcgQWxnb3JhbmQgYWNjb3VudHMgYXJlIHBhcnRpY2lwYXRpbmcgYnkgZGVmYXVsdC5cbiAgICogVGhpcyBtZWFucyB0aGF0IHRoZXkgZWFybiByZXdhcmRzLiBNYXJrIGFuIGFjY291bnQgbm9ucGFydGljaXBhdGluZyBieSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gdHJ1ZSBhbmQgdGhpcyBhY2NvdW50XG4gICAqIHdpbGwgbm8gbG9uZ2VyIGVhcm4gcmV3YXJkcyBORVZFUi5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy8ja2V5LXJlZ2lzdHJhdGlvbi10cmFuc2FjdGlvblxuICAgKi9cbiAgbm9uUGFydGljaXBhdGlvbihub25QYXJ0aWNpcGF0aW9uOiBib29sZWFuKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5fbm9uUGFydGljaXBhdGlvbiA9IG5vblBhcnRpY2lwYXRpb247XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEFsZ29UeG4oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNPZmZsaW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKClcbiAgICAgID8gdGhpcy5idWlsZE9mZmxpbmVLZXlSZWdUcmFuc2FjdGlvbigpXG4gICAgICA6IHRoaXMuaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKClcbiAgICAgID8gdGhpcy5idWlsZE5vblBhcnRpY2lwYXRpb25LZXlSZWdUcmFuc2FjdGlvbigpXG4gICAgICA6IHRoaXMuYnVpbGRPbmxpbmVLZXlSZWdUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE9mZmxpbmVLZXlSZWdUcmFuc2FjdGlvbigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tYWtlS2V5UmVnaXN0cmF0aW9uVHhuV2l0aFN1Z2dlc3RlZFBhcmFtcyhcbiAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgIHRoaXMuX25vdGUsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnN1Z2dlc3RlZFBhcmFtcyxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE9ubGluZUtleVJlZ1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VLZXlSZWdpc3RyYXRpb25UeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHRoaXMuX3ZvdGVLZXksXG4gICAgICB0aGlzLl9zZWxlY3Rpb25LZXksXG4gICAgICB0aGlzLl92b3RlRmlyc3QsXG4gICAgICB0aGlzLl92b3RlTGFzdCxcbiAgICAgIHRoaXMuX3ZvdGVLZXlEaWx1dGlvbixcbiAgICAgIHRoaXMuc3VnZ2VzdGVkUGFyYW1zLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTm9uUGFydGljaXBhdGlvbktleVJlZ1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VLZXlSZWdpc3RyYXRpb25UeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMuc3VnZ2VzdGVkUGFyYW1zLFxuICAgICAgdGhpcy5fcmVLZXlUbyxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBhbGdvVHhuID0gdHguZ2V0QWxnb1RyYW5zYWN0aW9uKCk7XG5cbiAgICBpZiAoYWxnb1R4bikge1xuICAgICAgaWYgKHRoaXMuaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWxnb1NES1RyYW5zYWN0aW9uKGFsZ29UeG4pKSB7XG4gICAgICAgIHRoaXMubm9uUGFydGljaXBhdGlvbighIWFsZ29UeG4ubm9uUGFydGljaXBhdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNPbmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bikpIHtcbiAgICAgICAgdGhpcy52b3RlS2V5KGFsZ29UeG4udm90ZUtleS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbktleShhbGdvVHhuLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICB0aGlzLnZvdGVGaXJzdChhbGdvVHhuLnZvdGVGaXJzdCk7XG4gICAgICAgIHRoaXMudm90ZUxhc3QoYWxnb1R4bi52b3RlTGFzdCk7XG4gICAgICAgIHRoaXMudm90ZUtleURpbHV0aW9uKGFsZ29UeG4udm90ZUtleURpbHV0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVUeG4gPSBVdGlscy5kZWNvZGVBbGdvVHhuKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBhbGdvVHhuID0gZGVjb2RlVHhuLnR4bjtcbiAgICBpZiAoYWxnb1R4bi50eXBlICE9PSBhbGdvc2RrLlRyYW5zYWN0aW9uVHlwZS5rZXlyZWcpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHthbGdvVHhuLnR5cGV9LiBFeHBlY3RlZCAke2FsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLmtleXJlZ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09ubGluZUtleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkcyhcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgYWxnb1R4bi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICBhbGdvVHhuLnZvdGVGaXJzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlTGFzdCxcbiAgICAgICAgYWxnb1R4bi52b3RlS2V5RGlsdXRpb24sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWxnb1NES1RyYW5zYWN0aW9uKGFsZ29UeG46IGFsZ29zZGsuVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhbGdvVHhuLm5vblBhcnRpY2lwYXRpb247XG4gIH1cblxuICBwcml2YXRlIGlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub25QYXJ0aWNpcGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09ubGluZUtleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuOiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoXG4gICAgICB0aGlzLmlzT2ZmbGluZUtleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuKSB8fCB0aGlzLmlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzT25saW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHRoaXMuaXNPZmZsaW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCkgfHwgdGhpcy5pc05vblBhcnRpY2lwYXRpb25LZXlSZWdBY2NvdW50TGliVHJhbnNhY3Rpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIGlzT2ZmbGluZUtleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuOiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICFhbGdvVHhuLnZvdGVLZXkgJiZcbiAgICAgICFhbGdvVHhuLnNlbGVjdGlvbktleSAmJlxuICAgICAgIWFsZ29UeG4udm90ZUZpcnN0ICYmXG4gICAgICAhYWxnb1R4bi52b3RlTGFzdCAmJlxuICAgICAgIWFsZ29UeG4udm90ZUtleURpbHV0aW9uICYmXG4gICAgICAhYWxnb1R4bi5ub25QYXJ0aWNpcGF0aW9uXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPZmZsaW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5fdm90ZUtleSAmJlxuICAgICAgIXRoaXMuX3NlbGVjdGlvbktleSAmJlxuICAgICAgIXRoaXMuX3ZvdGVGaXJzdCAmJlxuICAgICAgIXRoaXMuX3ZvdGVMYXN0ICYmXG4gICAgICAhdGhpcy5fdm90ZUtleURpbHV0aW9uICYmXG4gICAgICAhdGhpcy5fbm9uUGFydGljaXBhdGlvblxuICAgICk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5pc09ubGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpKSB7XG4gICAgICAvLyBpbnZhbGlkIG9mZmxpbmUgd2lsbCByZWFjaCBoZXJlXG4gICAgICB0aGlzLnZhbGlkYXRlRmllbGRzKHRoaXMuX3ZvdGVLZXksIHRoaXMuX3NlbGVjdGlvbktleSwgdGhpcy5fdm90ZUZpcnN0LCB0aGlzLl92b3RlTGFzdCwgdGhpcy5fdm90ZUtleURpbHV0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb2ZmbGluZSBvciBub25wYXJ0aWNpcGF0aW9uIHRyYW5zYWN0aW9uXG4gICAgICBpZiAodGhpcy5fdm90ZUtleSB8fCB0aGlzLl9zZWxlY3Rpb25LZXkgfHwgdGhpcy5fdm90ZUZpcnN0IHx8IHRoaXMuX3ZvdGVMYXN0IHx8IHRoaXMuX3ZvdGVLZXlEaWx1dGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgJ1ZvdGVLZXksIFNlbGVjdGlvbktleSwgVm90ZUZpcnN0LCBWb3RlTGFzdCwgVm90ZUtleURpbHV0aW9uIGZpZWxkcyBjYW5ub3QgYmUgc2V0IHdoZW4gb2ZmbGluZSBvciBub25wYXJ0aWNpcGF0aW9uIGlzIHNldCcsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcyhcbiAgICB2b3RlS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0aW9uS2V5OiBzdHJpbmcsXG4gICAgdm90ZUZpcnN0OiBudW1iZXIsXG4gICAgdm90ZUxhc3Q6IG51bWJlcixcbiAgICB2b3RlS2V5RGlsdXRpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IEtleVJlZ1R4blNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICB2b3RlS2V5LFxuICAgICAgc2VsZWN0aW9uS2V5LFxuICAgICAgdm90ZUZpcnN0LFxuICAgICAgdm90ZUxhc3QsXG4gICAgICB2b3RlS2V5RGlsdXRpb24sXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAiBlC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAW9B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA+BpB,IAAI,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAEpC;IAED,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1B;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAE5B;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED;;;;OAIG;IAEH,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;IAIjD;;;;OAIG;IAEH,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS;IAIrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,YAAY,IAAI,MAAM;IAQtB,kBAAkB;IAClB,iBAAiB,IAAI,UAAU;IAW/B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAyChB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAsB7B"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAiBlC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAW9B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA+BpB,IAAI,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAEpC;IAED,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1B;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAE5B;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED;;;;OAIG;IAEH,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;IAIjD;;;;OAIG;IAEH,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS;IAIrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,YAAY,IAAI,MAAM;IAQtB,kBAAkB;IAClB,iBAAiB,IAAI,UAAU;IAW/B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAiDhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAsB7B"}
@@ -232,11 +232,17 @@ var Transaction = /** @class */ (function (_super) {
232
232
  }
233
233
  if (this.type === baseCoin_1.TransactionType.WalletInitialization) {
234
234
  if (!this._algoTransaction.nonParticipation) {
235
- result.voteKey = this._algoTransaction.voteKey.toString('base64');
236
- result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
237
- result.voteFirst = this._algoTransaction.voteFirst;
238
- result.voteLast = this._algoTransaction.voteLast;
239
- result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
235
+ if (this._algoTransaction.voteKey &&
236
+ this._algoTransaction.selectionKey &&
237
+ this._algoTransaction.voteFirst &&
238
+ this._algoTransaction.voteLast &&
239
+ this._algoTransaction.voteKeyDilution) {
240
+ result.voteKey = this._algoTransaction.voteKey.toString('base64');
241
+ result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
242
+ result.voteFirst = this._algoTransaction.voteFirst;
243
+ result.voteLast = this._algoTransaction.voteLast;
244
+ result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
245
+ }
240
246
  }
241
247
  else {
242
248
  result.nonParticipation = this._algoTransaction.nonParticipation;
@@ -275,4 +281,4 @@ var Transaction = /** @class */ (function (_super) {
275
281
  return Transaction;
276
282
  }(baseCoin_1.BaseTransaction));
277
283
  exports.Transaction = Transaction;
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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QyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQTlQRCxDQUFpQywwQkFBZSxHQThQL0M7QUE5UFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZEtleSwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9hbGdvVHJhbnNhY3Rpb24/OiBhbGdvc2RrLlRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduZWRUcmFuc2FjdGlvbj86IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgX251bWJlck9mUmVxdWlyZWRTaWduZXJzOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlbmRlcjogc3RyaW5nO1xuICBwcml2YXRlIF9zaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfc2lnbmVkQnk6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPSAwO1xuICAgIHRoaXMuX3NpZ25lcnMgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICBjb25zdCBhZGRyID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKGFkZHIgPT09IHRoaXMuX3NlbmRlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VuZGVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICB0aGlzLnNpZ25TaW5nbGUoa2V5UGFpclswXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA+IDEpIHtcbiAgICAgIHRoaXMuc2lnbk11bHRpU2lnKGtleVBhaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduU2luZ2xlKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzaWduS2V5ID0gQnVmZmVyLmZyb20oa2V5UGFpci5nZXRTaWduaW5nS2V5KCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAoc2lnbktleSkge1xuICAgICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBhbGdvc2RrLnNpZ25UcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIHV0aWxzLnRvVWludDhBcnJheShzaWduS2V5KSkuYmxvYjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ1ByaXZhdGUga2V5IHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBtdWx0aXNpZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lcnMga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2lnbk11bHRpU2lnKGtleVBhaXI6IEtleVBhaXJbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVycyBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBpZiAoa2V5UGFpci5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0tleXBhaXIgbm90IHNwZWNpZmllZCBmb3IgbXVsdGlzaWcnKTtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlTaWdPcHRpb25zID0ge1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMsXG4gICAgICBhZGRyczogdGhpcy5fc2lnbmVycyxcbiAgICB9O1xuICAgIGNvbnN0IG1zaWdBZGRyZXNzID0gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3MobXVsdGlTaWdPcHRpb25zKTtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbSA9IGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhtc2lnQWRkcmVzcyk7XG5cbiAgICAvLyBDaGVjayBpZiBpdCBpcyBhIHNpZ25lZCBvciB1bnNpZ25lZCB0eC5cbiAgICAvLyBJZiB1bnNpZ25lZCwgc2lnbiBpdCB1c2luZyBmaXJzdCBrZXlwYWlyIGFuZCB0aGVuIGFwcGVuZCBuZXh0IHNpZ25hdHVyZXMuXG4gICAgLy8gSWYgc2lnbmVkLCBhcHBlbmRpbmcgbmV4dCBzaWduYXR1cmVzLlxuICAgIGxldCBzaWduZWRUeCA9IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA/IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA6IGFsZ29zZGsuc2lnbk11bHRpc2lnVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uLCBtdWx0aVNpZ09wdGlvbnMsIGtleVBhaXIuc2hpZnQoKSEuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuXG4gICAga2V5UGFpci5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgc2lnbmVkVHggPSBhbGdvc2RrLmFwcGVuZFNpZ25NdWx0aXNpZ1RyYW5zYWN0aW9uKHNpZ25lZFR4LCBtdWx0aVNpZ09wdGlvbnMsIGtwLmdldFNpZ25pbmdLZXkoKSkuYmxvYjtcbiAgICB9KTtcbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuICB9XG5cbiAgc2V0IHNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSkge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhuO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mUmVxdWlyZWRTaWduZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG51bWJlciBvZiBzaWduZXJzIHJlcXVpcmVkIGZvciBzaWduaW5nIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gVGhyZXNob2xkIG51bWJlciBvZiBzaWduZXJzLlxuICAgKi9cbiAgc2V0TnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMobnVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IG51bTtcbiAgfVxuXG4gIHNldCBzaWduZXJzKGFkZHJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpZ25lcnMgPSBhZGRycztcbiAgfVxuXG4gIGdldCBzaWduZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVycztcbiAgfVxuXG4gIHNldCBzaWduZWRCeShzaWduZXI6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVkQnkgPSBzaWduZXI7XG4gIH1cblxuICBnZXQgc2lnbmVkQnkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7YWxnb3Nkay5UcmFuc2FjdGlvbn0gdHhcbiAgICovXG5cbiAgc2V0QWxnb1RyYW5zYWN0aW9uKHR4OiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVuZGVybGF5aW5nIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHthbGdvc2RrLlRyYW5zYWN0aW9ufVxuICAgKi9cblxuICBnZXRBbGdvVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGVzdGltYXRlU2l6ZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5lc3RpbWF0ZVNpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gJiYgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eElEKCksXG4gICAgICB0eXBlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udHlwZT8udG9TdHJpbmcoKSxcbiAgICAgIGZyb206IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbS5wdWJsaWNLZXkpLFxuICAgICAgZmVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmVlLFxuICAgICAgZmlyc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZpcnN0Um91bmQsXG4gICAgICBsYXN0Um91bmQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5sYXN0Um91bmQsXG4gICAgICBub3RlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm90ZSxcbiAgICAgIHRva2VuSWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbj8uYXNzZXRJbmRleCxcbiAgICAgIGdlbmVzaXNJRDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmdlbmVzaXNJRCxcbiAgICAgIGdlbmVzaXNIYXNoOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0hhc2gudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvKSB7XG4gICAgICByZXN1bHQuY2xvc2VSZW1haW5kZXJUbyA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uY2xvc2VSZW1haW5kZXJUby5wdWJsaWNLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgcmVzdWx0LnRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub25QYXJ0aWNpcGF0aW9uKSB7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICByZXN1bHQuc2VsZWN0aW9uS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIHJlc3VsdC52b3RlRmlyc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUZpcnN0O1xuICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5RGlsdXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm5vblBhcnRpY2lwYXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm9uUGFydGljaXBhdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdC50eXBlID09PSAnYXhmZXInICYmIHJlc3VsdC50byAmJiByZXN1bHQuYW1vdW50KSB7XG4gICAgICByZXN1bHQudHhUeXBlID0gdXRpbHMuZ2V0VG9rZW5UeFR5cGUocmVzdWx0LmFtb3VudCwgcmVzdWx0LmZyb20sIHJlc3VsdC50bywgcmVzdWx0LmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgcmVzdWx0LnRva2VuTmFtZSA9IHRoaXMuX2NvaW5Db25maWcuc3VmZml4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20ucHVibGljS2V5KSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG59XG4iXX0=
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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VyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2I7b0JBQ0UsT0FBTyxFQUFFLGlCQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNwRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQXRRRCxDQUFpQywwQkFBZSxHQXNRL0M7QUF0UVksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZEtleSwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9hbGdvVHJhbnNhY3Rpb24/OiBhbGdvc2RrLlRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduZWRUcmFuc2FjdGlvbj86IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgX251bWJlck9mUmVxdWlyZWRTaWduZXJzOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlbmRlcjogc3RyaW5nO1xuICBwcml2YXRlIF9zaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfc2lnbmVkQnk6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPSAwO1xuICAgIHRoaXMuX3NpZ25lcnMgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICBjb25zdCBhZGRyID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKGFkZHIgPT09IHRoaXMuX3NlbmRlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VuZGVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICB0aGlzLnNpZ25TaW5nbGUoa2V5UGFpclswXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA+IDEpIHtcbiAgICAgIHRoaXMuc2lnbk11bHRpU2lnKGtleVBhaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduU2luZ2xlKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzaWduS2V5ID0gQnVmZmVyLmZyb20oa2V5UGFpci5nZXRTaWduaW5nS2V5KCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAoc2lnbktleSkge1xuICAgICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBhbGdvc2RrLnNpZ25UcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIHV0aWxzLnRvVWludDhBcnJheShzaWduS2V5KSkuYmxvYjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ1ByaXZhdGUga2V5IHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBtdWx0aXNpZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lcnMga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2lnbk11bHRpU2lnKGtleVBhaXI6IEtleVBhaXJbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVycyBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBpZiAoa2V5UGFpci5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0tleXBhaXIgbm90IHNwZWNpZmllZCBmb3IgbXVsdGlzaWcnKTtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlTaWdPcHRpb25zID0ge1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMsXG4gICAgICBhZGRyczogdGhpcy5fc2lnbmVycyxcbiAgICB9O1xuICAgIGNvbnN0IG1zaWdBZGRyZXNzID0gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3MobXVsdGlTaWdPcHRpb25zKTtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbSA9IGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhtc2lnQWRkcmVzcyk7XG5cbiAgICAvLyBDaGVjayBpZiBpdCBpcyBhIHNpZ25lZCBvciB1bnNpZ25lZCB0eC5cbiAgICAvLyBJZiB1bnNpZ25lZCwgc2lnbiBpdCB1c2luZyBmaXJzdCBrZXlwYWlyIGFuZCB0aGVuIGFwcGVuZCBuZXh0IHNpZ25hdHVyZXMuXG4gICAgLy8gSWYgc2lnbmVkLCBhcHBlbmRpbmcgbmV4dCBzaWduYXR1cmVzLlxuICAgIGxldCBzaWduZWRUeCA9IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA/IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA6IGFsZ29zZGsuc2lnbk11bHRpc2lnVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uLCBtdWx0aVNpZ09wdGlvbnMsIGtleVBhaXIuc2hpZnQoKSEuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuXG4gICAga2V5UGFpci5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgc2lnbmVkVHggPSBhbGdvc2RrLmFwcGVuZFNpZ25NdWx0aXNpZ1RyYW5zYWN0aW9uKHNpZ25lZFR4LCBtdWx0aVNpZ09wdGlvbnMsIGtwLmdldFNpZ25pbmdLZXkoKSkuYmxvYjtcbiAgICB9KTtcbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuICB9XG5cbiAgc2V0IHNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSkge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhuO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mUmVxdWlyZWRTaWduZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG51bWJlciBvZiBzaWduZXJzIHJlcXVpcmVkIGZvciBzaWduaW5nIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gVGhyZXNob2xkIG51bWJlciBvZiBzaWduZXJzLlxuICAgKi9cbiAgc2V0TnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMobnVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IG51bTtcbiAgfVxuXG4gIHNldCBzaWduZXJzKGFkZHJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpZ25lcnMgPSBhZGRycztcbiAgfVxuXG4gIGdldCBzaWduZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVycztcbiAgfVxuXG4gIHNldCBzaWduZWRCeShzaWduZXI6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVkQnkgPSBzaWduZXI7XG4gIH1cblxuICBnZXQgc2lnbmVkQnkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7YWxnb3Nkay5UcmFuc2FjdGlvbn0gdHhcbiAgICovXG5cbiAgc2V0QWxnb1RyYW5zYWN0aW9uKHR4OiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVuZGVybGF5aW5nIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHthbGdvc2RrLlRyYW5zYWN0aW9ufVxuICAgKi9cblxuICBnZXRBbGdvVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGVzdGltYXRlU2l6ZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5lc3RpbWF0ZVNpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gJiYgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eElEKCksXG4gICAgICB0eXBlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udHlwZT8udG9TdHJpbmcoKSxcbiAgICAgIGZyb206IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbS5wdWJsaWNLZXkpLFxuICAgICAgZmVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmVlLFxuICAgICAgZmlyc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZpcnN0Um91bmQsXG4gICAgICBsYXN0Um91bmQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5sYXN0Um91bmQsXG4gICAgICBub3RlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm90ZSxcbiAgICAgIHRva2VuSWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbj8uYXNzZXRJbmRleCxcbiAgICAgIGdlbmVzaXNJRDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmdlbmVzaXNJRCxcbiAgICAgIGdlbmVzaXNIYXNoOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0hhc2gudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvKSB7XG4gICAgICByZXN1bHQuY2xvc2VSZW1haW5kZXJUbyA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uY2xvc2VSZW1haW5kZXJUby5wdWJsaWNLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgcmVzdWx0LnRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub25QYXJ0aWNpcGF0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleSAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zZWxlY3Rpb25LZXkgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUZpcnN0ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVMYXN0ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXlEaWx1dGlvblxuICAgICAgICApIHtcbiAgICAgICAgICByZXN1bHQudm90ZUtleSA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICByZXN1bHQuc2VsZWN0aW9uS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgICAgcmVzdWx0LnZvdGVGaXJzdCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlRmlyc3Q7XG4gICAgICAgICAgcmVzdWx0LnZvdGVMYXN0ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVMYXN0O1xuICAgICAgICAgIHJlc3VsdC52b3RlS2V5RGlsdXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQubm9uUGFydGljaXBhdGlvbiA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub25QYXJ0aWNpcGF0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzdWx0LnR5cGUgPT09ICdheGZlcicgJiYgcmVzdWx0LnRvICYmIHJlc3VsdC5hbW91bnQpIHtcbiAgICAgIHJlc3VsdC50eFR5cGUgPSB1dGlscy5nZXRUb2tlblR4VHlwZShyZXN1bHQuYW1vdW50LCByZXN1bHQuZnJvbSwgcmVzdWx0LnRvLCByZXN1bHQuY2xvc2VSZW1haW5kZXJUbyk7XG4gICAgICByZXN1bHQudG9rZW5OYW1lID0gdGhpcy5fY29pbkNvbmZpZy5zdWZmaXg7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgdGhpcy5fb3V0cHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24udG8ucHVibGljS2V5KSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbS5wdWJsaWNLZXkpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":"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"}