@bitgo-beta/sdk-coin-iota 1.0.1-beta.30 → 1.0.1-beta.300
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.
- package/README.md +1 -1
- package/dist/src/iota.d.ts +13 -2
- package/dist/src/iota.d.ts.map +1 -1
- package/dist/src/iota.js +135 -22
- package/dist/src/lib/constants.d.ts +10 -6
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +12 -8
- package/dist/src/lib/iface.d.ts +33 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/transaction.d.ts +66 -5
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +241 -6
- package/dist/src/lib/transactionBuilder.d.ts +70 -9
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +155 -14
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +45 -5
- package/dist/src/lib/transferBuilder.d.ts +10 -2
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +45 -3
- package/dist/src/lib/transferTransaction.d.ts +28 -0
- package/dist/src/lib/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transferTransaction.js +173 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +28 -4
- package/dist/test/resources/iota.d.ts +23 -0
- package/dist/test/resources/iota.d.ts.map +1 -0
- package/dist/test/resources/iota.js +74 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +16 -0
- package/dist/test/unit/iota.d.ts +2 -0
- package/dist/test/unit/iota.d.ts.map +1 -0
- package/dist/test/unit/iota.js +575 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +135 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +306 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +243 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +288 -0
- package/dist/test/unit/transferTransaction.d.ts +2 -0
- package/dist/test/unit/transferTransaction.d.ts.map +1 -0
- package/dist/test/unit/transferTransaction.js +346 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +278 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -0
|
@@ -1,17 +1,252 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Transaction = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const transactions_1 = require("@iota/iota-sdk/transactions");
|
|
9
|
+
const utils_1 = require("@iota/iota-sdk/utils");
|
|
10
|
+
const blake2b_1 = __importDefault(require("@bitgo-beta/blake2b"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
5
12
|
class Transaction extends sdk_core_1.BaseTransaction {
|
|
6
|
-
|
|
7
|
-
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
this._sender = '';
|
|
16
|
+
this._rebuildRequired = false;
|
|
17
|
+
this._isSimulateTx = true;
|
|
18
|
+
this._signature = {
|
|
19
|
+
publicKey: {
|
|
20
|
+
pub: Transaction.EMPTY_PUBLIC_KEY.toString('hex'),
|
|
21
|
+
},
|
|
22
|
+
signature: Transaction.EMPTY_SIGNATURE,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
get gasBudget() {
|
|
26
|
+
return this._gasBudget;
|
|
27
|
+
}
|
|
28
|
+
set gasBudget(value) {
|
|
29
|
+
this._gasBudget = value;
|
|
30
|
+
this._rebuildRequired = true;
|
|
31
|
+
}
|
|
32
|
+
get gasPaymentObjects() {
|
|
33
|
+
return this._gasPaymentObjects;
|
|
34
|
+
}
|
|
35
|
+
set gasPaymentObjects(value) {
|
|
36
|
+
this._gasPaymentObjects = value;
|
|
37
|
+
this._rebuildRequired = true;
|
|
38
|
+
}
|
|
39
|
+
get gasPrice() {
|
|
40
|
+
return this._gasPrice;
|
|
41
|
+
}
|
|
42
|
+
set gasPrice(value) {
|
|
43
|
+
this._gasPrice = value;
|
|
44
|
+
this._rebuildRequired = true;
|
|
45
|
+
}
|
|
46
|
+
get gasSponsor() {
|
|
47
|
+
return this._gasSponsor;
|
|
48
|
+
}
|
|
49
|
+
set gasSponsor(value) {
|
|
50
|
+
this._gasSponsor = value;
|
|
51
|
+
this._rebuildRequired = true;
|
|
52
|
+
}
|
|
53
|
+
get sender() {
|
|
54
|
+
return this._sender;
|
|
55
|
+
}
|
|
56
|
+
set sender(value) {
|
|
57
|
+
this._sender = value;
|
|
58
|
+
this._rebuildRequired = true;
|
|
59
|
+
}
|
|
60
|
+
get isSimulateTx() {
|
|
61
|
+
return this._isSimulateTx;
|
|
62
|
+
}
|
|
63
|
+
set isSimulateTx(value) {
|
|
64
|
+
if (!value) {
|
|
65
|
+
try {
|
|
66
|
+
this.validateTxData();
|
|
67
|
+
this._rebuildRequired = true;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
71
|
+
throw new Error(`Tx data validation failed: ${errorMessage}. {Cause: ${error}}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
this._isSimulateTx = value;
|
|
75
|
+
}
|
|
76
|
+
get signablePayload() {
|
|
77
|
+
if (this.isSimulateTx) {
|
|
78
|
+
throw new Error('Cannot sign a simulate tx');
|
|
79
|
+
}
|
|
80
|
+
if (this._txDataBytes === undefined || this._rebuildRequired) {
|
|
81
|
+
throw new Error('Tx not built or a rebuild is required');
|
|
82
|
+
}
|
|
83
|
+
const intentMessage = this.messageWithIntent(this._txDataBytes);
|
|
84
|
+
return Buffer.from((0, blake2b_1.default)(32).update(intentMessage).digest('binary'));
|
|
85
|
+
}
|
|
86
|
+
/** @inheritDoc **/
|
|
87
|
+
get id() {
|
|
88
|
+
if (this._txDataBytes === undefined || this._rebuildRequired) {
|
|
89
|
+
throw new Error('Tx not built or a rebuild is required');
|
|
90
|
+
}
|
|
91
|
+
return transactions_1.TransactionDataBuilder.getDigestFromBytes(this._txDataBytes);
|
|
92
|
+
}
|
|
93
|
+
addSignature(publicKey, signature) {
|
|
94
|
+
this._signatures = [...this._signatures, signature.toString('hex')];
|
|
95
|
+
this._signature = { publicKey, signature };
|
|
96
|
+
}
|
|
97
|
+
addGasSponsorSignature(publicKey, signature) {
|
|
98
|
+
this._signatures = [...this._signatures, signature.toString('hex')];
|
|
99
|
+
this._gasSponsorSignature = { publicKey, signature };
|
|
100
|
+
}
|
|
101
|
+
canSign(_key) {
|
|
102
|
+
return !this.isSimulateTx;
|
|
103
|
+
}
|
|
104
|
+
getFee() {
|
|
105
|
+
return this.gasBudget?.toString();
|
|
106
|
+
}
|
|
107
|
+
async toBroadcastFormat() {
|
|
108
|
+
const txDataBytes = await this.build();
|
|
109
|
+
return (0, utils_1.toBase64)(txDataBytes);
|
|
110
|
+
}
|
|
111
|
+
async build() {
|
|
112
|
+
if (this.isSimulateTx) {
|
|
113
|
+
return this.buildDryRunTransaction();
|
|
114
|
+
}
|
|
115
|
+
return this.buildTransaction();
|
|
8
116
|
}
|
|
9
117
|
toJson() {
|
|
10
|
-
|
|
118
|
+
return {
|
|
119
|
+
sender: this.sender,
|
|
120
|
+
gasBudget: this.gasBudget,
|
|
121
|
+
gasPrice: this.gasPrice,
|
|
122
|
+
gasPaymentObjects: this.gasPaymentObjects,
|
|
123
|
+
gasSponsor: this.gasSponsor,
|
|
124
|
+
type: this.type,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
parseFromJSON(txData) {
|
|
128
|
+
this.sender = txData.sender;
|
|
129
|
+
this.gasBudget = txData.gasBudget;
|
|
130
|
+
this.gasPrice = txData.gasPrice;
|
|
131
|
+
this.gasPaymentObjects = txData.gasPaymentObjects;
|
|
132
|
+
if (txData.gasSponsor !== undefined) {
|
|
133
|
+
this.gasSponsor = txData.gasSponsor;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
parseFromBroadcastTx(tx) {
|
|
137
|
+
const txData = transactions_1.Transaction.from(tx).getData();
|
|
138
|
+
if (txData.sender) {
|
|
139
|
+
this.sender = txData.sender;
|
|
140
|
+
}
|
|
141
|
+
if (txData.gasData?.budget) {
|
|
142
|
+
this.gasBudget = Number(txData.gasData.budget);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.gasBudget = undefined;
|
|
146
|
+
}
|
|
147
|
+
if (txData.gasData?.price) {
|
|
148
|
+
this.gasPrice = Number(txData.gasData.price);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.gasPrice = undefined;
|
|
152
|
+
}
|
|
153
|
+
if (txData.gasData?.payment && txData.gasData.payment.length > 0) {
|
|
154
|
+
this.gasPaymentObjects = txData.gasData.payment.map((payment) => payment);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.gasPaymentObjects = undefined;
|
|
158
|
+
}
|
|
159
|
+
if (txData.gasData?.owner) {
|
|
160
|
+
this.gasSponsor = txData.gasData.owner;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.gasSponsor = undefined;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* @inheritDoc
|
|
168
|
+
*/
|
|
169
|
+
explainTransaction() {
|
|
170
|
+
const result = this.toJson();
|
|
171
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
|
|
172
|
+
const outputs = [];
|
|
173
|
+
const explanationResult = {
|
|
174
|
+
displayOrder,
|
|
175
|
+
id: this.id,
|
|
176
|
+
outputs,
|
|
177
|
+
outputAmount: '0',
|
|
178
|
+
changeOutputs: [],
|
|
179
|
+
changeAmount: '0',
|
|
180
|
+
fee: { fee: this.gasBudget ? this.gasBudget.toString() : '' },
|
|
181
|
+
sender: this.sender,
|
|
182
|
+
sponsor: this.gasSponsor,
|
|
183
|
+
type: this.type,
|
|
184
|
+
};
|
|
185
|
+
return this.explainTransactionImplementation(result, explanationResult);
|
|
186
|
+
}
|
|
187
|
+
updateIsSimulateTx() {
|
|
188
|
+
if (this.gasBudget && this.gasPrice && this.gasPaymentObjects && this.gasPaymentObjects?.length > 0) {
|
|
189
|
+
this.isSimulateTx = false;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.isSimulateTx = true;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async buildDryRunTransaction() {
|
|
196
|
+
this.validateTxDataImplementation();
|
|
197
|
+
await this.populateTxData();
|
|
198
|
+
const txDataBuilder = new transactions_1.TransactionDataBuilder(this._iotaTransaction.getData());
|
|
199
|
+
return txDataBuilder.build({
|
|
200
|
+
overrides: {
|
|
201
|
+
gasData: {
|
|
202
|
+
budget: constants_1.MAX_GAS_BUDGET.toString(),
|
|
203
|
+
price: constants_1.MAX_GAS_PRICE.toString(),
|
|
204
|
+
payment: [],
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
async buildTransaction() {
|
|
210
|
+
if (this._txDataBytes === undefined || this._rebuildRequired) {
|
|
211
|
+
this.validateTxData();
|
|
212
|
+
await this.populateTxData();
|
|
213
|
+
this._iotaTransaction.setGasPrice(this.gasPrice);
|
|
214
|
+
this._iotaTransaction.setGasBudget(this.gasBudget);
|
|
215
|
+
this._iotaTransaction.setGasPayment(this.gasPaymentObjects);
|
|
216
|
+
this._txDataBytes = await this._iotaTransaction.build();
|
|
217
|
+
this._rebuildRequired = false;
|
|
218
|
+
}
|
|
219
|
+
return this._txDataBytes;
|
|
220
|
+
}
|
|
221
|
+
async populateTxData() {
|
|
222
|
+
this._iotaTransaction = new transactions_1.Transaction();
|
|
223
|
+
this.populateTxInputsAndCommands();
|
|
224
|
+
if (this.gasSponsor && this._sender !== this.gasSponsor) {
|
|
225
|
+
this._iotaTransaction = transactions_1.Transaction.fromKind(await this._iotaTransaction.build({ onlyTransactionKind: true }));
|
|
226
|
+
this._iotaTransaction.setGasOwner(this._gasSponsor);
|
|
227
|
+
}
|
|
228
|
+
this._iotaTransaction.setSender(this.sender);
|
|
11
229
|
}
|
|
12
|
-
|
|
13
|
-
|
|
230
|
+
validateTxData() {
|
|
231
|
+
this.validateTxDataImplementation();
|
|
232
|
+
if (!this.sender || this.sender === '') {
|
|
233
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction sender is required');
|
|
234
|
+
}
|
|
235
|
+
if (!this.gasPrice) {
|
|
236
|
+
throw new sdk_core_1.InvalidTransactionError('Gas price is required');
|
|
237
|
+
}
|
|
238
|
+
if (!this.gasBudget) {
|
|
239
|
+
throw new sdk_core_1.InvalidTransactionError('Gas budget is required');
|
|
240
|
+
}
|
|
241
|
+
if (!this.gasPaymentObjects || this.gasPaymentObjects?.length === 0) {
|
|
242
|
+
throw new sdk_core_1.InvalidTransactionError('Gas payment objects are required');
|
|
243
|
+
}
|
|
244
|
+
if (this.gasPaymentObjects.length > constants_1.MAX_GAS_PAYMENT_OBJECTS) {
|
|
245
|
+
throw new sdk_core_1.InvalidTransactionError(`Gas payment objects count (${this.gasPaymentObjects.length}) exceeds maximum allowed (${constants_1.MAX_GAS_PAYMENT_OBJECTS})`);
|
|
246
|
+
}
|
|
14
247
|
}
|
|
15
248
|
}
|
|
16
249
|
exports.Transaction = Transaction;
|
|
17
|
-
|
|
250
|
+
Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(constants_1.IOTA_KEY_BYTES_LENGTH);
|
|
251
|
+
Transaction.EMPTY_SIGNATURE = Buffer.alloc(constants_1.IOTA_SIGNATURE_LENGTH);
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFHcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFFckIsTUFBc0IsV0FBWSxTQUFRLDBCQUFlO0lBa0J2RCxZQUFzQixVQUFnQztRQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDbEQ7WUFDRCxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQXlCO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEtBQTJDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUF5QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLEtBQXlCO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUMvQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7Z0JBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLFlBQVksYUFBYSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLGlCQUFPLEVBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8scUNBQTBCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFvQixFQUFFLFNBQWlCO1FBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWE7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsTUFBTSxXQUFXLEdBQTRCLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hFLE9BQU8sSUFBQSxnQkFBUSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBdUI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFpQyxDQUFDLENBQUM7UUFDdEcsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkcsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUUzQyxNQUFNLGlCQUFpQixHQUEyQjtZQUNoRCxZQUFZO1lBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHO1lBQ2pCLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEcsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQXNCTyxLQUFLLENBQUMsc0JBQXNCO1FBQ2xDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sYUFBYSxHQUFHLElBQUkscUNBQTBCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEYsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUU7b0JBQ1AsTUFBTSxFQUFFLDBCQUFjLENBQUMsUUFBUSxFQUFFO29CQUNqQyxLQUFLLEVBQUUseUJBQWEsQ0FBQyxRQUFRLEVBQUU7b0JBQy9CLE9BQU8sRUFBRSxFQUFFO2lCQUNaO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFrQixDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBbUIsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUE2QyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDBCQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLDBCQUFlLENBQUMsUUFBUSxDQUM5QyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNqRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxtQ0FBdUIsRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsOEJBQThCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLDhCQUE4QixtQ0FBdUIsR0FBRyxDQUNwSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBalRILGtDQWtUQztBQWpUUSw0QkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUM7QUFDdkQsMkJBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkRhdGFCdWlsZGVyIGFzIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLFxufSBmcm9tICdAaW90YS9pb3RhLXNkay90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHhEYXRhLCBUcmFuc2FjdGlvbk9iamVjdElucHV0LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyB0b0Jhc2U2NCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3V0aWxzJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHtcbiAgTUFYX0dBU19CVURHRVQsXG4gIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTLFxuICBNQVhfR0FTX1BSSUNFLFxuICBJT1RBX0tFWV9CWVRFU19MRU5HVEgsXG4gIElPVEFfU0lHTkFUVVJFX0xFTkdUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgRU1QVFlfUFVCTElDX0tFWSA9IEJ1ZmZlci5hbGxvYyhJT1RBX0tFWV9CWVRFU19MRU5HVEgpO1xuICBzdGF0aWMgRU1QVFlfU0lHTkFUVVJFID0gQnVmZmVyLmFsbG9jKElPVEFfU0lHTkFUVVJFX0xFTkdUSCk7XG5cbiAgcHJvdGVjdGVkIF9yZWJ1aWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2lvdGFUcmFuc2FjdGlvbjogSW90YVRyYW5zYWN0aW9uO1xuXG4gIHByaXZhdGUgX2dhc0J1ZGdldD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzUGF5bWVudE9iamVjdHM/OiBUcmFuc2FjdGlvbk9iamVjdElucHV0W107XG4gIHByaXZhdGUgX2dhc1ByaWNlPzogbnVtYmVyO1xuICBwcml2YXRlIF9nYXNTcG9uc29yPzogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9nYXNTcG9uc29yU2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF90eERhdGFCeXRlcz86IFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+O1xuICBwcml2YXRlIF9pc1NpbXVsYXRlVHg6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2VuZGVyID0gJyc7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4ID0gdHJ1ZTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7XG4gICAgICBwdWJsaWNLZXk6IHtcbiAgICAgICAgcHViOiBUcmFuc2FjdGlvbi5FTVBUWV9QVUJMSUNfS0VZLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgICBzaWduYXR1cmU6IFRyYW5zYWN0aW9uLkVNUFRZX1NJR05BVFVSRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGdhc0J1ZGdldCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNCdWRnZXQ7XG4gIH1cblxuICBzZXQgZ2FzQnVkZ2V0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNCdWRnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1BheW1lbnRPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1BheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgc2V0IGdhc1BheW1lbnRPYmplY3RzKHZhbHVlOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQYXltZW50T2JqZWN0cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzUHJpY2UoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2U7XG4gIH1cblxuICBzZXQgZ2FzUHJpY2UodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1ByaWNlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNTcG9uc29yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1Nwb25zb3I7XG4gIH1cblxuICBzZXQgZ2FzU3BvbnNvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzU3BvbnNvciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbmRlciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgaXNTaW11bGF0ZVR4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBzZXQgaXNTaW11bGF0ZVR4KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHggZGF0YSB2YWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvck1lc3NhZ2V9LiB7Q2F1c2U6ICR7ZXJyb3J9fWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbm90IGJ1aWx0IG9yIGEgcmVidWlsZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlbnRNZXNzYWdlID0gdGhpcy5tZXNzYWdlV2l0aEludGVudCh0aGlzLl90eERhdGFCeXRlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJsYWtlMmIoMzIpLnVwZGF0ZShpbnRlbnRNZXNzYWdlKS5kaWdlc3QoJ2JpbmFyeScpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyh0aGlzLl90eERhdGFCeXRlcyk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFsuLi50aGlzLl9zaWduYXR1cmVzLCBzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpXTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gIH1cblxuICBhZGRHYXNTcG9uc29yU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbLi4udGhpcy5fc2lnbmF0dXJlcywgc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKV07XG4gICAgdGhpcy5fZ2FzU3BvbnNvclNpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGNhblNpZ24oX2tleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBnZXRGZWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nYXNCdWRnZXQ/LnRvU3RyaW5nKCk7XG4gIH1cblxuICBhc3luYyB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHR4RGF0YUJ5dGVzOiBVaW50OEFycmF5PEFycmF5QnVmZmVyPiA9IGF3YWl0IHRoaXMuYnVpbGQoKTtcbiAgICByZXR1cm4gdG9CYXNlNjQodHhEYXRhQnl0ZXMpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyPj4ge1xuICAgIGlmICh0aGlzLmlzU2ltdWxhdGVUeCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdGhpcy5nYXNQcmljZSxcbiAgICAgIGdhc1BheW1lbnRPYmplY3RzOiB0aGlzLmdhc1BheW1lbnRPYmplY3RzLFxuICAgICAgZ2FzU3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHhEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdHhEYXRhLmdhc0J1ZGdldDtcbiAgICB0aGlzLmdhc1ByaWNlID0gdHhEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB0eERhdGEuZ2FzUGF5bWVudE9iamVjdHM7XG4gICAgaWYgKHR4RGF0YS5nYXNTcG9uc29yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNTcG9uc29yO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4OiBzdHJpbmcgfCBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gSW90YVRyYW5zYWN0aW9uLmZyb20odHgpLmdldERhdGEoKTtcbiAgICBpZiAodHhEYXRhLnNlbmRlcikge1xuICAgICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LmJ1ZGdldCkge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEuYnVkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ucHJpY2UpIHtcbiAgICAgIHRoaXMuZ2FzUHJpY2UgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEucHJpY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnBheW1lbnQgJiYgdHhEYXRhLmdhc0RhdGEucGF5bWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc0RhdGEucGF5bWVudC5tYXAoKHBheW1lbnQpID0+IHBheW1lbnQgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ub3duZXIpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNEYXRhLm93bmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuZ2FzQnVkZ2V0ID8gdGhpcy5nYXNCdWRnZXQudG9TdHJpbmcoKSA6ICcnIH0sXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgc3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJc1NpbXVsYXRlVHgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FzQnVkZ2V0ICYmIHRoaXMuZ2FzUHJpY2UgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cyAmJiB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbnRyaWVzIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+PiB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgIGNvbnN0IHR4RGF0YUJ1aWxkZXIgPSBuZXcgSW90YVRyYW5zYWN0aW9uRGF0YUJ1aWxkZXIodGhpcy5faW90YVRyYW5zYWN0aW9uLmdldERhdGEoKSk7XG4gICAgcmV0dXJuIHR4RGF0YUJ1aWxkZXIuYnVpbGQoe1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICBidWRnZXQ6IE1BWF9HQVNfQlVER0VULnRvU3RyaW5nKCksXG4gICAgICAgICAgcHJpY2U6IE1BWF9HQVNfUFJJQ0UudG9TdHJpbmcoKSxcbiAgICAgICAgICBwYXltZW50OiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyPj4ge1xuICAgIGlmICh0aGlzLl90eERhdGFCeXRlcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3JlYnVpbGRSZXF1aXJlZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc1ByaWNlKHRoaXMuZ2FzUHJpY2UgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNCdWRnZXQodGhpcy5nYXNCdWRnZXQgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNQYXltZW50KHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTtcbiAgICAgIHRoaXMuX3R4RGF0YUJ5dGVzID0gYXdhaXQgdGhpcy5faW90YVRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3R4RGF0YUJ5dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVR4RGF0YSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBuZXcgSW90YVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTtcbiAgICBpZiAodGhpcy5nYXNTcG9uc29yICYmIHRoaXMuX3NlbmRlciAhPT0gdGhpcy5nYXNTcG9uc29yKSB7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBJb3RhVHJhbnNhY3Rpb24uZnJvbUtpbmQoXG4gICAgICAgIGF3YWl0IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5idWlsZCh7IG9ubHlUcmFuc2FjdGlvbktpbmQ6IHRydWUgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzT3duZXIodGhpcy5fZ2FzU3BvbnNvciBhcyBzdHJpbmcpO1xuICAgIH1cbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0U2VuZGVyKHRoaXMuc2VuZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnNlbmRlciB8fCB0aGlzLnNlbmRlciA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2VuZGVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1ByaWNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0dhcyBwcmljZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNCdWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIGJ1ZGdldCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHBheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgR2FzIHBheW1lbnQgb2JqZWN0cyBjb3VudCAoJHt0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aH0pIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkICgke01BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTfSlgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,76 @@
|
|
|
1
|
-
import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
|
|
1
|
+
import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder, PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
5
|
+
import { GasData } from './iface';
|
|
6
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
|
+
protected _transaction: Transaction;
|
|
8
|
+
protected constructor(coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
/**
|
|
10
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
11
|
+
*
|
|
12
|
+
* @param {Transaction} tx the transaction data
|
|
13
|
+
*/
|
|
14
|
+
initBuilder(tx: Transaction): void;
|
|
15
|
+
get transactionType(): TransactionType;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritdoc
|
|
18
|
+
* */
|
|
19
|
+
get transaction(): Transaction;
|
|
20
|
+
/**
|
|
21
|
+
* @inheritdoc
|
|
22
|
+
* */
|
|
23
|
+
protected set transaction(transaction: Transaction);
|
|
24
|
+
/**
|
|
25
|
+
* Sets the sender of this transaction.
|
|
26
|
+
*
|
|
27
|
+
* @param {string} senderAddress the account that is sending this transaction
|
|
28
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
29
|
+
*/
|
|
30
|
+
sender(senderAddress: string): this;
|
|
31
|
+
/**
|
|
32
|
+
* Sets the gasData for this transaction.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} gasData the gas details for this transaction
|
|
35
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
36
|
+
*/
|
|
37
|
+
gasData(gasData: GasData): this;
|
|
38
|
+
/**
|
|
39
|
+
* Sets the gasSponsor of this transaction.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} sponsorAddress the account that is sponsoring this transaction's gas
|
|
42
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
43
|
+
*/
|
|
44
|
+
gasSponsor(sponsorAddress: string): this;
|
|
45
|
+
addSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
46
|
+
addGasSponsorSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
7
47
|
validateKey(key: BaseKey): void;
|
|
48
|
+
/**
|
|
49
|
+
* @inheritdoc
|
|
50
|
+
* */
|
|
8
51
|
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* @inheritdoc
|
|
54
|
+
* */
|
|
9
55
|
validateValue(value: BigNumber): void;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
56
|
+
/** @inheritdoc */
|
|
57
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* @inheritdoc
|
|
60
|
+
* */
|
|
61
|
+
validateTransaction(transaction?: Transaction): void;
|
|
62
|
+
/**
|
|
63
|
+
* @inheritdoc
|
|
64
|
+
* */
|
|
65
|
+
fromImplementation(rawTransaction: string | Uint8Array): Transaction;
|
|
66
|
+
/**
|
|
67
|
+
* @inheritdoc
|
|
68
|
+
* */
|
|
69
|
+
protected signImplementation(key: BaseKey): BaseTransaction;
|
|
70
|
+
/**
|
|
71
|
+
* @inheritdoc
|
|
72
|
+
* */
|
|
73
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
74
|
+
private validateGasData;
|
|
14
75
|
}
|
|
15
76
|
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,eAAe,EACf,sBAAsB,EAGtB,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAA0B,OAAO,EAAE,MAAM,SAAS,CAAC;AAG1D,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpC,SAAS,aAAa,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAItD;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IASlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;SAEK;IACL,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;SAEK;IACL,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMxC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3D,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOrE,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B;;SAEK;IACL,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE;;SAEK;IACL,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQrC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD;;SAEK;IACL,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAepD;;SAEK;IACL,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW;IAQpE;;SAEK;IACL,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;IAI3D;;SAEK;cACW,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAU3D,OAAO,CAAC,eAAe;CAWxB"}
|
|
@@ -1,38 +1,179 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransactionBuilder = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
const utils_2 = require("@iota/iota-sdk/utils");
|
|
5
11
|
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
constructor(coinConfig) {
|
|
13
|
+
super(coinConfig);
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
17
|
+
*
|
|
18
|
+
* @param {Transaction} tx the transaction data
|
|
19
|
+
*/
|
|
20
|
+
initBuilder(tx) {
|
|
21
|
+
this.validateTransaction(tx);
|
|
22
|
+
this.transaction.sender = tx.sender;
|
|
23
|
+
this.transaction.gasPrice = tx.gasPrice;
|
|
24
|
+
this.transaction.gasBudget = tx.gasBudget;
|
|
25
|
+
this.transaction.gasPaymentObjects = tx.gasPaymentObjects;
|
|
26
|
+
this.transaction.gasSponsor = tx.gasSponsor;
|
|
11
27
|
}
|
|
12
|
-
|
|
13
|
-
|
|
28
|
+
get transactionType() {
|
|
29
|
+
return this.transaction.type;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @inheritdoc
|
|
33
|
+
* */
|
|
34
|
+
get transaction() {
|
|
35
|
+
return this._transaction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @inheritdoc
|
|
39
|
+
* */
|
|
40
|
+
set transaction(transaction) {
|
|
41
|
+
this._transaction = transaction;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Sets the sender of this transaction.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} senderAddress the account that is sending this transaction
|
|
47
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
48
|
+
*/
|
|
49
|
+
sender(senderAddress) {
|
|
50
|
+
this.validateAddress({ address: senderAddress });
|
|
51
|
+
this.transaction.sender = senderAddress;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets the gasData for this transaction.
|
|
56
|
+
*
|
|
57
|
+
* @param {string} gasData the gas details for this transaction
|
|
58
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
59
|
+
*/
|
|
60
|
+
gasData(gasData) {
|
|
61
|
+
this.validateGasData(gasData);
|
|
62
|
+
this.transaction.gasPrice = gasData.gasPrice;
|
|
63
|
+
this.transaction.gasBudget = gasData.gasBudget;
|
|
64
|
+
this.transaction.gasPaymentObjects = gasData.gasPaymentObjects;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Sets the gasSponsor of this transaction.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} sponsorAddress the account that is sponsoring this transaction's gas
|
|
71
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
72
|
+
*/
|
|
73
|
+
gasSponsor(sponsorAddress) {
|
|
74
|
+
this.validateAddress({ address: sponsorAddress });
|
|
75
|
+
this.transaction.gasSponsor = sponsorAddress;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
addSignature(publicKey, signature) {
|
|
79
|
+
if (!utils_1.default.isValidPublicKey(publicKey.pub) || !utils_1.default.isValidSignature((0, utils_2.toBase64)(signature))) {
|
|
80
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction signature');
|
|
81
|
+
}
|
|
82
|
+
this.transaction.addSignature(publicKey, signature);
|
|
83
|
+
}
|
|
84
|
+
addGasSponsorSignature(publicKey, signature) {
|
|
85
|
+
if (!utils_1.default.isValidPublicKey(publicKey.pub) || !utils_1.default.isValidSignature((0, utils_2.toBase64)(signature))) {
|
|
86
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction signature');
|
|
87
|
+
}
|
|
88
|
+
this.transaction.addGasSponsorSignature(publicKey, signature);
|
|
14
89
|
}
|
|
15
90
|
validateKey(key) {
|
|
16
91
|
throw new Error('Method not implemented.');
|
|
17
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* @inheritdoc
|
|
95
|
+
* */
|
|
18
96
|
validateAddress(address, addressFormat) {
|
|
19
|
-
|
|
97
|
+
if (!utils_1.default.isValidAddress(address.address)) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
|
|
99
|
+
}
|
|
20
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* @inheritdoc
|
|
103
|
+
* */
|
|
21
104
|
validateValue(value) {
|
|
22
|
-
|
|
105
|
+
if (value.isNaN()) {
|
|
106
|
+
throw new sdk_core_1.BuildTransactionError('Invalid amount format');
|
|
107
|
+
}
|
|
108
|
+
else if (value.isLessThan(0)) {
|
|
109
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
110
|
+
}
|
|
23
111
|
}
|
|
112
|
+
/** @inheritdoc */
|
|
24
113
|
validateRawTransaction(rawTransaction) {
|
|
25
|
-
|
|
114
|
+
if (!rawTransaction) {
|
|
115
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
116
|
+
}
|
|
117
|
+
if (!utils_1.default.isValidRawTransaction(rawTransaction)) {
|
|
118
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
119
|
+
}
|
|
26
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* @inheritdoc
|
|
123
|
+
* */
|
|
27
124
|
validateTransaction(transaction) {
|
|
28
|
-
|
|
125
|
+
if (!transaction) {
|
|
126
|
+
throw new Error('transaction not defined');
|
|
127
|
+
}
|
|
128
|
+
this.validateAddress({ address: transaction.sender });
|
|
129
|
+
this.validateGasData({
|
|
130
|
+
gasBudget: transaction.gasBudget,
|
|
131
|
+
gasPrice: transaction.gasPrice,
|
|
132
|
+
gasPaymentObjects: transaction.gasPaymentObjects,
|
|
133
|
+
});
|
|
134
|
+
if (transaction.gasSponsor) {
|
|
135
|
+
this.validateAddress({ address: transaction.gasSponsor });
|
|
136
|
+
}
|
|
29
137
|
}
|
|
30
|
-
|
|
31
|
-
|
|
138
|
+
/**
|
|
139
|
+
* @inheritdoc
|
|
140
|
+
* */
|
|
141
|
+
fromImplementation(rawTransaction) {
|
|
142
|
+
if (!utils_1.default.isValidRawTransaction(rawTransaction)) {
|
|
143
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction');
|
|
144
|
+
}
|
|
145
|
+
this.transaction.parseFromBroadcastTx(rawTransaction);
|
|
146
|
+
return this.transaction;
|
|
32
147
|
}
|
|
33
|
-
|
|
148
|
+
/**
|
|
149
|
+
* @inheritdoc
|
|
150
|
+
* */
|
|
151
|
+
signImplementation(key) {
|
|
34
152
|
throw new Error('Method not implemented.');
|
|
35
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* @inheritdoc
|
|
156
|
+
* */
|
|
157
|
+
async buildImplementation() {
|
|
158
|
+
// If gas data is provided, this is not a simulate transaction
|
|
159
|
+
if (this.transaction.gasPrice && this.transaction.gasBudget && this.transaction.gasPaymentObjects) {
|
|
160
|
+
this.transaction.isSimulateTx = false;
|
|
161
|
+
}
|
|
162
|
+
await this.transaction.build();
|
|
163
|
+
this.transaction.addInputsAndOutputs();
|
|
164
|
+
return this.transaction;
|
|
165
|
+
}
|
|
166
|
+
validateGasData(gasData) {
|
|
167
|
+
if (gasData.gasBudget) {
|
|
168
|
+
this.validateValue(new bignumber_js_1.default(gasData.gasBudget));
|
|
169
|
+
}
|
|
170
|
+
if (gasData.gasPrice) {
|
|
171
|
+
this.validateValue(new bignumber_js_1.default(gasData.gasPrice));
|
|
172
|
+
}
|
|
173
|
+
if (gasData.gasPaymentObjects && gasData.gasPaymentObjects.length === 0) {
|
|
174
|
+
throw new sdk_core_1.BuildTransactionError('Gas input objects list is empty');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
36
177
|
}
|
|
37
178
|
exports.TransactionBuilder = TransactionBuilder;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFHO0FBR3JHLE1BQWEsa0JBQW1CLFNBQVEsaUNBQXNCO0lBQ2xELGtCQUFrQixDQUFDLGNBQW1CO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ1Msa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNTLG1CQUFtQjtRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLE9BQW9CLEVBQUUsYUFBc0I7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBZ0I7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELG1CQUFtQixDQUFDLFdBQTZCO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBYyxXQUFXO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBYyxXQUFXLENBQUMsV0FBNEI7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQS9CRCxnREErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSwgQmFzZVRyYW5zYWN0aW9uLCBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgcHJvdGVjdGVkIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogYW55KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBCYXNlVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUzhCO0FBQzlCLGdFQUFxQztBQUdyQyxvREFBNEI7QUFFNUIsZ0RBQWdEO0FBRWhELE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQUdyRSxZQUFzQixVQUFnQztRQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsRUFBZTtRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOztTQUVLO0lBQ0wsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7U0FFSztJQUNMLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FB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QUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztTQUVLO0lBQ0ssS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyw4REFBOEQ7UUFDOUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWdCO1FBQ3RDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxzQkFBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxNQUFNLElBQUksZ0NBQXFCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBekxELGdEQXlMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQsIEdhc0RhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IHRvQmFzZTY0IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbih0eCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZW5kZXIgPSB0eC5zZW5kZXI7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5nYXNQcmljZSA9IHR4Lmdhc1ByaWNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ID0gdHguZ2FzQnVkZ2V0O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMgPSB0eC5nYXNQYXltZW50T2JqZWN0cztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmdhc1Nwb25zb3IgPSB0eC5nYXNTcG9uc29yO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLnR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VuZGVyQWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmRlcihzZW5kZXJBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZW5kZXIgPSBzZW5kZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdhc0RhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBnYXNEYXRhIHRoZSBnYXMgZGV0YWlscyBmb3IgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVHYXNEYXRhKGdhc0RhdGEpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzUHJpY2UgPSBnYXNEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ID0gZ2FzRGF0YS5nYXNCdWRnZXQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5nYXNQYXltZW50T2JqZWN0cyA9IGdhc0RhdGEuZ2FzUGF5bWVudE9iamVjdHMgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdhc1Nwb25zb3Igb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNwb25zb3JBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc3BvbnNvcmluZyB0aGlzIHRyYW5zYWN0aW9uJ3MgZ2FzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2FzU3BvbnNvcihzcG9uc29yQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiBzcG9uc29yQWRkcmVzcyB9KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmdhc1Nwb25zb3IgPSBzcG9uc29yQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5LnB1YikgfHwgIXV0aWxzLmlzVmFsaWRTaWduYXR1cmUodG9CYXNlNjQoc2lnbmF0dXJlKSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gc2lnbmF0dXJlJyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHB1YmxpY0tleSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZEdhc1Nwb25zb3JTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleS5wdWIpIHx8ICF1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHRvQmFzZTY0KHNpZ25hdHVyZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHNpZ25hdHVyZScpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZEdhc1Nwb25zb3JTaWduYXR1cmUocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICB9XG5cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKiAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNOYU4oKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhbW91bnQgZm9ybWF0Jyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246IFVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zZW5kZXIgfSk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEoe1xuICAgICAgZ2FzQnVkZ2V0OiB0cmFuc2FjdGlvbi5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdHJhbnNhY3Rpb24uZ2FzUHJpY2UsXG4gICAgICBnYXNQYXltZW50T2JqZWN0czogdHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMsXG4gICAgfSk7XG4gICAgaWYgKHRyYW5zYWN0aW9uLmdhc1Nwb25zb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogdHJhbnNhY3Rpb24uZ2FzU3BvbnNvciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcgfCBVaW50OEFycmF5KTogVHJhbnNhY3Rpb24ge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnBhcnNlRnJvbUJyb2FkY2FzdFR4KHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKiAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICAvLyBJZiBnYXMgZGF0YSBpcyBwcm92aWRlZCwgdGhpcyBpcyBub3QgYSBzaW11bGF0ZSB0cmFuc2FjdGlvblxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmdhc1ByaWNlICYmIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ICYmIHRoaXMudHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uaXNTaW11bGF0ZVR4ID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVHYXNEYXRhKGdhc0RhdGE6IEdhc0RhdGEpOiB2b2lkIHtcbiAgICBpZiAoZ2FzRGF0YS5nYXNCdWRnZXQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGdhc0RhdGEuZ2FzQnVkZ2V0KSk7XG4gICAgfVxuICAgIGlmIChnYXNEYXRhLmdhc1ByaWNlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihnYXNEYXRhLmdhc1ByaWNlKSk7XG4gICAgfVxuICAgIGlmIChnYXNEYXRhLmdhc1BheW1lbnRPYmplY3RzICYmIGdhc0RhdGEuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdHYXMgaW5wdXQgb2JqZWN0cyBsaXN0IGlzIGVtcHR5Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { TransactionBuilder } from './transactionBuilder';
|
|
3
3
|
import { TransferBuilder } from './transferBuilder';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
6
|
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
7
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
5
8
|
getWalletInitializationBuilder(): void;
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
11
|
+
from(rawTx: string | Uint8Array): TransactionBuilder;
|
|
12
|
+
private identifyTxTypeFromRawTx;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the builder with the given transaction
|
|
15
|
+
*
|
|
16
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
17
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
18
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
19
|
+
*/
|
|
20
|
+
private initializeBuilder;
|
|
8
21
|
}
|
|
9
22
|
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|