@bitgo/sdk-coin-flrp 1.7.2 → 1.9.0

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 (55) hide show
  1. package/dist/src/flrp.d.ts +8 -0
  2. package/dist/src/flrp.d.ts.map +1 -1
  3. package/dist/src/flrp.js +43 -1
  4. package/dist/src/lib/ExportInPTxBuilder.d.ts +14 -1
  5. package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
  6. package/dist/src/lib/ExportInPTxBuilder.js +62 -20
  7. package/dist/src/lib/ImportInCTxBuilder.d.ts +0 -1
  8. package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
  9. package/dist/src/lib/ImportInCTxBuilder.js +23 -17
  10. package/dist/src/lib/ImportInPTxBuilder.d.ts +0 -10
  11. package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
  12. package/dist/src/lib/ImportInPTxBuilder.js +22 -30
  13. package/dist/src/lib/atomicTransactionBuilder.d.ts +29 -27
  14. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/atomicTransactionBuilder.js +89 -58
  16. package/dist/src/lib/iface.d.ts +12 -2
  17. package/dist/src/lib/iface.d.ts.map +1 -1
  18. package/dist/src/lib/iface.js +1 -1
  19. package/dist/src/lib/index.d.ts +1 -0
  20. package/dist/src/lib/index.d.ts.map +1 -1
  21. package/dist/src/lib/index.js +4 -2
  22. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts +108 -0
  23. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/permissionlessDelegatorTxBuilder.js +268 -0
  25. package/dist/src/lib/transaction.d.ts.map +1 -1
  26. package/dist/src/lib/transaction.js +42 -11
  27. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
  28. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  29. package/dist/src/lib/transactionBuilderFactory.js +14 -1
  30. package/dist/src/lib/utils.d.ts +31 -0
  31. package/dist/src/lib/utils.d.ts.map +1 -1
  32. package/dist/src/lib/utils.js +65 -3
  33. package/dist/test/resources/account.d.ts +21 -0
  34. package/dist/test/resources/account.d.ts.map +1 -1
  35. package/dist/test/resources/account.js +23 -2
  36. package/dist/test/resources/transactionData/delegatorTx.d.ts +83 -0
  37. package/dist/test/resources/transactionData/delegatorTx.d.ts.map +1 -0
  38. package/dist/test/resources/transactionData/delegatorTx.js +77 -0
  39. package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
  40. package/dist/test/resources/transactionData/exportInP.js +5 -6
  41. package/dist/test/resources/transactionData/importInC.js +5 -5
  42. package/dist/test/resources/transactionData/importInP.js +5 -5
  43. package/dist/test/unit/flrp.js +74 -3
  44. package/dist/test/unit/lib/exportInPTxBuilder.js +144 -34
  45. package/dist/test/unit/lib/importInCTxBuilder.js +51 -74
  46. package/dist/test/unit/lib/importInPTxBuilder.js +48 -182
  47. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts +2 -0
  48. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  49. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.js +235 -0
  50. package/dist/test/unit/lib/utils.js +92 -1
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +8 -8
  53. package/dist/test/unit/lib/signatureIndex.d.ts +0 -13
  54. package/dist/test/unit/lib/signatureIndex.d.ts.map +0 -1
  55. package/dist/test/unit/lib/signatureIndex.js +0 -843
@@ -86,35 +86,78 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
86
86
  this.transaction._amount = valueBigInt;
87
87
  return this;
88
88
  }
89
+ /*
90
+ * Key naming:
91
+ * A = user key, B = hsm key (BitGo), C = backup key
92
+ *
93
+ * _fromAddresses (BitGo convention) = [ A, B, C ] at indices [0, 1, 2]
94
+ *
95
+ * Signing key selection (which keys from _fromAddresses to use):
96
+ * - non-recovery: _fromAddresses[0] + _fromAddresses[1] (user + bitgo)
97
+ * - recovery: _fromAddresses[1] + _fromAddresses[2] (bitgo + backup)
98
+ *
99
+ * sigIndices in transaction (positions in sorted UTXO address list):
100
+ * - UTXO addresses are sorted by hex value on-chain
101
+ * - sigIndices = positions of the 2 signing keys in this sorted list
102
+ * - Example: if user sorts to position 2 and bitgo to position 0,
103
+ * then sigIndices = [0, 2] (even though we picked _fromAddresses[0, 1])
104
+ */
89
105
  /**
90
- * Compute addressesIndex for UTXOs following AVAX P approach.
91
- * addressesIndex[senderIdx] = position of sender[senderIdx] in UTXO's address list
106
+ * Get the 2 signing addresses for FlareJS transaction building.
107
+ *
108
+ * FlareJS's matchOwners() selects signers in sorted UTXO address order,
109
+ * not based on which keys should actually sign. By passing only 2 addresses,
110
+ * we ensure the correct signers are selected.
92
111
  *
93
- * Example:
94
- * A = user key, B = hsm key, C = backup key
95
- * sender (bitgoAddresses) = [ A, B, C ]
96
- * utxo.addresses (IMS addresses) = [ B, C, A ]
97
- * addressesIndex = [ 2, 0, 1 ]
98
- * (sender[0]=A is at position 2 in UTXO, sender[1]=B is at position 0, etc.)
112
+ * This mirrors AVAXP's approach in createInputOutput() where:
113
+ * - For non-recovery: use user (index 0) and bitgo (index 1)
114
+ * - For recovery: use bitgo (index 1) and recovery (index 2)
99
115
  *
116
+ * @returns Array of 2 signing address buffers
100
117
  * @protected
101
118
  */
102
- computeAddressesIndex() {
119
+ getSigningAddresses() {
120
+ const firstIndex = this.recoverSigner ? 2 : 0;
121
+ const bitgoIndex = 1;
122
+ if (this.transaction._fromAddresses.length < Math.max(firstIndex, bitgoIndex) + 1) {
123
+ throw new sdk_core_1.BuildTransactionError(`Insufficient fromAddresses: need at least ${Math.max(firstIndex, bitgoIndex) + 1} addresses`);
124
+ }
125
+ const signingAddresses = [
126
+ Buffer.from(this.transaction._fromAddresses[firstIndex]),
127
+ Buffer.from(this.transaction._fromAddresses[bitgoIndex]),
128
+ ];
129
+ const invalidAddr = signingAddresses.find((addr) => addr.length !== 20);
130
+ if (invalidAddr) {
131
+ throw new sdk_core_1.BuildTransactionError(`Invalid signing address length: expected 20 bytes, got ${invalidAddr.length}`);
132
+ }
133
+ return signingAddresses;
134
+ }
135
+ /**
136
+ * Compute addressesIndex for UTXOs.
137
+ * addressesIndex[senderIdx] = position of sender[senderIdx] in UTXO's sorted address list.
138
+ *
139
+ * UTXO addresses are sorted lexicographically by byte value to match on-chain storage order.
140
+ * @param forceRecompute - If true, recompute even if addressesIndex already exists
141
+ * @protected
142
+ */
143
+ computeAddressesIndex(forceRecompute = false) {
103
144
  const sender = this.transaction._fromAddresses;
145
+ if (!sender || sender.length === 0)
146
+ return;
104
147
  this.transaction._utxos.forEach((utxo) => {
105
- if (utxo.addressesIndex && utxo.addressesIndex.length > 0) {
148
+ if (!forceRecompute && utxo.addressesIndex && utxo.addressesIndex.length > 0) {
106
149
  return;
107
150
  }
108
151
  if (utxo.addresses && utxo.addresses.length > 0) {
109
- const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
152
+ const sortedAddresses = utils_1.default.sortAddressesByHex(utxo.addresses);
153
+ utxo.addresses = sortedAddresses;
154
+ const utxoAddresses = sortedAddresses.map((a) => utils_1.default.parseAddress(a));
110
155
  utxo.addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
111
156
  }
112
157
  });
113
158
  }
114
159
  /**
115
160
  * Validate UTXOs have consistent addresses.
116
- * Note: UTXO threshold can differ from transaction threshold - each UTXO has its own
117
- * signature requirement based on how it was created (e.g., change outputs may have threshold=1).
118
161
  * @protected
119
162
  */
120
163
  validateUtxoAddresses() {
@@ -125,51 +168,42 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
125
168
  if (utxo.addressesIndex?.includes(-1)) {
126
169
  throw new sdk_core_1.BuildTransactionError('Addresses are inconsistent: ' + utxo.txid);
127
170
  }
128
- if (utxo.threshold !== undefined && utxo.threshold <= 0) {
129
- throw new sdk_core_1.BuildTransactionError('UTXO threshold must be positive: ' + utxo.txid);
130
- }
131
171
  });
132
172
  }
133
173
  /**
134
- * Create credential with dynamic ordering based on addressesIndex from UTXO.
135
- * Matches AVAX P behavior: signature order depends on UTXO address positions.
136
- *
137
- * addressesIndex[senderIdx] = utxoPosition tells us where each sender is in the UTXO.
138
- * We create signature slots ordered by utxoPosition (smaller position = earlier slot).
174
+ * Create credential for a UTXO following AVAX P approach.
175
+ * Embed user/recovery address, leave BitGo slot empty.
176
+ * Signing order is guaranteed: user signs first (address match), BitGo signs second (empty slot).
139
177
  *
140
178
  * @param utxo - The UTXO to create credential for
141
- * @param threshold - Number of signatures required for this specific UTXO
142
- * @returns Credential with empty signatures ordered based on UTXO positions
179
+ * @param threshold - Number of signatures required
180
+ * @param sigIndices - Optional sigIndices from FlareJS (if not provided, derived from addressesIndex)
143
181
  * @protected
144
182
  */
145
- createCredentialForUtxo(utxo, threshold) {
183
+ createCredentialForUtxo(utxo, threshold, sigIndices) {
146
184
  const sender = this.transaction._fromAddresses;
147
185
  const addressesIndex = utxo.addressesIndex ?? [];
148
- // either user (0) or recovery (2)
149
186
  const firstIndex = this.recoverSigner ? 2 : 0;
150
187
  const bitgoIndex = 1;
151
188
  if (threshold === 1) {
152
- if (sender && sender.length > firstIndex && addressesIndex[firstIndex] !== undefined) {
189
+ if (sender && sender.length > firstIndex) {
153
190
  return new flarejs_1.Credential([utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex'))]);
154
191
  }
155
192
  return new flarejs_1.Credential([utils_1.default.createNewSig('')]);
156
193
  }
157
- // If we have valid addressesIndex, use it to determine signature order
158
- // addressesIndex[senderIdx] = position in UTXO
159
- // Smaller position = earlier slot in signature array
160
194
  if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
161
- let emptySignatures;
162
- if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
163
- emptySignatures = [
164
- utils_1.default.createNewSig(''),
165
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
166
- ];
167
- }
168
- else {
169
- emptySignatures = [
170
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
171
- utils_1.default.createNewSig(''),
172
- ];
195
+ const effectiveSigIndices = sigIndices && sigIndices.length >= 2
196
+ ? sigIndices
197
+ : [addressesIndex[firstIndex], addressesIndex[bitgoIndex]].sort((a, b) => a - b);
198
+ const emptySignatures = [];
199
+ for (const sigIdx of effectiveSigIndices) {
200
+ const senderIdx = addressesIndex.findIndex((utxoPos) => utxoPos === sigIdx);
201
+ if (senderIdx === firstIndex) {
202
+ emptySignatures.push(utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')));
203
+ }
204
+ else {
205
+ emptySignatures.push(utils_1.default.createNewSig(''));
206
+ }
173
207
  }
174
208
  return new flarejs_1.Credential(emptySignatures);
175
209
  }
@@ -180,18 +214,14 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
180
214
  return new flarejs_1.Credential(emptySignatures);
181
215
  }
182
216
  /**
183
- * Create AddressMap based on addressesIndex following AVAX P approach.
184
- * Maps each sender address to its signature slot based on UTXO position ordering.
185
- *
186
- * addressesIndex[senderIdx] = utxoPosition
187
- * Signature slots are ordered by utxoPosition (smaller = earlier slot).
217
+ * Create AddressMap for a UTXO following AVAX P approach.
188
218
  *
189
219
  * @param utxo - The UTXO to create AddressMap for
190
- * @param threshold - Number of signatures required for this specific UTXO
191
- * @returns AddressMap that maps addresses to signature slots based on UTXO order
220
+ * @param threshold - Number of signatures required
221
+ * @param sigIndices - Optional sigIndices from FlareJS (if not provided, derived from addressesIndex)
192
222
  * @protected
193
223
  */
194
- createAddressMapForUtxo(utxo, threshold) {
224
+ createAddressMapForUtxo(utxo, threshold, sigIndices) {
195
225
  const addressMap = new flarejs_1.utils.AddressMap();
196
226
  const sender = this.transaction._fromAddresses;
197
227
  const addressesIndex = utxo.addressesIndex ?? [];
@@ -207,14 +237,15 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
207
237
  return addressMap;
208
238
  }
209
239
  if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
210
- if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
211
- addressMap.set(new flarejs_1.Address(sender[bitgoIndex]), 0);
212
- addressMap.set(new flarejs_1.Address(sender[firstIndex]), 1);
213
- }
214
- else {
215
- addressMap.set(new flarejs_1.Address(sender[firstIndex]), 0);
216
- addressMap.set(new flarejs_1.Address(sender[bitgoIndex]), 1);
217
- }
240
+ const effectiveSigIndices = sigIndices && sigIndices.length >= 2
241
+ ? sigIndices
242
+ : [addressesIndex[firstIndex], addressesIndex[bitgoIndex]].sort((a, b) => a - b);
243
+ effectiveSigIndices.forEach((sigIdx, slotIdx) => {
244
+ const senderIdx = addressesIndex.findIndex((utxoPos) => utxoPos === sigIdx);
245
+ if (senderIdx === bitgoIndex || senderIdx === firstIndex) {
246
+ addressMap.set(new flarejs_1.Address(sender[senderIdx]), slotIdx);
247
+ }
248
+ });
218
249
  return addressMap;
219
250
  }
220
251
  if (sender && sender.length >= threshold) {
@@ -226,4 +257,4 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
226
257
  }
227
258
  }
228
259
  exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOENBQXlFO0FBQ3pFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFDNUMsbURBQWlGO0FBR2pGLG9EQUE0QjtBQUU1QixNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFJdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUk5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBU0Q7Ozs7O09BS0c7SUFDSCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFD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LEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQXRQRCw0REFzUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENyZWRlbnRpYWwsIEFkZHJlc3MsIHV0aWxzIGFzIEZsYXJlVXRpbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZscnBGZWVTdGF0ZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIHJlY292ZXJTaWduZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMuZml4ZWRGZWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGF3YWl0IHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBGbGFyZSB0cmFuc2FjdGlvbi4gVHJhbnNhY3Rpb24gZmllbGQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBGZWUgaXMgZml4IGZvciBBVk0gYXRvbWljIHR4LlxuICAgKlxuICAgKiBAcmV0dXJucyBuZXR3b3JrLnR4RmVlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZml4ZWRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGNoYWluIGlzIHRoZSBvbmUgc2V0IGZvciB0aGUgY29pbiBpbiBjb2luQ29uZmlnLm5ldHdvcmsuIFRoZSBleHRlcm5hbCBjaGFpbiBpcyB0aGUgb3RoZXIgY2hhaW4gaW52b2x2ZWQuXG4gICAqIFRoZSBleHRlcm5hbCBjaGFpbiBpZCBpcyB0aGUgc291cmNlIG9uIGltcG9ydCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9uIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluSWQgLSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2hhaW5cbiAgICovXG4gIGV4dGVybmFsQ2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCBCdWZmZXIpOiB0aGlzIHtcbiAgICBjb25zdCBuZXdUYXJnZXRDaGFpbklkID0gdHlwZW9mIGNoYWluSWQgPT09ICdzdHJpbmcnID8gdXRpbHMuY2I1OERlY29kZShjaGFpbklkKSA6IEJ1ZmZlci5mcm9tKGNoYWluSWQpO1xuICAgIHRoaXMudmFsaWRhdGVDaGFpbklkKG5ld1RhcmdldENoYWluSWQpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IG5ld1RhcmdldENoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBiaWdpbnR9IGZlZVZhbHVlIC0gdGhlIGZlZSB2YWx1ZVxuICAgKi9cbiAgZmVlKGZlZVZhbHVlOiBzdHJpbmcgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCBmZWUgPSB0eXBlb2YgZmVlVmFsdWUgPT09ICdzdHJpbmcnID8gZmVlVmFsdWUgOiBmZWVWYWx1ZS50b1N0cmluZygpO1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fZmVlLmZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBzdGF0ZSBmb3IgZHluYW1pYyBmZWUgY2FsY3VsYXRpb24gKFAtY2hhaW4gdHJhbnNhY3Rpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge0ZscnBGZWVTdGF0ZX0gc3RhdGUgLSB0aGUgZmVlIHN0YXRlIGZyb20gdGhlIG5ldHdvcmtcbiAgICovXG4gIGZlZVN0YXRlKHN0YXRlOiBGbHJwRmVlU3RhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWVTdGF0ZSA9IHN0YXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnQgfCBzdHJpbmd9IHZhbHVlIC0gdGhlIGFtb3VudCB0byB0cmFuc2ZlclxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBCaWdJbnQodmFsdWUpIDogdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBhZGRyZXNzZXNJbmRleCBmb3IgVVRYT3MgZm9sbG93aW5nIEFWQVggUCBhcHByb2FjaC5cbiAgICogYWRkcmVzc2VzSW5kZXhbc2VuZGVySWR4XSA9IHBvc2l0aW9uIG9mIHNlbmRlcltzZW5kZXJJZHhdIGluIFVUWE8ncyBhZGRyZXNzIGxpc3RcbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogICBBID0gdXNlciBrZXksIEIgPSBoc20ga2V5LCBDID0gYmFja3VwIGtleVxuICAgKiAgIHNlbmRlciAoYml0Z29BZGRyZXNzZXMpID0gWyBBLCBCLCBDIF1cbiAgICogICB1dHhvLmFkZHJlc3NlcyAoSU1TIGFkZHJlc3NlcykgPSBbIEIsIEMsIEEgXVxuICAgKiAgIGFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICogICAoc2VuZGVyWzBdPUEgaXMgYXQgcG9zaXRpb24gMiBpbiBVVFhPLCBzZW5kZXJbMV09QiBpcyBhdCBwb3NpdGlvbiAwLCBldGMuKVxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY29tcHV0ZUFkZHJlc3Nlc0luZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleCAmJiB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXR4by5hZGRyZXNzZXMgJiYgdXR4by5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB1dHhvQWRkcmVzc2VzID0gdXR4by5hZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gc2VuZGVyLm1hcCgoYSkgPT5cbiAgICAgICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBVVFhPcyBoYXZlIGNvbnNpc3RlbnQgYWRkcmVzc2VzLlxuICAgKiBOb3RlOiBVVFhPIHRocmVzaG9sZCBjYW4gZGlmZmVyIGZyb20gdHJhbnNhY3Rpb24gdGhyZXNob2xkIC0gZWFjaCBVVFhPIGhhcyBpdHMgb3duXG4gICAqIHNpZ25hdHVyZSByZXF1aXJlbWVudCBiYXNlZCBvbiBob3cgaXQgd2FzIGNyZWF0ZWQgKGUuZy4sIGNoYW5nZSBvdXRwdXRzIG1heSBoYXZlIHRocmVzaG9sZD0xKS5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVXR4b0FkZHJlc3NlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAoIXV0eG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVXR4byBpcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQ6ICcgKyB1dHhvLnR4aWQpO1xuICAgICAgfVxuICAgICAgaWYgKHV0eG8udGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdXR4by50aHJlc2hvbGQgPD0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPIHRocmVzaG9sZCBtdXN0IGJlIHBvc2l0aXZlOiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY3JlZGVudGlhbCB3aXRoIGR5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXggZnJvbSBVVFhPLlxuICAgKiBNYXRjaGVzIEFWQVggUCBiZWhhdmlvcjogc2lnbmF0dXJlIG9yZGVyIGRlcGVuZHMgb24gVVRYTyBhZGRyZXNzIHBvc2l0aW9ucy5cbiAgICpcbiAgICogYWRkcmVzc2VzSW5kZXhbc2VuZGVySWR4XSA9IHV0eG9Qb3NpdGlvbiB0ZWxscyB1cyB3aGVyZSBlYWNoIHNlbmRlciBpcyBpbiB0aGUgVVRYTy5cbiAgICogV2UgY3JlYXRlIHNpZ25hdHVyZSBzbG90cyBvcmRlcmVkIGJ5IHV0eG9Qb3NpdGlvbiAoc21hbGxlciBwb3NpdGlvbiA9IGVhcmxpZXIgc2xvdCkuXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIGNyZWRlbnRpYWwgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBVVFhPXG4gICAqIEByZXR1cm5zIENyZWRlbnRpYWwgd2l0aCBlbXB0eSBzaWduYXR1cmVzIG9yZGVyZWQgYmFzZWQgb24gVVRYTyBwb3NpdGlvbnNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG86IERlY29kZWRVdHhvT2JqLCB0aHJlc2hvbGQ6IG51bWJlcik6IENyZWRlbnRpYWwge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIGlmICh0aHJlc2hvbGQgPT09IDEpIHtcbiAgICAgIGlmIChzZW5kZXIgJiYgc2VuZGVyLmxlbmd0aCA+IGZpcnN0SW5kZXggJiYgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZU5ld1NpZygnJyldKTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHZhbGlkIGFkZHJlc3Nlc0luZGV4LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHNpZ25hdHVyZSBvcmRlclxuICAgIC8vIGFkZHJlc3Nlc0luZGV4W3NlbmRlcklkeF0gPSBwb3NpdGlvbiBpbiBVVFhPXG4gICAgLy8gU21hbGxlciBwb3NpdGlvbiA9IGVhcmxpZXIgc2xvdCBpbiBzaWduYXR1cmUgYXJyYXlcbiAgICBpZiAoYWRkcmVzc2VzSW5kZXgubGVuZ3RoID49IDIgJiYgc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBsZXQgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W107XG5cbiAgICAgIGlmIChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSA8IGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdKSB7XG4gICAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgICB1dGlscy5jcmVhdGVOZXdTaWcoJycpLFxuICAgICAgICAgIHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpLFxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW1wdHlTaWduYXR1cmVzID0gW1xuICAgICAgICAgIHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpLFxuICAgICAgICAgIHV0aWxzLmNyZWF0ZU5ld1NpZygnJyksXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbXB0eVNpZ25hdHVyZXM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhyZXNob2xkOyBpKyspIHtcbiAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWRkcmVzc01hcCBiYXNlZCBvbiBhZGRyZXNzZXNJbmRleCBmb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoLlxuICAgKiBNYXBzIGVhY2ggc2VuZGVyIGFkZHJlc3MgdG8gaXRzIHNpZ25hdHVyZSBzbG90IGJhc2VkIG9uIFVUWE8gcG9zaXRpb24gb3JkZXJpbmcuXG4gICAqXG4gICAqIGFkZHJlc3Nlc0luZGV4W3NlbmRlcklkeF0gPSB1dHhvUG9zaXRpb25cbiAgICogU2lnbmF0dXJlIHNsb3RzIGFyZSBvcmRlcmVkIGJ5IHV0eG9Qb3NpdGlvbiAoc21hbGxlciA9IGVhcmxpZXIgc2xvdCkuXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIEFkZHJlc3NNYXAgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBVVFhPXG4gICAqIEByZXR1cm5zIEFkZHJlc3NNYXAgdGhhdCBtYXBzIGFkZHJlc3NlcyB0byBzaWduYXR1cmUgc2xvdHMgYmFzZWQgb24gVVRYTyBvcmRlclxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bzogRGVjb2RlZFV0eG9PYmosIHRocmVzaG9sZDogbnVtYmVyKTogRmxhcmVVdGlscy5BZGRyZXNzTWFwIHtcbiAgICBjb25zdCBhZGRyZXNzTWFwID0gbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcCgpO1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuXG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMSkge1xuICAgICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID4gZmlyc3RJbmRleCkge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbZmlyc3RJbmRleF0pLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlclswXSksIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKGFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+PSAyICYmIHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2JpdGdvSW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltmaXJzdEluZGV4XSksIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2ZpcnN0SW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltiaXRnb0luZGV4XSksIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgc2VuZGVyLnNsaWNlKDAsIHRocmVzaG9sZCkuZm9yRWFjaCgoYWRkciwgaSkgPT4ge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhhZGRyKSwgaSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkcmVzc01hcDtcbiAgfVxufVxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOENBQXlFO0FBQ3pFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFDNUMsbURBQWlGO0FBR2pGLG9EQUE0QjtBQUU1QixNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFJdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUk5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBU0Q7Ozs7O09BS0c7SUFDSCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxlQUFnQztRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxRQUF5QjtRQUMzQixNQUFNLEdBQUcsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxXQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBbUI7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBc0I7UUFDM0IsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFFSDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ08sbUJBQW1CO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsRixNQUFNLElBQUksZ0NBQXFCLENBQzdCLDZDQUE2QyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FDOUYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6RCxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDBEQUEwRCxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNsSCxDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLHFCQUFxQixDQUFDLGNBQWMsR0FBRyxLQUFLO1FBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUUzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLGVBQWUsR0FBRyxlQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQztnQkFFakMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNPLHFCQUFxQjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTyx1QkFBdUIsQ0FBQyxJQUFvQixFQUFFLFNBQWlCLEVBQUUsVUFBcUI7UUFDOUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxvQkFBVSxDQUFDLENBQUMsZUFBSyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLENBQUM7WUFDRCxPQUFPLElBQUksb0JBQVUsQ0FBQyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sbUJBQW1CLEdBQ3ZCLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFckYsTUFBTSxlQUFlLEdBQTRDLEVBQUUsQ0FBQztZQUNwRSxLQUFLLE1BQU0sTUFBTSxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzdCLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBSyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekcsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxvQkFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBNEMsRUFBRSxDQUFDO1FBQ3BFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLG9CQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyx1QkFBdUIsQ0FDL0IsSUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsVUFBcUI7UUFFckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQ3pDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7aUJBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sbUJBQW1CLEdBQ3ZCLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFckYsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM5QyxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQzVFLElBQUksU0FBUyxLQUFLLFVBQVUsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3pELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQWxTRCw0REFrU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENyZWRlbnRpYWwsIEFkZHJlc3MsIHV0aWxzIGFzIEZsYXJlVXRpbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZscnBGZWVTdGF0ZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIHJlY292ZXJTaWduZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMuZml4ZWRGZWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGF3YWl0IHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBGbGFyZSB0cmFuc2FjdGlvbi4gVHJhbnNhY3Rpb24gZmllbGQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBGZWUgaXMgZml4IGZvciBBVk0gYXRvbWljIHR4LlxuICAgKlxuICAgKiBAcmV0dXJucyBuZXR3b3JrLnR4RmVlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZml4ZWRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGNoYWluIGlzIHRoZSBvbmUgc2V0IGZvciB0aGUgY29pbiBpbiBjb2luQ29uZmlnLm5ldHdvcmsuIFRoZSBleHRlcm5hbCBjaGFpbiBpcyB0aGUgb3RoZXIgY2hhaW4gaW52b2x2ZWQuXG4gICAqIFRoZSBleHRlcm5hbCBjaGFpbiBpZCBpcyB0aGUgc291cmNlIG9uIGltcG9ydCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9uIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluSWQgLSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2hhaW5cbiAgICovXG4gIGV4dGVybmFsQ2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCBCdWZmZXIpOiB0aGlzIHtcbiAgICBjb25zdCBuZXdUYXJnZXRDaGFpbklkID0gdHlwZW9mIGNoYWluSWQgPT09ICdzdHJpbmcnID8gdXRpbHMuY2I1OERlY29kZShjaGFpbklkKSA6IEJ1ZmZlci5mcm9tKGNoYWluSWQpO1xuICAgIHRoaXMudmFsaWRhdGVDaGFpbklkKG5ld1RhcmdldENoYWluSWQpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IG5ld1RhcmdldENoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBiaWdpbnR9IGZlZVZhbHVlIC0gdGhlIGZlZSB2YWx1ZVxuICAgKi9cbiAgZmVlKGZlZVZhbHVlOiBzdHJpbmcgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCBmZWUgPSB0eXBlb2YgZmVlVmFsdWUgPT09ICdzdHJpbmcnID8gZmVlVmFsdWUgOiBmZWVWYWx1ZS50b1N0cmluZygpO1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fZmVlLmZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBzdGF0ZSBmb3IgZHluYW1pYyBmZWUgY2FsY3VsYXRpb24gKFAtY2hhaW4gdHJhbnNhY3Rpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge0ZscnBGZWVTdGF0ZX0gc3RhdGUgLSB0aGUgZmVlIHN0YXRlIGZyb20gdGhlIG5ldHdvcmtcbiAgICovXG4gIGZlZVN0YXRlKHN0YXRlOiBGbHJwRmVlU3RhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWVTdGF0ZSA9IHN0YXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnQgfCBzdHJpbmd9IHZhbHVlIC0gdGhlIGFtb3VudCB0byB0cmFuc2ZlclxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBCaWdJbnQodmFsdWUpIDogdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKlxuICAgKiBLZXkgbmFtaW5nOlxuICAgKiAgIEEgPSB1c2VyIGtleSwgQiA9IGhzbSBrZXkgKEJpdEdvKSwgQyA9IGJhY2t1cCBrZXlcbiAgICpcbiAgICogX2Zyb21BZGRyZXNzZXMgKEJpdEdvIGNvbnZlbnRpb24pID0gWyBBLCBCLCBDIF0gYXQgaW5kaWNlcyBbMCwgMSwgMl1cbiAgICpcbiAgICogU2lnbmluZyBrZXkgc2VsZWN0aW9uICh3aGljaCBrZXlzIGZyb20gX2Zyb21BZGRyZXNzZXMgdG8gdXNlKTpcbiAgICogICAtIG5vbi1yZWNvdmVyeTogX2Zyb21BZGRyZXNzZXNbMF0gKyBfZnJvbUFkZHJlc3Nlc1sxXSAodXNlciArIGJpdGdvKVxuICAgKiAgIC0gcmVjb3Zlcnk6IF9mcm9tQWRkcmVzc2VzWzFdICsgX2Zyb21BZGRyZXNzZXNbMl0gKGJpdGdvICsgYmFja3VwKVxuICAgKlxuICAgKiBzaWdJbmRpY2VzIGluIHRyYW5zYWN0aW9uIChwb3NpdGlvbnMgaW4gc29ydGVkIFVUWE8gYWRkcmVzcyBsaXN0KTpcbiAgICogICAtIFVUWE8gYWRkcmVzc2VzIGFyZSBzb3J0ZWQgYnkgaGV4IHZhbHVlIG9uLWNoYWluXG4gICAqICAgLSBzaWdJbmRpY2VzID0gcG9zaXRpb25zIG9mIHRoZSAyIHNpZ25pbmcga2V5cyBpbiB0aGlzIHNvcnRlZCBsaXN0XG4gICAqICAgLSBFeGFtcGxlOiBpZiB1c2VyIHNvcnRzIHRvIHBvc2l0aW9uIDIgYW5kIGJpdGdvIHRvIHBvc2l0aW9uIDAsXG4gICAqICAgICB0aGVuIHNpZ0luZGljZXMgPSBbMCwgMl0gKGV2ZW4gdGhvdWdoIHdlIHBpY2tlZCBfZnJvbUFkZHJlc3Nlc1swLCAxXSlcbiAgICovXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgMiBzaWduaW5nIGFkZHJlc3NlcyBmb3IgRmxhcmVKUyB0cmFuc2FjdGlvbiBidWlsZGluZy5cbiAgICpcbiAgICogRmxhcmVKUydzIG1hdGNoT3duZXJzKCkgc2VsZWN0cyBzaWduZXJzIGluIHNvcnRlZCBVVFhPIGFkZHJlc3Mgb3JkZXIsXG4gICAqIG5vdCBiYXNlZCBvbiB3aGljaCBrZXlzIHNob3VsZCBhY3R1YWxseSBzaWduLiBCeSBwYXNzaW5nIG9ubHkgMiBhZGRyZXNzZXMsXG4gICAqIHdlIGVuc3VyZSB0aGUgY29ycmVjdCBzaWduZXJzIGFyZSBzZWxlY3RlZC5cbiAgICpcbiAgICogVGhpcyBtaXJyb3JzIEFWQVhQJ3MgYXBwcm9hY2ggaW4gY3JlYXRlSW5wdXRPdXRwdXQoKSB3aGVyZTpcbiAgICogLSBGb3Igbm9uLXJlY292ZXJ5OiB1c2UgdXNlciAoaW5kZXggMCkgYW5kIGJpdGdvIChpbmRleCAxKVxuICAgKiAtIEZvciByZWNvdmVyeTogdXNlIGJpdGdvIChpbmRleCAxKSBhbmQgcmVjb3ZlcnkgKGluZGV4IDIpXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIDIgc2lnbmluZyBhZGRyZXNzIGJ1ZmZlcnNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFNpZ25pbmdBZGRyZXNzZXMoKTogQnVmZmVyW10ge1xuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCA8IE1hdGgubWF4KGZpcnN0SW5kZXgsIGJpdGdvSW5kZXgpICsgMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEluc3VmZmljaWVudCBmcm9tQWRkcmVzc2VzOiBuZWVkIGF0IGxlYXN0ICR7TWF0aC5tYXgoZmlyc3RJbmRleCwgYml0Z29JbmRleCkgKyAxfSBhZGRyZXNzZXNgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25pbmdBZGRyZXNzZXMgPSBbXG4gICAgICBCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKSxcbiAgICAgIEJ1ZmZlci5mcm9tKHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pLFxuICAgIF07XG5cbiAgICBjb25zdCBpbnZhbGlkQWRkciA9IHNpZ25pbmdBZGRyZXNzZXMuZmluZCgoYWRkcikgPT4gYWRkci5sZW5ndGggIT09IDIwKTtcbiAgICBpZiAoaW52YWxpZEFkZHIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc2lnbmluZyBhZGRyZXNzIGxlbmd0aDogZXhwZWN0ZWQgMjAgYnl0ZXMsIGdvdCAke2ludmFsaWRBZGRyLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmluZ0FkZHJlc3NlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIGFkZHJlc3Nlc0luZGV4IGZvciBVVFhPcy5cbiAgICogYWRkcmVzc2VzSW5kZXhbc2VuZGVySWR4XSA9IHBvc2l0aW9uIG9mIHNlbmRlcltzZW5kZXJJZHhdIGluIFVUWE8ncyBzb3J0ZWQgYWRkcmVzcyBsaXN0LlxuICAgKlxuICAgKiBVVFhPIGFkZHJlc3NlcyBhcmUgc29ydGVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGJ5dGUgdmFsdWUgdG8gbWF0Y2ggb24tY2hhaW4gc3RvcmFnZSBvcmRlci5cbiAgICogQHBhcmFtIGZvcmNlUmVjb21wdXRlIC0gSWYgdHJ1ZSwgcmVjb21wdXRlIGV2ZW4gaWYgYWRkcmVzc2VzSW5kZXggYWxyZWFkeSBleGlzdHNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbXB1dGVBZGRyZXNzZXNJbmRleChmb3JjZVJlY29tcHV0ZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcztcbiAgICBpZiAoIXNlbmRlciB8fCBzZW5kZXIubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAoIWZvcmNlUmVjb21wdXRlICYmIHV0eG8uYWRkcmVzc2VzSW5kZXggJiYgdXR4by5hZGRyZXNzZXNJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHV0eG8uYWRkcmVzc2VzICYmIHV0eG8uYWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc29ydGVkQWRkcmVzc2VzID0gdXRpbHMuc29ydEFkZHJlc3Nlc0J5SGV4KHV0eG8uYWRkcmVzc2VzKTtcbiAgICAgICAgdXR4by5hZGRyZXNzZXMgPSBzb3J0ZWRBZGRyZXNzZXM7XG5cbiAgICAgICAgY29uc3QgdXR4b0FkZHJlc3NlcyA9IHNvcnRlZEFkZHJlc3Nlcy5tYXAoKGEpID0+IHV0aWxzLnBhcnNlQWRkcmVzcyhhKSk7XG4gICAgICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBzZW5kZXIubWFwKChhKSA9PlxuICAgICAgICAgIHV0eG9BZGRyZXNzZXMuZmluZEluZGV4KCh1KSA9PiBCdWZmZXIuY29tcGFyZShCdWZmZXIuZnJvbSh1KSwgQnVmZmVyLmZyb20oYSkpID09PSAwKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIFVUWE9zIGhhdmUgY29uc2lzdGVudCBhZGRyZXNzZXMuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVV0eG9BZGRyZXNzZXMoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleD8uaW5jbHVkZXMoLTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FkZHJlc3NlcyBhcmUgaW5jb25zaXN0ZW50OiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY3JlZGVudGlhbCBmb3IgYSBVVFhPIGZvbGxvd2luZyBBVkFYIFAgYXBwcm9hY2guXG4gICAqIEVtYmVkIHVzZXIvcmVjb3ZlcnkgYWRkcmVzcywgbGVhdmUgQml0R28gc2xvdCBlbXB0eS5cbiAgICogU2lnbmluZyBvcmRlciBpcyBndWFyYW50ZWVkOiB1c2VyIHNpZ25zIGZpcnN0IChhZGRyZXNzIG1hdGNoKSwgQml0R28gc2lnbnMgc2Vjb25kIChlbXB0eSBzbG90KS5cbiAgICpcbiAgICogQHBhcmFtIHV0eG8gLSBUaGUgVVRYTyB0byBjcmVhdGUgY3JlZGVudGlhbCBmb3JcbiAgICogQHBhcmFtIHRocmVzaG9sZCAtIE51bWJlciBvZiBzaWduYXR1cmVzIHJlcXVpcmVkXG4gICAqIEBwYXJhbSBzaWdJbmRpY2VzIC0gT3B0aW9uYWwgc2lnSW5kaWNlcyBmcm9tIEZsYXJlSlMgKGlmIG5vdCBwcm92aWRlZCwgZGVyaXZlZCBmcm9tIGFkZHJlc3Nlc0luZGV4KVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bzogRGVjb2RlZFV0eG9PYmosIHRocmVzaG9sZDogbnVtYmVyLCBzaWdJbmRpY2VzPzogbnVtYmVyW10pOiBDcmVkZW50aWFsIHtcbiAgICBjb25zdCBzZW5kZXIgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzO1xuICAgIGNvbnN0IGFkZHJlc3Nlc0luZGV4ID0gdXR4by5hZGRyZXNzZXNJbmRleCA/PyBbXTtcbiAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMiA6IDA7XG4gICAgY29uc3QgYml0Z29JbmRleCA9IDE7XG5cbiAgICBpZiAodGhyZXNob2xkID09PSAxKSB7XG4gICAgICBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPiBmaXJzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiBuZXcgQ3JlZGVudGlhbChbdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQ3JlZGVudGlhbChbdXRpbHMuY3JlYXRlTmV3U2lnKCcnKV0pO1xuICAgIH1cblxuICAgIGlmIChhZGRyZXNzZXNJbmRleC5sZW5ndGggPj0gMiAmJiBzZW5kZXIgJiYgc2VuZGVyLmxlbmd0aCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVNpZ0luZGljZXMgPVxuICAgICAgICBzaWdJbmRpY2VzICYmIHNpZ0luZGljZXMubGVuZ3RoID49IDJcbiAgICAgICAgICA/IHNpZ0luZGljZXNcbiAgICAgICAgICA6IFthZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF1dLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcblxuICAgICAgY29uc3QgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2lnSWR4IG9mIGVmZmVjdGl2ZVNpZ0luZGljZXMpIHtcbiAgICAgICAgY29uc3Qgc2VuZGVySWR4ID0gYWRkcmVzc2VzSW5kZXguZmluZEluZGV4KCh1dHhvUG9zKSA9PiB1dHhvUG9zID09PSBzaWdJZHgpO1xuICAgICAgICBpZiAoc2VuZGVySWR4ID09PSBmaXJzdEluZGV4KSB7XG4gICAgICAgICAgZW1wdHlTaWduYXR1cmVzLnB1c2godXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbXB0eVNpZ25hdHVyZXM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhyZXNob2xkOyBpKyspIHtcbiAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWRkcmVzc01hcCBmb3IgYSBVVFhPIGZvbGxvd2luZyBBVkFYIFAgYXBwcm9hY2guXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIEFkZHJlc3NNYXAgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZFxuICAgKiBAcGFyYW0gc2lnSW5kaWNlcyAtIE9wdGlvbmFsIHNpZ0luZGljZXMgZnJvbSBGbGFyZUpTIChpZiBub3QgcHJvdmlkZWQsIGRlcml2ZWQgZnJvbSBhZGRyZXNzZXNJbmRleClcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKFxuICAgIHV0eG86IERlY29kZWRVdHhvT2JqLFxuICAgIHRocmVzaG9sZDogbnVtYmVyLFxuICAgIHNpZ0luZGljZXM/OiBudW1iZXJbXVxuICApOiBGbGFyZVV0aWxzLkFkZHJlc3NNYXAge1xuICAgIGNvbnN0IGFkZHJlc3NNYXAgPSBuZXcgRmxhcmVVdGlscy5BZGRyZXNzTWFwKCk7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcztcbiAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHV0eG8uYWRkcmVzc2VzSW5kZXggPz8gW107XG4gICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuXG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMSkge1xuICAgICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID4gZmlyc3RJbmRleCkge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbZmlyc3RJbmRleF0pLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlclswXSksIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKGFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+PSAyICYmIHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgY29uc3QgZWZmZWN0aXZlU2lnSW5kaWNlcyA9XG4gICAgICAgIHNpZ0luZGljZXMgJiYgc2lnSW5kaWNlcy5sZW5ndGggPj0gMlxuICAgICAgICAgID8gc2lnSW5kaWNlc1xuICAgICAgICAgIDogW2FkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCBhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICBlZmZlY3RpdmVTaWdJbmRpY2VzLmZvckVhY2goKHNpZ0lkeCwgc2xvdElkeCkgPT4ge1xuICAgICAgICBjb25zdCBzZW5kZXJJZHggPSBhZGRyZXNzZXNJbmRleC5maW5kSW5kZXgoKHV0eG9Qb3MpID0+IHV0eG9Qb3MgPT09IHNpZ0lkeCk7XG4gICAgICAgIGlmIChzZW5kZXJJZHggPT09IGJpdGdvSW5kZXggfHwgc2VuZGVySWR4ID09PSBmaXJzdEluZGV4KSB7XG4gICAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW3NlbmRlcklkeF0pLCBzbG90SWR4KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWRkcmVzc01hcDtcbiAgICB9XG5cbiAgICBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBzZW5kZXIuc2xpY2UoMCwgdGhyZXNob2xkKS5mb3JFYWNoKChhZGRyLCBpKSA9PiB7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKGFkZHIpLCBpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzc01hcDtcbiAgfVxufVxuIl19
@@ -56,18 +56,28 @@ export type DecodedUtxoObj = {
56
56
  */
57
57
  export declare const SECP256K1_Transfer_Output = 7;
58
58
  export declare const ADDRESS_SEPARATOR = "~";
59
- export type Tx = pvmSerial.BaseTx | UnsignedTx | evmSerial.ExportTx | evmSerial.ImportTx | pvmSerial.ExportTx | pvmSerial.ImportTx;
60
- export type SerializedTx = evmSerial.ExportTx | evmSerial.ImportTx | pvmSerial.ExportTx | pvmSerial.ImportTx;
59
+ export type Tx = pvmSerial.BaseTx | UnsignedTx | evmSerial.ExportTx | evmSerial.ImportTx | pvmSerial.ExportTx | pvmSerial.ImportTx | pvmSerial.AddPermissionlessDelegatorTx;
60
+ export type SerializedTx = evmSerial.ExportTx | evmSerial.ImportTx | pvmSerial.ExportTx | pvmSerial.ImportTx | pvmSerial.AddPermissionlessDelegatorTx;
61
61
  export type BaseTx = pvmSerial.BaseTx;
62
62
  export type Output = TransferableOutput;
63
63
  export interface FlrpVerifyTransactionOptions extends VerifyTransactionOptions {
64
64
  txParams: FlrpTransactionParams;
65
65
  }
66
+ /**
67
+ * Staking options for AddPermissionlessDelegator transactions
68
+ */
69
+ export interface FlrpStakingOptions {
70
+ nodeID: string;
71
+ amount: string | number;
72
+ durationSeconds: string | number;
73
+ rewardAddress: string;
74
+ }
66
75
  export interface FlrpTransactionParams extends TransactionParams {
67
76
  type: string;
68
77
  locktime?: number;
69
78
  unspents?: string[];
70
79
  sourceChain?: string;
80
+ stakingOptions?: FlrpStakingOptions;
71
81
  }
72
82
  export interface FlrpEntry extends Entry {
73
83
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,KAAK,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,IAAI,uBAAuB,EAC9C,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE7F;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAGrC,MAAM,MAAM,EAAE,GACV,SAAS,CAAC,MAAM,GAChB,UAAU,GACV,SAAS,CAAC,QAAQ,GAClB,SAAS,CAAC,QAAQ,GAClB,SAAS,CAAC,QAAQ,GAClB,SAAS,CAAC,QAAQ,CAAC;AAEvB,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC7G,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC;AACxC,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;IAC5E,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,oBAAY,aAAa;IACvB,SAAS,IAAI;IACb,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -25,4 +25,4 @@ var FeeDimensions;
25
25
  FeeDimensions[FeeDimensions["DBWrite"] = 2] = "DBWrite";
26
26
  FeeDimensions[FeeDimensions["Compute"] = 3] = "Compute";
27
27
  })(FeeDimensions || (exports.FeeDimensions = FeeDimensions = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBOztHQUVHO0FBQ0gsSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzlCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0FBQzlCLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQTRDRDs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFOUIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFpRXJDLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QiwyREFBYSxDQUFBO0lBQ2IscURBQVUsQ0FBQTtJQUNWLHVEQUFXLENBQUE7SUFDWCx1REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGFBQWEsNkJBQWIsYUFBYSxRQUt4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIEVudHJ5LFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCBhcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxycEZlZVN0YXRlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBwdm1TZXJpYWwsIFVuc2lnbmVkVHgsIFRyYW5zZmVyYWJsZU91dHB1dCwgZXZtU2VyaWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcblxuLyoqXG4gKiBFbnVtIGZvciBGbGFyZSB0cmFuc2FjdGlvbiB0eXBlc1xuICovXG5leHBvcnQgZW51bSBGbGFyZVRyYW5zYWN0aW9uVHlwZSB7XG4gIEV2bUV4cG9ydFR4ID0gJ2V2bS5FeHBvcnRUeCcsXG4gIEV2bUltcG9ydFR4ID0gJ2V2bS5JbXBvcnRUeCcsXG4gIFB2bUV4cG9ydFR4ID0gJ3B2bS5FeHBvcnRUeCcsXG4gIFB2bUltcG9ydFR4ID0gJ3B2bS5JbXBvcnRUeCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICByZXdhcmRBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBpbnB1dHM6IEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRW50cnlbXTtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBmcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBvdXRwdXRzOiBFbnRyeVtdO1xuICBjaGFuZ2VPdXRwdXRzOiBFbnRyeVtdO1xuICBzb3VyY2VDaGFpbj86IHN0cmluZztcbiAgZGVzdGluYXRpb25DaGFpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGVkIFVUWE8gb2JqZWN0LiBUaGlzIGlzIGZvciBhIHNpbmdsZSB1dHhvXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG91dHB1dElEXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IEFtb3VudCBhcyBhIEJpZyBOdW1iZXIgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhpZCBUcmFuc2FjdGlvbiBJRCBlbmNvZGVkIGFzIGNiNThcbiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRpZHggT3V0cHV0IGluZGV4IGFzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIERlY29kZWRVdHhvT2JqID0ge1xuICBvdXRwdXRJRDogbnVtYmVyO1xuICBsb2NrdGltZT86IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBUeXBlSWQgdmFsdWUgZm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXRcbiAqXG4gKiBTaW1pbGFyIHRvIEF2YWxhbmNoZSBQLUNoYWluJ3MgU0VDUDI1NksxIFRyYW5zZmVyIE91dHB1dFxuICovXG5leHBvcnQgY29uc3QgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCA9IDc7XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX1NFUEFSQVRPUiA9ICd+JztcblxuLy8gU2ltcGxpZmllZCB0eXBlIGRlZmluaXRpb25zIGZvciBGbGFyZVxuZXhwb3J0IHR5cGUgVHggPVxuICB8IHB2bVNlcmlhbC5CYXNlVHhcbiAgfCBVbnNpZ25lZFR4XG4gIHwgZXZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgZXZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgcHZtU2VyaWFsLkltcG9ydFR4O1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkVHggPSBldm1TZXJpYWwuRXhwb3J0VHggfCBldm1TZXJpYWwuSW1wb3J0VHggfCBwdm1TZXJpYWwuRXhwb3J0VHggfCBwdm1TZXJpYWwuSW1wb3J0VHg7XG5leHBvcnQgdHlwZSBCYXNlVHggPSBwdm1TZXJpYWwuQmFzZVR4O1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0O1xuZXhwb3J0IGludGVyZmFjZSBGbHJwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQYXJhbXM6IEZscnBUcmFuc2FjdGlvblBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwVHJhbnNhY3Rpb25QYXJhbXMgZXh0ZW5kcyBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIHR5cGU6IHN0cmluZztcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHVuc3BlbnRzPzogc3RyaW5nW107XG4gIHNvdXJjZUNoYWluPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBFbnRyeSBleHRlbmRzIEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJLZXlzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25QcmVidWlsZCBleHRlbmRzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgdHhJbmZvOiBUeEluZm87XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR4SW5mbyB7XG4gIHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgcHVibGljS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZUNvbmZpZyB7XG4gIHdlaWdodHM6IERpbWVuc2lvbnM7XG4gIG1heENhcGFjaXR5OiBiaWdpbnQ7XG4gIG1heFBlclNlY29uZDogYmlnaW50O1xuICB0YXJnZXRQZXJTZWNvbmQ6IGJpZ2ludDtcbiAgLyoqIE1pbmltdW0gZ2FzIHByaWNlICovXG4gIG1pblByaWNlOiBiaWdpbnQ7XG4gIGV4Y2Vzc0NvbnZlcnNpb25Db25zdGFudDogYmlnaW50O1xufVxuXG5leHBvcnQgZW51bSBGZWVEaW1lbnNpb25zIHtcbiAgQmFuZHdpZHRoID0gMCxcbiAgREJSZWFkID0gMSxcbiAgREJXcml0ZSA9IDIsXG4gIENvbXB1dGUgPSAzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBUcmFuc2FjdGlvbkZlZSB7XG4gIGZlZTogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBmZWVTdGF0ZT86IEZscnBGZWVTdGF0ZTtcbn1cblxudHlwZSBEaW1lbnNpb25WYWx1ZSA9IG51bWJlcjtcblxuZXhwb3J0IHR5cGUgRGltZW5zaW9ucyA9IFJlY29yZDxGZWVEaW1lbnNpb25zLCBEaW1lbnNpb25WYWx1ZT47XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgRVZNIGV4cG9ydCB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRFVk1PcHRpb25zIHtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBiaWdpbnQ7XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBOztHQUVHO0FBQ0gsSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzlCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0FBQzlCLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQTRDRDs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFOUIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFrRnJDLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QiwyREFBYSxDQUFBO0lBQ2IscURBQVUsQ0FBQTtJQUNWLHVEQUFXLENBQUE7SUFDWCx1REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGFBQWEsNkJBQWIsYUFBYSxRQUt4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIEVudHJ5LFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCBhcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxycEZlZVN0YXRlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBwdm1TZXJpYWwsIFVuc2lnbmVkVHgsIFRyYW5zZmVyYWJsZU91dHB1dCwgZXZtU2VyaWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcblxuLyoqXG4gKiBFbnVtIGZvciBGbGFyZSB0cmFuc2FjdGlvbiB0eXBlc1xuICovXG5leHBvcnQgZW51bSBGbGFyZVRyYW5zYWN0aW9uVHlwZSB7XG4gIEV2bUV4cG9ydFR4ID0gJ2V2bS5FeHBvcnRUeCcsXG4gIEV2bUltcG9ydFR4ID0gJ2V2bS5JbXBvcnRUeCcsXG4gIFB2bUV4cG9ydFR4ID0gJ3B2bS5FeHBvcnRUeCcsXG4gIFB2bUltcG9ydFR4ID0gJ3B2bS5JbXBvcnRUeCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICByZXdhcmRBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBpbnB1dHM6IEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRW50cnlbXTtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBmcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBvdXRwdXRzOiBFbnRyeVtdO1xuICBjaGFuZ2VPdXRwdXRzOiBFbnRyeVtdO1xuICBzb3VyY2VDaGFpbj86IHN0cmluZztcbiAgZGVzdGluYXRpb25DaGFpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGVkIFVUWE8gb2JqZWN0LiBUaGlzIGlzIGZvciBhIHNpbmdsZSB1dHhvXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG91dHB1dElEXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IEFtb3VudCBhcyBhIEJpZyBOdW1iZXIgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhpZCBUcmFuc2FjdGlvbiBJRCBlbmNvZGVkIGFzIGNiNThcbiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRpZHggT3V0cHV0IGluZGV4IGFzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIERlY29kZWRVdHhvT2JqID0ge1xuICBvdXRwdXRJRDogbnVtYmVyO1xuICBsb2NrdGltZT86IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBUeXBlSWQgdmFsdWUgZm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXRcbiAqXG4gKiBTaW1pbGFyIHRvIEF2YWxhbmNoZSBQLUNoYWluJ3MgU0VDUDI1NksxIFRyYW5zZmVyIE91dHB1dFxuICovXG5leHBvcnQgY29uc3QgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCA9IDc7XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX1NFUEFSQVRPUiA9ICd+JztcblxuLy8gU2ltcGxpZmllZCB0eXBlIGRlZmluaXRpb25zIGZvciBGbGFyZVxuZXhwb3J0IHR5cGUgVHggPVxuICB8IHB2bVNlcmlhbC5CYXNlVHhcbiAgfCBVbnNpZ25lZFR4XG4gIHwgZXZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgZXZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgcHZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yVHg7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUeCA9XG4gIHwgZXZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgZXZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgcHZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yVHg7XG5leHBvcnQgdHlwZSBCYXNlVHggPSBwdm1TZXJpYWwuQmFzZVR4O1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0O1xuZXhwb3J0IGludGVyZmFjZSBGbHJwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQYXJhbXM6IEZscnBUcmFuc2FjdGlvblBhcmFtcztcbn1cblxuLyoqXG4gKiBTdGFraW5nIG9wdGlvbnMgZm9yIEFkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZscnBTdGFraW5nT3B0aW9ucyB7XG4gIG5vZGVJRDogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZyB8IG51bWJlcjtcbiAgZHVyYXRpb25TZWNvbmRzOiBzdHJpbmcgfCBudW1iZXI7XG4gIHJld2FyZEFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwVHJhbnNhY3Rpb25QYXJhbXMgZXh0ZW5kcyBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIHR5cGU6IHN0cmluZztcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHVuc3BlbnRzPzogc3RyaW5nW107XG4gIHNvdXJjZUNoYWluPzogc3RyaW5nO1xuICBzdGFraW5nT3B0aW9ucz86IEZscnBTdGFraW5nT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwRW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxycFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHViS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHhJbmZvO1xuICBzb3VyY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeEluZm8ge1xuICByZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICBmcm9tOiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIHB1YmxpY0tleXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVDb25maWcge1xuICB3ZWlnaHRzOiBEaW1lbnNpb25zO1xuICBtYXhDYXBhY2l0eTogYmlnaW50O1xuICBtYXhQZXJTZWNvbmQ6IGJpZ2ludDtcbiAgdGFyZ2V0UGVyU2Vjb25kOiBiaWdpbnQ7XG4gIC8qKiBNaW5pbXVtIGdhcyBwcmljZSAqL1xuICBtaW5QcmljZTogYmlnaW50O1xuICBleGNlc3NDb252ZXJzaW9uQ29uc3RhbnQ6IGJpZ2ludDtcbn1cblxuZXhwb3J0IGVudW0gRmVlRGltZW5zaW9ucyB7XG4gIEJhbmR3aWR0aCA9IDAsXG4gIERCUmVhZCA9IDEsXG4gIERCV3JpdGUgPSAyLFxuICBDb21wdXRlID0gMyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwVHJhbnNhY3Rpb25GZWUge1xuICBmZWU6IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgZmVlU3RhdGU/OiBGbHJwRmVlU3RhdGU7XG59XG5cbnR5cGUgRGltZW5zaW9uVmFsdWUgPSBudW1iZXI7XG5cbmV4cG9ydCB0eXBlIERpbWVuc2lvbnMgPSBSZWNvcmQ8RmVlRGltZW5zaW9ucywgRGltZW5zaW9uVmFsdWU+O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIEVWTSBleHBvcnQgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0RVZNT3B0aW9ucyB7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBsb2NrdGltZTogYmlnaW50O1xufVxuIl19
@@ -9,4 +9,5 @@ export { AtomicTransactionBuilder } from './atomicTransactionBuilder';
9
9
  export { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
10
10
  export { ImportInCTxBuilder } from './ImportInCTxBuilder';
11
11
  export { ImportInPTxBuilder } from './ImportInPTxBuilder';
12
+ export { PermissionlessDelegatorTxBuilder } from './permissionlessDelegatorTxBuilder';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.ImportInPTxBuilder = exports.ImportInCTxBuilder = exports.AtomicInCTransactionBuilder = exports.AtomicTransactionBuilder = exports.Transaction = exports.TransactionBuilder = exports.TransactionBuilderFactory = exports.Utils = exports.KeyPair = void 0;
20
+ exports.PermissionlessDelegatorTxBuilder = exports.ImportInPTxBuilder = exports.ImportInCTxBuilder = exports.AtomicInCTransactionBuilder = exports.AtomicTransactionBuilder = exports.Transaction = exports.TransactionBuilder = exports.TransactionBuilderFactory = exports.Utils = exports.KeyPair = void 0;
21
21
  const utils_1 = __importDefault(require("./utils"));
22
22
  exports.Utils = utils_1.default;
23
23
  __exportStar(require("./iface"), exports);
@@ -37,4 +37,6 @@ var ImportInCTxBuilder_1 = require("./ImportInCTxBuilder");
37
37
  Object.defineProperty(exports, "ImportInCTxBuilder", { enumerable: true, get: function () { return ImportInCTxBuilder_1.ImportInCTxBuilder; } });
38
38
  var ImportInPTxBuilder_1 = require("./ImportInPTxBuilder");
39
39
  Object.defineProperty(exports, "ImportInPTxBuilder", { enumerable: true, get: function () { return ImportInPTxBuilder_1.ImportInPTxBuilder; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBR25CLGdCQUhGLGVBQUssQ0FHRTtBQUZkLDBDQUF3QjtBQUN4QixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBRWhCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQTtBQUNsQywyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsNkNBQTRDO0FBQW5DLDBHQUFBLFdBQVcsT0FBQTtBQUNwQix1RUFBc0U7QUFBN0Qsb0lBQUEsd0JBQXdCLE9BQUE7QUFDakMsNkVBQTRFO0FBQW5FLDBJQUFBLDJCQUEyQixPQUFBO0FBQ3BDLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2lmYWNlJztcbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVXRpbHMgfTtcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IEF0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vYXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IEltcG9ydEluQ1R4QnVpbGRlciB9IGZyb20gJy4vSW1wb3J0SW5DVHhCdWlsZGVyJztcbmV4cG9ydCB7IEltcG9ydEluUFR4QnVpbGRlciB9IGZyb20gJy4vSW1wb3J0SW5QVHhCdWlsZGVyJztcbiJdfQ==
40
+ var permissionlessDelegatorTxBuilder_1 = require("./permissionlessDelegatorTxBuilder");
41
+ Object.defineProperty(exports, "PermissionlessDelegatorTxBuilder", { enumerable: true, get: function () { return permissionlessDelegatorTxBuilder_1.PermissionlessDelegatorTxBuilder; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBR25CLGdCQUhGLGVBQUssQ0FHRTtBQUZkLDBDQUF3QjtBQUN4QixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBRWhCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQTtBQUNsQywyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsNkNBQTRDO0FBQW5DLDBHQUFBLFdBQVcsT0FBQTtBQUNwQix1RUFBc0U7QUFBN0Qsb0lBQUEsd0JBQXdCLE9BQUE7QUFDakMsNkVBQTRFO0FBQW5FLDBJQUFBLDJCQUEyQixPQUFBO0FBQ3BDLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsdUZBQXNGO0FBQTdFLG9KQUFBLGdDQUFnQyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFV0aWxzIH07XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBJbXBvcnRJbkNUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluQ1R4QnVpbGRlcic7XG5leHBvcnQgeyBJbXBvcnRJblBUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluUFR4QnVpbGRlcic7XG5leHBvcnQgeyBQZXJtaXNzaW9ubGVzc0RlbGVnYXRvclR4QnVpbGRlciB9IGZyb20gJy4vcGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeEJ1aWxkZXInO1xuIl19
@@ -0,0 +1,108 @@
1
+ import { TypeSymbols, Credential } from '@flarenetwork/flarejs';
2
+ import { TransactionType } from '@bitgo/sdk-core';
3
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
+ import { Transaction } from './transaction';
5
+ import { TransactionBuilder } from './transactionBuilder';
6
+ import { FlrpFeeState } from '@bitgo/public-types';
7
+ import { Tx } from './iface';
8
+ /**
9
+ * Builder for AddPermissionlessDelegator transactions on Flare P-Chain.
10
+ *
11
+ * This builder creates delegation transactions where a user delegates stake
12
+ * to an existing validator. Unlike AddPermissionlessValidator:
13
+ * - No BLS keys required
14
+ * - Delegates to an existing validator's nodeID
15
+ * - Rewards go to corresponding C-chain address
16
+ */
17
+ export declare class PermissionlessDelegatorTxBuilder extends TransactionBuilder {
18
+ protected _nodeID: string;
19
+ protected _startTime: bigint;
20
+ protected _endTime: bigint;
21
+ protected _stakeAmount: bigint;
22
+ protected _feeState: FlrpFeeState | undefined;
23
+ constructor(coinConfig: Readonly<CoinConfig>);
24
+ protected get transactionType(): TransactionType;
25
+ validateNodeID(nodeID: string): void;
26
+ validateStakeDuration(startTime: bigint, endTime: bigint): void;
27
+ validateStakeAmount(amount: bigint): void;
28
+ /**
29
+ *
30
+ * NOTE: On Flare, staking rewards are distributed on C-chain (not P-chain).
31
+ * Rewards go to the C-chain address derived from the same public key as
32
+ * the P-chain staking address. This parameter is passed to the FlareJS API
33
+ * but has NO on-chain effect on reward distribution.
34
+ *
35
+ * @param address P-chain address in Bech32 format (e.g., "P-flare1..." or "P-costwo1...")
36
+ */
37
+ rewardAddress(address: string): this;
38
+ /**
39
+ * Set the validator node ID to delegate to
40
+ * @param nodeID Validator node ID in format "NodeID-..."
41
+ */
42
+ nodeID(nodeID: string): this;
43
+ /**
44
+ * Set the start time for the delegation period
45
+ * @param value Unix timestamp in seconds
46
+ */
47
+ startTime(value: string | number): this;
48
+ /**
49
+ * Set the end time for the delegation period
50
+ * @param value Unix timestamp in seconds
51
+ */
52
+ endTime(value: string | number): this;
53
+ /**
54
+ * Set the amount to stake/delegate
55
+ * @param value Amount in nanoFLR (wei)
56
+ */
57
+ stakeAmount(value: bigint | string): this;
58
+ /**
59
+ * @param feeState Fee state from P-chain
60
+ */
61
+ feeState(feeState: FlrpFeeState): this;
62
+ /**
63
+ * Initialize builder from a parsed AddPermissionlessDelegatorTx.
64
+ * Used to reconstruct the builder state from a raw transaction for signing.
65
+ *
66
+ * @param tx The parsed transaction
67
+ * @param rawBytes Optional raw transaction bytes
68
+ * @param parsedCredentials Optional credentials from the parsed transaction
69
+ */
70
+ initBuilder(tx: Tx, rawBytes?: Buffer, parsedCredentials?: Credential[]): this;
71
+ /**
72
+ * Instance method to verify transaction type
73
+ * @param type TypeSymbol from parsed transaction
74
+ */
75
+ verifyTxType(type: TypeSymbols): boolean;
76
+ protected buildImplementation(): Promise<Transaction>;
77
+ /**
78
+ * Get the user's address (index 0) for delegation.
79
+ *
80
+ * For delegation transactions, we use only the user key because:
81
+ * 1. On-chain rewards go to the C-chain address derived from the delegator's public key
82
+ * 2. Using the user key ensures rewards go to the user's corresponding C-chain address
83
+ * 3. The user key is at index 0 in the fromAddresses array (BitGo convention: [user, bitgo, backup])
84
+ *
85
+ * @returns Buffer containing the user's address
86
+ * @protected
87
+ */
88
+ protected getUserAddress(): Buffer;
89
+ /**
90
+ * Build the permissionless delegator transaction using FlareJS.
91
+ * Uses pvm.e.newAddPermissionlessDelegatorTx (post-Etna API).
92
+ *
93
+ * Note: The rewardAddresses parameter is accepted by the API but does NOT affect
94
+ * where rewards are sent on-chain - rewards always go to the C-chain address
95
+ * derived from the delegator's public key (user key at index 0).
96
+ * @protected
97
+ */
98
+ protected buildFlareTransaction(): void;
99
+ /**
100
+ * Verify if the transaction type matches AddPermissionlessDelegatorTx
101
+ * @param type TypeSymbol from parsed transaction
102
+ */
103
+ static verifyTxType(type: TypeSymbols): boolean;
104
+ /** @inheritdoc */
105
+ protected get transaction(): Transaction;
106
+ protected set transaction(transaction: Transaction);
107
+ }
108
+ //# sourceMappingURL=permissionlessDelegatorTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionlessDelegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/permissionlessDelegatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAKX,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B;;;;;;;;GAQG;AACH,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;gBAElC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAGD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYzC;;;;;;;;OAQG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMtC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAgD9E;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;cAIxB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAW3D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;IAYlC;;;;;;;;OAQG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IA4DvC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI/C,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;CACF"}