@bitgo-beta/sdk-coin-algo 1.3.3-alpha.413 → 1.3.3-alpha.415
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/dist/src/algo.d.ts +12 -0
- package/dist/src/algo.d.ts.map +1 -1
- package/dist/src/algo.js +94 -1
- package/dist/test/fixtures/resources.d.ts +7 -0
- package/dist/test/fixtures/resources.d.ts.map +1 -1
- package/dist/test/fixtures/resources.js +10 -2
- package/dist/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/test/unit/verifyTransaction.js +703 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/src/algo.d.ts
CHANGED
|
@@ -237,6 +237,18 @@ export declare class Algo extends BaseCoin {
|
|
|
237
237
|
*/
|
|
238
238
|
isWalletAddress(params: VerifyAlgoAddressOptions): Promise<boolean>;
|
|
239
239
|
verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
|
|
240
|
+
/**
|
|
241
|
+
* Validate basic transaction fields common to all transaction types
|
|
242
|
+
*/
|
|
243
|
+
private validateBasicTransaction;
|
|
244
|
+
/**
|
|
245
|
+
* Validate Payment (pay) transaction
|
|
246
|
+
*/
|
|
247
|
+
private validatePayTransaction;
|
|
248
|
+
/**
|
|
249
|
+
* Validate Asset Transfer (axfer) transaction
|
|
250
|
+
*/
|
|
251
|
+
private validateAssetTransferTransaction;
|
|
240
252
|
decodeTx(txn: Buffer): unknown;
|
|
241
253
|
getAddressFromPublicKey(pubKey: Uint8Array): string;
|
|
242
254
|
supportsDeriveKeyWithSeed(): boolean;
|
package/dist/src/algo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algo.d.ts","sourceRoot":"","sources":["../../src/algo.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,SAAS,EAIT,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,IAAI,0BAA0B,EACpD,mBAAmB,EACnB,sBAAsB,EAItB,oBAAoB,EACpB,wBAAwB,EAExB,YAAY,EAEZ,uBAAuB,
|
|
1
|
+
{"version":3,"file":"algo.d.ts","sourceRoot":"","sources":["../../src/algo.ts"],"names":[],"mappings":"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"}
|
package/dist/src/algo.js
CHANGED
|
@@ -387,6 +387,99 @@ class Algo extends sdk_core_1.BaseCoin {
|
|
|
387
387
|
return rootAddress === address;
|
|
388
388
|
}
|
|
389
389
|
async verifyTransaction(params) {
|
|
390
|
+
const { txParams, txPrebuild, wallet, verification } = params;
|
|
391
|
+
if (!txParams) {
|
|
392
|
+
throw new Error('missing txParams');
|
|
393
|
+
}
|
|
394
|
+
if (!txPrebuild) {
|
|
395
|
+
throw new Error('missing txPrebuild');
|
|
396
|
+
}
|
|
397
|
+
if (!txPrebuild.txHex) {
|
|
398
|
+
throw new Error('missing txHex in txPrebuild');
|
|
399
|
+
}
|
|
400
|
+
const factory = this.getBuilder();
|
|
401
|
+
const txBuilder = factory.from(txPrebuild.txHex);
|
|
402
|
+
const tx = await txBuilder.build();
|
|
403
|
+
const txJson = tx.toJson();
|
|
404
|
+
// Validate based on Algorand transaction type
|
|
405
|
+
switch (txJson.type) {
|
|
406
|
+
case 'pay':
|
|
407
|
+
this.validatePayTransaction(txJson, txParams);
|
|
408
|
+
break;
|
|
409
|
+
case 'axfer':
|
|
410
|
+
this.validateAssetTransferTransaction(txJson, txParams);
|
|
411
|
+
break;
|
|
412
|
+
default:
|
|
413
|
+
// For other transaction types, perform basic validation
|
|
414
|
+
this.validateBasicTransaction(txJson);
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
// Verify consolidation transactions send to base address
|
|
418
|
+
if (verification?.consolidationToBaseAddress) {
|
|
419
|
+
if (!wallet?.coinSpecific()?.rootAddress) {
|
|
420
|
+
throw new Error('Unable to determine base address for consolidation');
|
|
421
|
+
}
|
|
422
|
+
const rootAddress = wallet.coinSpecific()?.rootAddress;
|
|
423
|
+
// Verify the transaction recipient matches the rootAddress
|
|
424
|
+
if (!txJson.to) {
|
|
425
|
+
throw new Error('Transaction is missing recipient address');
|
|
426
|
+
}
|
|
427
|
+
if (txJson.to !== rootAddress) {
|
|
428
|
+
throw new sdk_core_1.TxIntentMismatchError('Consolidation transaction recipient does not match wallet base address', txJson.to, [txParams], txJson);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Validate basic transaction fields common to all transaction types
|
|
435
|
+
*/
|
|
436
|
+
validateBasicTransaction(txJson) {
|
|
437
|
+
if (!txJson.from) {
|
|
438
|
+
throw new Error('Invalid transaction: missing sender address');
|
|
439
|
+
}
|
|
440
|
+
if (!txJson.fee || txJson.fee < 0) {
|
|
441
|
+
throw new Error('Invalid transaction: invalid fee');
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Validate Payment (pay) transaction
|
|
446
|
+
*/
|
|
447
|
+
validatePayTransaction(txJson, txParams) {
|
|
448
|
+
this.validateBasicTransaction(txJson);
|
|
449
|
+
if (!txJson.to) {
|
|
450
|
+
throw new Error('Invalid transaction: missing recipient address');
|
|
451
|
+
}
|
|
452
|
+
if (txJson.amount === undefined || txJson.amount < 0) {
|
|
453
|
+
throw new Error('Invalid transaction: invalid amount');
|
|
454
|
+
}
|
|
455
|
+
// Validate recipients if provided in txParams
|
|
456
|
+
if (txParams.recipients && txParams.recipients.length > 0) {
|
|
457
|
+
if (txParams.recipients.length !== 1) {
|
|
458
|
+
throw new Error('Algorand transactions can only have one recipient');
|
|
459
|
+
}
|
|
460
|
+
const expectedRecipient = txParams.recipients[0];
|
|
461
|
+
const expectedAmount = expectedRecipient.amount.toString();
|
|
462
|
+
const expectedAddress = expectedRecipient.address;
|
|
463
|
+
const actualAmount = txJson.amount.toString();
|
|
464
|
+
const actualAddress = txJson.to;
|
|
465
|
+
if (expectedAmount !== actualAmount) {
|
|
466
|
+
throw new Error('transaction amount in txPrebuild does not match the value given by client');
|
|
467
|
+
}
|
|
468
|
+
if (expectedAddress.toLowerCase() !== actualAddress.toLowerCase()) {
|
|
469
|
+
throw new Error('destination address does not match with the recipient address');
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return true;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Validate Asset Transfer (axfer) transaction
|
|
476
|
+
*/
|
|
477
|
+
validateAssetTransferTransaction(txJson, txParams) {
|
|
478
|
+
this.validateBasicTransaction(txJson);
|
|
479
|
+
// Basic amount validation if present
|
|
480
|
+
if (txJson.amount !== undefined && txJson.amount < 0) {
|
|
481
|
+
throw new Error('Invalid asset transfer transaction: invalid amount');
|
|
482
|
+
}
|
|
390
483
|
return true;
|
|
391
484
|
}
|
|
392
485
|
decodeTx(txn) {
|
|
@@ -634,4 +727,4 @@ class Algo extends sdk_core_1.BaseCoin {
|
|
|
634
727
|
}
|
|
635
728
|
}
|
|
636
729
|
exports.Algo = Algo;
|
|
637
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLG1EQUFnRDtBQUNoRCxpREFBd0Q7QUFDeEQsK0NBQWlDO0FBQ2pDLG1EQXlCOEI7QUFDOUIsOERBQWtDO0FBQ2xDLGdFQUFxQztBQUNyQyx3REFBZ0M7QUFFaEMsaURBQW1DO0FBQ25DLGlFQUtrQztBQUNsQyxtQ0FBZ0M7QUFFaEMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYztBQWlKeEMsTUFBYSxJQUFLLFNBQVEsbUJBQVE7SUFJaEMsWUFBWSxLQUFnQjtRQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFKTixpQkFBWSxHQUF3QixhQUFhLENBQUM7UUFDbEQsa0JBQWEsR0FBd0IsY0FBYyxDQUFDO0lBSTdELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFD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QztRQUM5QyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7Q0FDRjtBQXBxQkQsb0JBb3FCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFNlZWRWYWxpZGF0b3IgfSBmcm9tICcuL3NlZWRWYWxpZGF0b3InO1xuaW1wb3J0IHsgY29pbnMsIENvaW5GYW1pbHkgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCAqIGFzIEFsZ29MaWIgZnJvbSAnLi9saWInO1xuaW1wb3J0IHtcbiAgQWRkcmVzc0NvaW5TcGVjaWZpYyxcbiAgQmFzZUJyb2FkY2FzdFRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgQmFzZUJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzdWx0LFxuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBJbnZhbGlkS2V5LFxuICBLZXlJbmRpY2VzLFxuICBLZXlQYWlyLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUb2tlbk1hbmFnZW1lbnRUeXBlLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBOb3RTdXBwb3J0ZWQsXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBVdGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2xpYi9pZmFjZXMnO1xuaW1wb3J0ICogYXMgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7XG4gIE1BSU5ORVRfR0VORVNJU19IQVNILFxuICBNQUlOTkVUX0dFTkVTSVNfSUQsXG4gIFRFU1RORVRfR0VORVNJU19IQVNILFxuICBURVNUTkVUX0dFTkVTSVNfSUQsXG59IGZyb20gJy4vbGliL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCBTVVBQT1JURURfQUREUkVTU19WRVJTSU9OID0gMTtcbmNvbnN0IE1TSUdfVEhSRVNIT0xEID0gMjsgLy8gbSBpbiBtLW9mLW5cblxuZXhwb3J0IGludGVyZmFjZSBBbGdvQWRkcmVzc0NvaW5TcGVjaWZpY3MgZXh0ZW5kcyBBZGRyZXNzQ29pblNwZWNpZmljIHtcbiAgcm9vdEFkZHJlc3M6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgYml0Z29QdWJLZXk/OiBzdHJpbmc7XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeUFsZ29BZGRyZXNzT3B0aW9ucyBleHRlbmRzIFZlcmlmeUFkZHJlc3NPcHRpb25zIHtcbiAgY2hhaW46IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY29pbjogc3RyaW5nO1xuICB3YWxsZXQ6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBBbGdvQWRkcmVzc0NvaW5TcGVjaWZpY3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxnb1RyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgbWVtbz86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZyB8IG51bWJlcjtcbiAgdm90ZUtleT86IHN0cmluZztcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICB2b3RlRmlyc3Q/OiBudW1iZXI7XG4gIHZvdGVMYXN0PzogbnVtYmVyO1xuICB2b3RlS2V5RGlsdXRpb24/OiBudW1iZXI7XG4gIHRva2VuSWQ/OiBudW1iZXI7XG4gIG9wZXJhdGlvbnM/OiBUcmFuc2FjdGlvbk9wZXJhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uT3BlcmF0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgdHhJbmZvOiB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmc7XG4gICAgZmVlOiBudW1iZXI7XG4gICAgZmlyc3RSb3VuZDogbnVtYmVyO1xuICAgIGxhc3RSb3VuZDogbnVtYmVyO1xuICAgIGdlbmVzaXNJRDogc3RyaW5nO1xuICAgIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gICAgbm90ZT86IHN0cmluZztcbiAgfTtcbiAga2V5czogc3RyaW5nW107XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbHlTaWduZWRUcmFuc2FjdGlvbiB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFsZlNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgaGFsZlNpZ25lZDoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25GZWUge1xuICBmZWU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIHB1YmxpY0tleXM/OiBzdHJpbmdbXTtcbiAgZmVlSW5mbzogVHJhbnNhY3Rpb25GZWU7XG59XG5cbmludGVyZmFjZSBOb2RlUGFyYW1zIHtcbiAgdG9rZW46IHN0cmluZztcbiAgYmFzZVNlcnZlcjogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICB0eEhleDogc3RyaW5nO1xuICBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICBzaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJ2OiBzdHJpbmc7XG4gIGlzSGFsZlNpZ25lZDogYm9vbGVhbjtcbiAgbnVtYmVyU2lnbmVyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY292ZXJ5T3B0aW9ucyB7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIHJvb3RBZGRyZXNzOiBzdHJpbmc7XG4gIHJlY292ZXJ5RGVzdGluYXRpb246IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbiAgZmVlOiBudW1iZXI7XG4gIGZpcnN0Um91bmQ/OiBudW1iZXI7XG4gIG5vdGU/OiBzdHJpbmc7XG4gIG5vZGVQYXJhbXM6IE5vZGVQYXJhbXM7XG59XG5cbmludGVyZmFjZSBSZWNvdmVyeUluZm8ge1xuICBpZDogc3RyaW5nO1xuICB0eDogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG4gIGZlZTogbnVtYmVyO1xuICBmaXJzdFJvdW5kOiBudW1iZXI7XG4gIGxhc3RSb3VuZDogbnVtYmVyO1xuICBnZW5lc2lzSWQ6IHN0cmluZztcbiAgZ2VuZXNpc0hhc2g6IHN0cmluZztcbiAgbm90ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZmZsaW5lVmF1bHRUeEluZm8ge1xuICB0eEhleDogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICBiaXRnb0tleTogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNvaW46IHN0cmluZztcbiAgZmVlSW5mbzogbnVtYmVyO1xuICBhbW91bnQ6IHN0cmluZztcbiAgZmlyc3RSb3VuZDogbnVtYmVyO1xuICBsYXN0Um91bmQ6IG51bWJlcjtcbiAgZ2VuZXNpc0lkOiBzdHJpbmc7XG4gIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIG5vdGU/OiBzdHJpbmc7XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIGtleXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb2FkY2FzdFRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvbk9wdGlvbnMge1xuICBub2RlUGFyYW1zOiBOb2RlUGFyYW1zO1xufVxuXG5leHBvcnQgY2xhc3MgQWxnbyBleHRlbmRzIEJhc2VDb2luIHtcbiAgcmVhZG9ubHkgRU5BQkxFX1RPS0VOOiBUb2tlbk1hbmFnZW1lbnRUeXBlID0gJ2VuYWJsZXRva2VuJztcbiAgcmVhZG9ubHkgRElTQUJMRV9UT0tFTjogVG9rZW5NYW5hZ2VtZW50VHlwZSA9ICdkaXNhYmxldG9rZW4nO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEFsZ28oYml0Z28pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2FsZ28nO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdhbGdvJztcbiAgfVxuXG4gIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYWxnbyc7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQWxnb3JhbmQnO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgIHJldHVybiAxZTY7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGdvcmFuZCBzdXBwb3J0cyBhY2NvdW50IGNvbnNvbGlkYXRpb25zLiBUaGVzZSBhcmUgdHJhbnNmZXJzIGZyb20gdGhlIHJlY2VpdmUgYWRkcmVzc2VzXG4gICAqIHRvIHRoZSBtYWluIGFkZHJlc3MuXG4gICAqL1xuICBhbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGRvYyAqL1xuICBkZXJpdmVLZXlXaXRoU2VlZCgpOiB7IGRlcml2YXRpb25QYXRoOiBzdHJpbmc7IGtleTogc3RyaW5nIH0ge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ21ldGhvZCBkZXJpdmVLZXlXaXRoU2VlZCBub3Qgc3VwcG9ydGVkIGZvciBlZGRzYSBjdXJ2ZScpO1xuICB9XG5cbiAgLyoqIGluaGVyaXRkb2MgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBbGdvTGliLktleVBhaXIoeyBzZWVkIH0pIDogbmV3IEFsZ29MaWIuS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleVBhaXIuZ2V0QWRkcmVzcygpLFxuICAgICAgcHJ2OiBBbGdvTGliLmFsZ29VdGlscy5lbmNvZGVTZWVkKEJ1ZmZlci5mcm9tKGtleVBhaXIuZ2V0U2lnbmluZ0tleSgpKSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZG9jICovXG4gIGdlbmVyYXRlUm9vdEtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEFsZ29MaWIuS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgQWxnb0xpYi5LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7IHBydjoga2V5cy5wcnYgKyBrZXlzLnB1YiwgcHViOiBrZXlzLnB1YiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5pc1ZhbGlkQWRkcmVzcyhwdWIpIHx8IEFsZ29MaWIuYWxnb1V0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgc2VlZCBmb3IgdGhlIGNvaW5cbiAgICogSW4gQWxnb3JhbmQsIHdoZW4gdGhlIHByaXZhdGUga2V5IGlzIGVuY29kZWQgYXMgYmFzZTMyIHN0cmluZyBvbmx5IHRoZSBmaXJzdCAzMiBieXRlcyBhcmUgdGFrZW4sXG4gICAqIHNvIHRoZSBlbmNvZGVkIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZFNlZWQocHJ2KSB8fCBBbGdvTGliLmFsZ29VdGlscy5pc1ZhbGlkUHJpdmF0ZUtleShwcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFsZ29MaWIuYWxnb1V0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gbWVzc2FnZSB3aXRoIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBhbGdvS2V5cGFpciA9IG5ldyBBbGdvTGliLktleVBhaXIoeyBwcnY6IGtleS5wcnYgfSk7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihtZXNzYWdlKSkge1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYWxnb0tleXBhaXIuc2lnbk1lc3NhZ2UobWVzc2FnZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGF0IGtleSB3ZSB3aWxsIG5lZWQgZm9yIHNpZ25pbmdgIC0gQWxnb3JhbmQgbmVlZHMgdGhlIGJhY2t1cCwgYml0Z28gcHVicy5cbiAgICovXG4gIGtleUlkc0ZvclNpZ25pbmcoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbS2V5SW5kaWNlcy5VU0VSLCBLZXlJbmRpY2VzLkJBQ0tVUCwgS2V5SW5kaWNlcy5CSVRHT107XG4gIH1cblxuICBnZXRUb2tlbk5hbWVCeUlkKHRva2VuSWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9rZW5OYW1lcyA9IGNvaW5zLmZpbHRlcigoY29pbikgPT4gY29pbi5mYW1pbHkgPT09ICdhbGdvJyAmJiBjb2luLmlzVG9rZW4pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUhKTtcbiAgICByZXR1cm4gdG9rZW5OYW1lcy5maW5kKCh0b2tlbk5hbWUpID0+IHRva2VuTmFtZS5zcGxpdCgnLScpWzFdID09PSBgJHt0b2tlbklkfWApIHx8ICdBbGdvVG9rZW4gdW5rbm93bic7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbi9wYXJzZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBbGdvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4IHx8IChwYXJhbXMuaGFsZlNpZ25lZCAmJiBwYXJhbXMuaGFsZlNpZ25lZC50eEhleCk7XG4gICAgaWYgKCF0eEhleCB8fCAhcGFyYW1zLmZlZUluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBleHBsYWluIHR4IHBhcmFtZXRlcnMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhIZXgpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICBpZiAodHgudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0eEpzb24udG8sXG4gICAgICAgICAgYW1vdW50OiB0eEpzb24uYW1vdW50LFxuICAgICAgICAgIG1lbW86IHR4SnNvbi5ub3RlLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbnM6IFRyYW5zYWN0aW9uT3BlcmF0aW9uW10gPSBbXTtcblxuICAgICAgY29uc3QgaXNUb2tlblR4ID0gdGhpcy5pc1Rva2VuVHgodHhKc29uLnR5cGUpO1xuICAgICAgaWYgKGlzVG9rZW5UeCkge1xuICAgICAgICBjb25zdCB0eXBlID0gQWxnb0xpYi5hbGdvVXRpbHMuZ2V0VG9rZW5UeFR5cGUodHhKc29uLmFtb3VudCwgdHhKc29uLmZyb20sIHR4SnNvbi50bywgdHhKc29uLmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgICBvcGVyYXRpb25zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgY29pbjogdGhpcy5nZXRUb2tlbk5hbWVCeUlkKHR4SnNvbi50b2tlbklkKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnb3BlcmF0aW9ucycsXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogQWxnb1RyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgICAgaWQ6IHR4SnNvbi5pZCxcbiAgICAgICAgb3V0cHV0QW1vdW50OiB0eEpzb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgZmVlOiB0eEpzb24uZmVlLFxuICAgICAgICBtZW1vOiB0eEpzb24ubm90ZSxcbiAgICAgICAgdHlwZTogdHgudHlwZS50b1N0cmluZygpLFxuICAgICAgICBvcGVyYXRpb25zLFxuICAgICAgfTtcblxuICAgICAgaWYgKHR4SnNvbi50b2tlbklkKSB7XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnRva2VuSWQgPSB0eEpzb24udG9rZW5JZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4cGxhbmF0aW9uUmVzdWx0O1xuICAgIH1cblxuICAgIGlmICh0eC50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAndm90ZUtleScsXG4gICAgICAgICdzZWxlY3Rpb25LZXknLFxuICAgICAgICAndm90ZUZpcnN0JyxcbiAgICAgICAgJ3ZvdGVMYXN0JyxcbiAgICAgICAgJ3ZvdGVLZXlEaWx1dGlvbicsXG4gICAgICBdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBmZWU6IHR4SnNvbi5mZWUsXG4gICAgICAgIG1lbW86IHR4SnNvbi5ub3RlLFxuICAgICAgICB0eXBlOiB0eC50eXBlLFxuICAgICAgICB2b3RlS2V5OiB0eEpzb24udm90ZUtleSxcbiAgICAgICAgc2VsZWN0aW9uS2V5OiB0eEpzb24uc2VsZWN0aW9uS2V5LFxuICAgICAgICB2b3RlRmlyc3Q6IHR4SnNvbi52b3RlRmlyc3QsXG4gICAgICAgIHZvdGVMYXN0OiB0eEpzb24udm90ZUxhc3QsXG4gICAgICAgIHZvdGVLZXlEaWx1dGlvbjogdHhKc29uLnZvdGVLZXlEaWx1dGlvbixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaWYgYSB0eCBpcyBhIHRva2VuIHR4XG4gICAqIEBwYXJhbSB0eXBlIHtzdHJpbmd9IC0gdHggdHlwZVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGl0J3MgYSB0b2tlbiB0eFxuICAgKi9cbiAgaXNUb2tlblR4KHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlID09PSAnYXhmZXInO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgc2VlZCBpcyBhIHZhbGlkIHN0ZWxsYXIgc2VlZFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc2VlZCB0aGUgc2VlZCB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgaW5wdXQgaXMgYSBTdGVsbGFyIHNlZWRcbiAgICovXG4gIGlzU3RlbGxhclNlZWQoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNlZWRWYWxpZGF0b3IuaXNWYWxpZEVkMjU1MTlTZWVkRm9yQ29pbihzZWVkLCBDb2luRmFtaWx5LlhMTSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0ZWxsYXIgc2VlZCB0byBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlZWQgdGhlIHNlZWQgdG8gY29udmVydFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbiB8IG51bGx9IHNlZWQgaW4gYWxnbyBlbmNvZGluZ1xuICAgKi9cbiAgY29udmVydEZyb21TdGVsbGFyU2VlZChzZWVkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBhc3N1bWUgdGhpcyBpcyBhIHRydXN0IGN1c3RvZGlhbCBzZWVkIGlmIGl0cyBhIHZhbGlkIGVkMjU1MTkgcHJ2XG4gICAgaWYgKCF0aGlzLmlzU3RlbGxhclNlZWQoc2VlZCkgfHwgU2VlZFZhbGlkYXRvci5oYXNDb21wZXRpbmdTZWVkRm9ybWF0cyhzZWVkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKFNlZWRWYWxpZGF0b3IuaXNWYWxpZEVkMjU1MTlTZWVkRm9yQ29pbihzZWVkLCBDb2luRmFtaWx5LlhMTSkpIHtcbiAgICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5jb252ZXJ0RnJvbVN0ZWxsYXJTZWVkKHNlZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmVyaWZ5U2lnblRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFZlcmlmaWVkVHJhbnNhY3Rpb25QYXJhbWV0ZXJzIHtcbiAgICBjb25zdCBwcnYgPSBwYXJhbXMucHJ2O1xuICAgIGNvbnN0IGFkZHJlc3NWZXJzaW9uID0gcGFyYW1zLnR4UHJlYnVpbGQuYWRkcmVzc1ZlcnNpb247XG4gICAgbGV0IGlzSGFsZlNpZ25lZCA9IGZhbHNlO1xuXG4gICAgLy8gaXQncyBwb3NzaWJsZSB0aGlzIHR4IHdhcyBhbHJlYWR5IHNpZ25lZCAtIHRha2UgdGhlIGhhbGZTaWduZWRcbiAgICAvLyB0eEhleCBpZiBpdCBpc1xuICAgIGxldCB0eEhleCA9IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmIChwYXJhbXMudHhQcmVidWlsZC5oYWxmU2lnbmVkKSB7XG4gICAgICBpc0hhbGZTaWduZWQgPSB0cnVlO1xuICAgICAgdHhIZXggPSBwYXJhbXMudHhQcmVidWlsZC5oYWxmU2lnbmVkLnR4SGV4O1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHR4SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQgcGFyYW1ldGVyJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHR4SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgdHlwZSAke3R5cGVvZiB0eEhleH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcHJ2IHBhcmFtZXRlciB0byBzaWduIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHBydikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJ2IG11c3QgYmUgYSBzdHJpbmcsIGdvdCB0eXBlICR7dHlwZW9mIHBydn1gKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaGFzKHBhcmFtcy50eFByZWJ1aWxkLCAna2V5cycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcHVibGljIGtleXMgcGFyYW1ldGVyIHRvIHNpZ24gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNOdW1iZXIoYWRkcmVzc1ZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYWRkcmVzc1ZlcnNpb24gcGFyYW1ldGVyIHRvIHNpZ24gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZXJzID0gcGFyYW1zLnR4UHJlYnVpbGQua2V5cy5tYXAoKGtleSkgPT4ge1xuICAgICAgLy8gaWYgd2UgYXJlIHJlY2VpdmluZyBhZGRyZXNzZXMgZG8gbm90IHRyeSB0byBjb252ZXJ0IHRoZW1cbiAgICAgIGlmICghQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZEFkZHJlc3Moa2V5KSkge1xuICAgICAgICByZXR1cm4gQWxnb0xpYi5hbGdvVXRpbHMucHVibGljS2V5VG9BbGdvQWRkcmVzcyhBbGdvTGliLmFsZ29VdGlscy50b1VpbnQ4QXJyYXkoa2V5KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIC8vIFRPRE8oaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9TVExYLTYwNjcpOiBmaXggdGhlIG51bWJlciBvZiBzaWduZXJzIHVzaW5nXG4gICAgLy8gc2hvdWxkIGJlIHNpbWlsYXIgdG8gb3RoZXIgY29pbnMgaW1wbGVtZW50YXRpb25cbiAgICAvLyBJZiB3ZSBoYXZlIGEgbnVtYmVyIHdpdGggZGlnaXRzIHRvIGVsaW1pbmF0ZSB0aGVtIHdpdGhvdXQgdGFraW5nIGFueSByb3VuZGluZyBjcml0ZXJpYS5cbiAgICBjb25zdCBudW1iZXJTaWduZXJzID0gTWF0aC50cnVuYyhzaWduZXJzLmxlbmd0aCAvIDIpICsgMTtcbiAgICByZXR1cm4geyB0eEhleCwgYWRkcmVzc1ZlcnNpb24sIHNpZ25lcnMsIHBydiwgaXNIYWxmU2lnbmVkLCBudW1iZXJTaWduZXJzIH07XG4gIH1cblxuICAvKipcbiAgICogQXNzZW1ibGUga2V5Y2hhaW4gYW5kIGhhbGYtc2lnbiBwcmVidWlsdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMudHhQcmVidWlsZCB7VHJhbnNhY3Rpb25QcmVidWlsZH0gcHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHBsYXRmb3JtXG4gICAqIEBwYXJhbSBwYXJhbXMucHJ2IHtTdHJpbmd9IHVzZXIgcHJ2XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPn1cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgeyB0eEhleCwgc2lnbmVycywgcHJ2LCBpc0hhbGZTaWduZWQsIG51bWJlclNpZ25lcnMgfSA9IHRoaXMudmVyaWZ5U2lnblRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtcyk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eEhleCk7XG4gICAgdHhCdWlsZGVyLm51bWJlck9mUmVxdWlyZWRTaWduZXJzKG51bWJlclNpZ25lcnMpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBwcnYgfSk7XG4gICAgdHhCdWlsZGVyLnNldFNpZ25lcnMoc2lnbmVycyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgaWYgKG51bWJlclNpZ25lcnMgPT09IDEpIHtcbiAgICAgIHJldHVybiB7IHR4SGV4OiBzaWduZWRUeEhleCB9O1xuICAgIH0gZWxzZSBpZiAoaXNIYWxmU2lnbmVkKSB7XG4gICAgICByZXR1cm4geyB0eEhleDogc2lnbmVkVHhIZXggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgaGFsZlNpZ25lZDogeyB0eEhleDogc2lnbmVkVHhIZXggfSB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBjYW4gYmUgdXNlZCB0byBzZW5kIGZ1bmRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLmFkZHJlc3MgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zLmtleWNoYWlucyBwdWJsaWMga2V5cyB0byBnZW5lcmF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBbGdvQWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7XG4gICAgICBhZGRyZXNzLFxuICAgICAga2V5Y2hhaW5zLFxuICAgICAgY29pblNwZWNpZmljOiB7IGJpdGdvUHViS2V5IH0sXG4gICAgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGlmICgha2V5Y2hhaW5zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWZmZWN0aXZlS2V5Y2hhaW4gPSBiaXRnb1B1YktleSA/IGtleWNoYWlucy5zbGljZSgwLCAtMSkuY29uY2F0KFt7IHB1YjogYml0Z29QdWJLZXkgfV0pIDoga2V5Y2hhaW5zO1xuICAgIGNvbnN0IHB1YktleXMgPSBlZmZlY3RpdmVLZXljaGFpbi5tYXAoKGtleSkgPT4gdGhpcy5zdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3Moa2V5LnB1YikpO1xuXG4gICAgaWYgKCFwdWJLZXlzLmV2ZXJ5KChwdWJLZXkpID0+IHRoaXMuaXNWYWxpZFB1YihwdWJLZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ2ludmFsaWQgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3RBZGRyZXNzID0gQWxnb0xpYi5hbGdvVXRpbHMubXVsdGlzaWdBZGRyZXNzKFNVUFBPUlRFRF9BRERSRVNTX1ZFUlNJT04sIE1TSUdfVEhSRVNIT0xELCBwdWJLZXlzKTtcblxuICAgIHJldHVybiByb290QWRkcmVzcyA9PT0gYWRkcmVzcztcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkZWNvZGVUeCh0eG46IEJ1ZmZlcik6IHVua25vd24ge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5kZWNvZGVBbGdvVHhuKHR4bik7XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXk6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5wdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHB1YktleSk7XG4gIH1cblxuICBzdXBwb3J0c0Rlcml2ZUtleVdpdGhTZWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy5vbmNoYWluO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY29uZmlnIGZvciBob3cgdG9rZW4gZW5hYmxlbWVudHMgd29yayBmb3IgdGhpcyBjb2luXG4gICAqIEByZXR1cm5zXG4gICAqICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiBUcnVlIGlmIHRva2VucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgY29pblxuICAgKiAgICBzdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50czogVHJ1ZSBpZiBtdWx0aXBsZSB0b2tlbnMgY2FuIGJlIGVuYWJsZWQgaW4gb25lIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFsYW5jZSBvZiB0aGUgcm9vdCBhZGRyZXNzIGluIGJhc2UgdW5pdHMgb2YgYWxnb1xuICAgKiBFZy4gSWYgYmFsYW5jZSBpcyAxIEFsZ28sIHRoaXMgcmV0dXJucyAxKjEwXjZcbiAgICogQHBhcmFtIHJvb3RBZGRyZXNzXG4gICAqIEBwYXJhbSBjbGllbnRcbiAgICovXG4gIGFzeW5jIGdldEFjY291bnRCYWxhbmNlKHJvb3RBZGRyZXNzOiBzdHJpbmcsIGNsaWVudDogYWxnb3Nkay5BbGdvZHYyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBhY2NvdW50SW5mb3JtYXRpb24gPSBhd2FpdCBjbGllbnQuYWNjb3VudEluZm9ybWF0aW9uKHJvb3RBZGRyZXNzKS5kbygpO1xuICAgIC8vIEV4dHJhY3QgdGhlIGJhbGFuY2UgZnJvbSB0aGUgYWNjb3VudCBpbmZvcm1hdGlvblxuICAgIHJldHVybiBhY2NvdW50SW5mb3JtYXRpb24uYW1vdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEFsZ28gY2xpZW50IGZvciB0aGUgZ2l2ZW4gdG9rZW4sIGJhc2VTZXJ2ZXIgYW5kIHBvcnRcbiAgICogVXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBBbGdvIG5ldHdvcmtcbiAgICovXG4gIGdldENsaWVudCh0b2tlbjogc3RyaW5nLCBiYXNlU2VydmVyOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IGFsZ29zZGsuQWxnb2R2MiB7XG4gICAgcmV0dXJuIG5ldyBhbGdvc2RrLkFsZ29kdjIodG9rZW4sIGJhc2VTZXJ2ZXIsIHBvcnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY292ZXIocGFyYW1zOiBSZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPFJlY292ZXJ5SW5mbyB8IE9mZmxpbmVWYXVsdFR4SW5mbz4ge1xuICAgIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9IHRoaXMuaXNWYWxpZFB1YihwYXJhbXMudXNlcktleSkgJiYgdGhpcy5pc1ZhbGlkUHViKHBhcmFtcy5iYWNrdXBLZXkpO1xuXG4gICAgaWYgKCFwYXJhbXMubm9kZVBhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSB0aGUgZGV0YWlscyBvZiBhbiBBTEdPIG5vZGUgdG8gdXNlIGZvciByZWNvdmVyeScpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoZSByb290IGFkZHJlc3NcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJvb3RBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJvb3RBZGRyZXNzLCBnb3Q6ICcgKyBwYXJhbXMucm9vdEFkZHJlc3MpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24sIGdvdDogJyArIHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmZpcnN0Um91bmQgJiYgbmV3IEJpZ051bWJlcihwYXJhbXMuZmlyc3RSb3VuZCkuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IHJvdW5kIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgdmFsdWUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBnZW5lc2lzSWQgPSB0aGlzLmJpdGdvLmdldEVudigpID09PSAncHJvZCcgPyBNQUlOTkVUX0dFTkVTSVNfSUQgOiBURVNUTkVUX0dFTkVTSVNfSUQ7XG4gICAgY29uc3QgZ2VuZXNpc0hhc2ggPSB0aGlzLmJpdGdvLmdldEVudigpID09PSAncHJvZCcgPyBNQUlOTkVUX0dFTkVTSVNfSEFTSCA6IFRFU1RORVRfR0VORVNJU19IQVNIO1xuXG4gICAgVXRpbHMudmFsaWRhdGVCYXNlNjQoZ2VuZXNpc0hhc2gpO1xuXG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXAgJiYgIXBhcmFtcy53YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldFBhc3NwaHJhc2UgaXMgcmVxdWlyZWQgZm9yIG5vbi1iaXRnbyByZWNvdmVyeScpO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgQWxnb0xpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgnYWxnbycpKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuXG4gICAgbGV0IHVzZXJQcnY6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYmFja3VwUHJ2OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIGlmICghcGFyYW1zLmJpdGdvS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYml0Z28gcHVibGljIGtleSBmcm9tIHRoZSBrZXlDYXJkIGlzIHJlcXVpcmVkIGZvciBub24tYml0Z28gcmVjb3ZlcnknKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHVzZXJQcnYgPSB0aGlzLmJpdGdvLmRlY3J5cHQoeyBpbnB1dDogcGFyYW1zLnVzZXJLZXksIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICAgICAgYmFja3VwUHJ2ID0gdGhpcy5iaXRnby5kZWNyeXB0KHsgaW5wdXQ6IHBhcmFtcy5iYWNrdXBLZXksIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICAgICAgY29uc3QgdXNlcktleUFkZHJlc3MgPSBVdGlscy5wcml2YXRlS2V5VG9BbGdvQWRkcmVzcyh1c2VyUHJ2KTtcbiAgICAgICAgY29uc3QgYmFja3VwS2V5QWRkcmVzcyA9IFV0aWxzLnByaXZhdGVLZXlUb0FsZ29BZGRyZXNzKGJhY2t1cFBydik7XG4gICAgICAgIHR4QnVpbGRlci5udW1iZXJPZlJlcXVpcmVkU2lnbmVycygyKS5zZXRTaWduZXJzKFt1c2VyS2V5QWRkcmVzcywgYmFja3VwS2V5QWRkcmVzcywgcGFyYW1zLmJpdGdvS2V5XSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAndW5hYmxlIHRvIGRlY3J5cHQgdXNlcktleSBvciBiYWNrdXBLZXkgd2l0aCB0aGUgd2FsbGV0UGFzc3BocmFzZSBwcm92aWRlZCwgZ290IGVycm9yOiAnICsgZS5tZXNzYWdlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQocGFyYW1zLm5vZGVQYXJhbXMudG9rZW4sIHBhcmFtcy5ub2RlUGFyYW1zLmJhc2VTZXJ2ZXIsIHBhcmFtcy5ub2RlUGFyYW1zLnBvcnQpO1xuICAgIGNvbnN0IG5hdGl2ZUJhbGFuY2UgPSBhd2FpdCB0aGlzLmdldEFjY291bnRCYWxhbmNlKHBhcmFtcy5yb290QWRkcmVzcywgY2xpZW50KTtcblxuICAgIC8vIEFsZ29yYW5kIGFjY291bnRzIHJlcXVpcmUgYSBtaW4uIGJhbGFuY2Ugb2YgMSBBTEdPXG4gICAgY29uc3QgTUlOX01JQ1JPQUxHT1NfQkFMQU5DRSA9IDEwMDAwMDtcbiAgICBjb25zdCBzcGVuZGFibGVBbW91bnQgPSBuZXcgQmlnTnVtYmVyKG5hdGl2ZUJhbGFuY2UpLm1pbnVzKHBhcmFtcy5mZWUpLm1pbnVzKE1JTl9NSUNST0FMR09TX0JBTEFOQ0UpLnRvTnVtYmVyKCk7XG5cbiAgICBpZiAobmV3IEJpZ051bWJlcihzcGVuZGFibGVBbW91bnQpLmlzWmVybygpIHx8IG5ldyBCaWdOdW1iZXIoc3BlbmRhYmxlQW1vdW50KS5pc0xlc3NUaGFuT3JFcXVhbFRvKHBhcmFtcy5mZWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnN1ZmZpY2llbnQgYmFsYW5jZSB0byByZWNvdmVyLCBnb3QgYmFsYW5jZTogJyArXG4gICAgICAgICAgbmF0aXZlQmFsYW5jZSArXG4gICAgICAgICAgJyBmZWU6ICcgK1xuICAgICAgICAgIHBhcmFtcy5mZWUgK1xuICAgICAgICAgICcgbWluIGFjY291bnQgYmFsYW5jZTogJyArXG4gICAgICAgICAgTUlOX01JQ1JPQUxHT1NfQkFMQU5DRVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbGF0ZXN0Um91bmQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXBhcmFtcy5maXJzdFJvdW5kKSB7XG4gICAgICBsYXRlc3RSb3VuZCA9IGF3YWl0IGNsaWVudFxuICAgICAgICAuc3RhdHVzKClcbiAgICAgICAgLmRvKClcbiAgICAgICAgLnRoZW4oKHN0YXR1cykgPT4gc3RhdHVzWydsYXN0LXJvdW5kJ10pO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0Um91bmQgPSAhcGFyYW1zLmZpcnN0Um91bmQgPyBsYXRlc3RSb3VuZCA6IHBhcmFtcy5maXJzdFJvdW5kO1xuICAgIGlmICghZmlyc3RSb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmV0Y2ggdGhlIGxhdGVzdCByb3VuZCBmcm9tIHRoZSBub2RlLiBQbGVhc2UgcHJvdmlkZSB0aGUgZmlyc3RSb3VuZCBvciB0cnkgYWdhaW4uJyk7XG4gICAgfVxuICAgIGNvbnN0IExBU1RfUk9VTkRfQlVGRkVSID0gMTAwMDtcbiAgICBjb25zdCBsYXN0Um91bmQgPSBmaXJzdFJvdW5kICsgTEFTVF9ST1VORF9CVUZGRVI7XG5cbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5mZWUoeyBmZWU6IHBhcmFtcy5mZWUudG9TdHJpbmcoKSB9KVxuICAgICAgLmlzRmxhdEZlZSh0cnVlKVxuICAgICAgLnNlbmRlcih7XG4gICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yb290QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgICAudG8oe1xuICAgICAgICBhZGRyZXNzOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pXG4gICAgICAuYW1vdW50KHNwZW5kYWJsZUFtb3VudClcbiAgICAgIC5nZW5lc2lzSWQoZ2VuZXNpc0lkKVxuICAgICAgLmdlbmVzaXNIYXNoKGdlbmVzaXNIYXNoKVxuICAgICAgLmZpcnN0Um91bmQobmV3IEJpZ051bWJlcihmaXJzdFJvdW5kKS50b051bWJlcigpKVxuICAgICAgLmxhc3RSb3VuZChuZXcgQmlnTnVtYmVyKGxhc3RSb3VuZCkudG9OdW1iZXIoKSk7XG5cbiAgICBpZiAocGFyYW1zLm5vdGUpIHtcbiAgICAgIGNvbnN0IG5vdGUgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwYXJhbXMubm90ZSwgJ3V0Zi04JykpO1xuICAgICAgdHhCdWlsZGVyLm5vdGUobm90ZSk7XG4gICAgfVxuXG4gICAgLy8gQ29sZCB3YWxsZXQsIG9mZmxpbmUgdmF1bHRcbiAgICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCkgYXMgVHhEYXRhO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eEhleDogQnVmZmVyLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0eXBlOiB0eEpzb24udHlwZSxcbiAgICAgICAgdXNlcktleTogcGFyYW1zLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogcGFyYW1zLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHBhcmFtcy5iaXRnb0tleSxcbiAgICAgICAgYWRkcmVzczogcGFyYW1zLnJvb3RBZGRyZXNzLFxuICAgICAgICBjb2luOiB0aGlzLmdldENoYWluKCksXG4gICAgICAgIGZlZUluZm86IHR4SnNvbi5mZWUsXG4gICAgICAgIGFtb3VudDogdHhKc29uLmFtb3VudCA/PyBuYXRpdmVCYWxhbmNlLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0Um91bmQ6IHR4SnNvbi5maXJzdFJvdW5kLFxuICAgICAgICBsYXN0Um91bmQ6IHR4SnNvbi5sYXN0Um91bmQsXG4gICAgICAgIGdlbmVzaXNJZDogZ2VuZXNpc0lkLFxuICAgICAgICBnZW5lc2lzSGFzaDogZ2VuZXNpc0hhc2gsXG4gICAgICAgIG5vdGU6IHR4SnNvbi5ub3RlID8gQnVmZmVyLmZyb20odHhKc29uLm5vdGUuYnVmZmVyKS50b1N0cmluZygndXRmLTgnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAga2V5czogW3BhcmFtcy51c2VyS2V5LCBwYXJhbXMuYmFja3VwS2V5LCBwYXJhbXMuYml0Z29LZXldLFxuICAgICAgICBhZGRyZXNzVmVyc2lvbjogMSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gTm9uLWJpdGdvIFJlY292ZXJ5IChIb3Qgd2FsbGV0cylcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdXNlclBydiB9KTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogYmFja3VwUHJ2IH0pO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKSBhcyBUeERhdGE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHg6IEJ1ZmZlci5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICBjb2luOiB0aGlzLmdldENoYWluKCksXG4gICAgICBmZWU6IHR4SnNvbi5mZWUsXG4gICAgICBmaXJzdFJvdW5kOiB0eEpzb24uZmlyc3RSb3VuZCxcbiAgICAgIGxhc3RSb3VuZDogdHhKc29uLmxhc3RSb3VuZCxcbiAgICAgIGdlbmVzaXNJZDogZ2VuZXNpc0lkLFxuICAgICAgZ2VuZXNpc0hhc2g6IGdlbmVzaXNIYXNoLFxuICAgICAgbm90ZTogdHhKc29uLm5vdGUgPyBCdWZmZXIuZnJvbSh0eEpzb24ubm90ZS5idWZmZXIpLnRvU3RyaW5nKCd1dGYtOCcpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGZ1bGx5IHNpZ25lZCBzZXJpYWxpemVkIGJhc2U2NCB0cmFuc2FjdGlvbiBhbmQgYnJvYWRjYXN0cyBpdCBvbiB0aGUgbmV0d29yay5cbiAgICogVXNlcyB0aGUgZXh0ZXJuYWwgbm9kZSBwcm92aWRlZCBieSB0aGUgY2xpZW50XG4gICAqIEBwYXJhbSBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIG5vZGVQYXJhbXNcbiAgICovXG4gIGFzeW5jIGJyb2FkY2FzdFRyYW5zYWN0aW9uKHtcbiAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgbm9kZVBhcmFtcyxcbiAgfTogQnJvYWRjYXN0VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICBpZiAoIW5vZGVQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHByb3ZpZGUgdGhlIGRldGFpbHMgb2YgdGhlIGFsZ29yYW5kIG5vZGUnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4SGV4ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgYWxnb1R4ID0gVXRpbHMudG9VaW50OEFycmF5KHR4SGV4KTtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KG5vZGVQYXJhbXMudG9rZW4sIG5vZGVQYXJhbXMuYmFzZVNlcnZlciwgbm9kZVBhcmFtcy5wb3J0KTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGNsaWVudC5zZW5kUmF3VHJhbnNhY3Rpb24oYWxnb1R4KS5kbygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGJyb2FkY2FzdCB0cmFuc2FjdGlvbiwgZXJyb3I6ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGVsbGFyIGFuZCBBbGdvcmFuZCBib3RoIHVzZSBrZXlzIG9uIHRoZSBlZDI1NTE5IGN1cnZlLCBidXQgdXNlIGRpZmZlcmVudCBlbmNvZGluZ3MuXG4gICAqIEFzIHRoZSBIU00gZG9lc24ndCBoYXZlIGV4cGxpY2l0IHN1cHBvcnQgdG8gY3JlYXRlIEFsZ29yYW5kIGFkZHJlc3Nlcywgd2UgdXNlIHRoZSBTdGVsbGFyXG4gICAqIGtleXMgYW5kIHJlLWVuY29kZSB0aGVtIHRvIHRoZSBBbGdvcmFuZCBlbmNvZGluZy5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIEFsZ29yYW5kIGN1c3RvZGlhbCB3YWxsZXRzIHJldXNpbmcgU3RlbGxhciBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc09yUHViS2V5IGEgU3RlbGxhciBwdWJrZXkgb3IgQWxnb3JhbmQgYWRkcmVzc1xuICAgKiBAcmV0dXJuIHsqfVxuICAgKi9cbiAgcHJpdmF0ZSBzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MoYWRkcmVzc09yUHViS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHdlIGhhdmUgYW4gQWxnb3JhbmQgYWRkcmVzc1xuICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIHJldHVybiBhZGRyZXNzT3JQdWJLZXk7XG4gICAgfVxuXG4gICAgLy8gd2UgaGF2ZSBhIHN0ZWxsYXIga2V5XG4gICAgaWYgKHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIGNvbnN0IHN0ZWxsYXJQdWIgPSBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KGFkZHJlc3NPclB1YktleSk7XG4gICAgICBjb25zdCBhbGdvQWRkcmVzcyA9IEFsZ29MaWIuYWxnb1V0aWxzLmVuY29kZUFkZHJlc3Moc3RlbGxhclB1Yik7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhbGdvQWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGFsZ29BZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IFN0ZWxsYXIgYWRkcmVzcyB0byBhbiBBbGdvcmFuZCBhZGRyZXNzIHZpYSBzdGVsbGFyIHB1YmtleS4nKTtcbiAgICAgIC8vIHdlIGhhdmUgYSByb290IHB1YmtleVxuICAgIH0gZWxzZSBpZiAoQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZFB1YmxpY0tleShhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBBbGdvTGliLktleVBhaXIoeyBwdWI6IGFkZHJlc3NPclB1YktleSB9KTtcbiAgICAgIGNvbnN0IGFsZ29BZGRyZXNzID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWxnb0FkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBhbGdvQWRkcmVzcztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKCdJbnZhbGlkIHJvb3QgcHVia2V5LicpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKCdOZWl0aGVyIGFuIEFsZ29yYW5kIGFkZHJlc3MsIGEgc3RlbGxhciBwdWJrZXkgb3IgYSByb290IHB1YmxpYyBrZXkuJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogQWxnb0xpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IEFsZ29MaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRCYXNlQ2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgcHVibGljS2V5LCBwcnYsIG11bHRpU2lnVHlwZSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcykge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgPT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cblxuICAgIGxldCBhbGdvS2V5O1xuICAgIHRyeSB7XG4gICAgICBhbGdvS2V5ID0gbmV3IEFsZ29MaWIuS2V5UGFpcih7IHBydiB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJpdmF0ZSBrZXk6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAocHVibGljS2V5ICYmIHB1YmxpY0tleSAhPT0gYWxnb0tleS5nZXRLZXlzKCkucHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxufVxuIl19
|
|
730
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLG1EQUFnRDtBQUNoRCxpREFBd0Q7QUFDeEQsK0NBQWlDO0FBQ2pDLG1EQTBCOEI7QUFDOUIsOERBQWtDO0FBQ2xDLGdFQUFxQztBQUNyQyx3REFBZ0M7QUFFaEMsaURBQW1DO0FBQ25DLGlFQUtrQztBQUNsQyxtQ0FBZ0M7QUFFaEMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYztBQWlKeEMsTUFBYSxJQUFLLFNBQVEsbUJBQVE7SUFJaEMsWUFBWSxLQUFnQjtRQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFKTixpQkFBWSxHQUF3QixhQUFhLENBQUM7UUFDbEQsa0JBQWEsR0FBd0IsY0FBYyxDQUFDO0lBSTdELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLGlCQUFpQjtRQUNmLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixlQUFlLENBQUMsSUFBYTtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDekIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsbUJBQW1CLENBQUMsSUFBYTtRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBWSxFQUFFLE9BQXdCO1FBQ3RELE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLGVBQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLENBQUMscUJBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQVUsQ0FBQyxNQUFNLEVBQUUscUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBd0I7UUFDdkMsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQzNHLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUM7SUFDekcsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFpQztRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLDBCQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQTJCO2dCQUN0QztvQkFDRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ2xCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDckIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2lCQUNsQjthQUNGLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBMkIsRUFBRSxDQUFDO1lBRTlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzlHLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2QsSUFBSSxFQUFFLElBQUk7b0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2lCQUM1QyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLElBQUk7Z0JBQ0osY0FBYztnQkFDZCxjQUFjO2dCQUNkLFNBQVM7Z0JBQ1QsZUFBZTtnQkFDZixLQUFLO2dCQUNMLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixZQUFZO2FBQ2IsQ0FBQztZQUVGLE1BQU0saUJBQWlCLEdBQStCO2dCQUNwRCxZQUFZO2dCQUNaLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLFlBQVksRUFBRSxHQUFHO2dCQUNqQixPQUFPO2dCQUNQLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hCLFVBQVU7YUFDWCxDQUFDO1lBRUYsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzdDLENBQUM7WUFFRCxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssMEJBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3JELE1BQU0sWUFBWSxHQUFHO2dCQUNuQixJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixNQUFNO2dCQUNOLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxXQUFXO2dCQUNYLFVBQVU7Z0JBQ1YsaUJBQWlCO2FBQ2xCLENBQUM7WUFFRixPQUFPO2dCQUNMLFlBQVk7Z0JBQ1osRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNiLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztnQkFDZixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSTtnQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDakMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTthQUN4QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sNkJBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsb0JBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxJQUFZO1FBQ2pDLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSw2QkFBYSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSw2QkFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxNQUE4QjtRQUN4RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1FBQ3hELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixpRUFBaUU7UUFDakUsaUJBQWlCO1FBQ2pCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3BDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqRCwyREFBMkQ7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO1FBQ0gseUZBQXlGO1FBQ3pGLGtEQUFrRDtRQUNsRCwwRkFBMEY7UUFDMUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBOEI7UUFDbEQsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sV0FBVyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEYsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQStCO1FBQ3BELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFnQztRQUNwRCxNQUFNLEVBQ0osT0FBTyxFQUNQLFNBQVMsRUFDVCxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FDOUIsR0FBRyxNQUFNLENBQUM7UUFFWCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLHFCQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMseUJBQXlCLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFHLE9BQU8sV0FBVyxLQUFLLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWdDO1FBQ3RELE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUzQiw4Q0FBOEM7UUFDOUMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDeEQsTUFBTTtZQUNSO2dCQUNFLHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxNQUFNO1FBQ1YsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFdBQXFCLENBQUM7WUFFakUsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzlELENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isd0VBQXdFLEVBQ3hFLE1BQU0sQ0FBQyxFQUFFLEVBQ1QsQ0FBQyxRQUFRLENBQUMsRUFDVixNQUFNLENBQ1AsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0IsQ0FBQyxNQUFXO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsTUFBVyxFQUFFLFFBQWE7UUFDdkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztZQUNsRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFFaEMsSUFBSSxjQUFjLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQztZQUMvRixDQUFDO1lBRUQsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFLEtBQUssYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQztZQUNuRixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0NBQWdDLENBQUMsTUFBVyxFQUFFLFFBQWE7UUFDakUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRDLHFDQUFxQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFrQjtRQUN4QyxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQWEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU87WUFDTCx1QkFBdUIsRUFBRSxJQUFJO1lBQzdCLGdDQUFnQyxFQUFFLEtBQUs7U0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQ2xFLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0UsbURBQW1EO1FBQ25ELE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsS0FBYSxFQUFFLFVBQWtCLEVBQUUsSUFBWTtRQUN2RCxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELG1DQUFtQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsdUNBQWtCLENBQUMsQ0FBQyxDQUFDLHVDQUFrQixDQUFDO1FBQzNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyx5Q0FBb0IsQ0FBQyxDQUFDLENBQUMseUNBQW9CLENBQUM7UUFFakcsZUFBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsSUFBSSxPQUEyQixDQUFDO1FBQ2hDLElBQUksU0FBNkIsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1lBQzFGLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQzNGLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRixNQUFNLGNBQWMsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlELE1BQU0sZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0ZBQXdGLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDckcsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdHLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0UscURBQXFEO1FBQ3JELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO1FBQ3RDLE1BQU0sZUFBZSxHQUFHLElBQUksc0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhILElBQUksSUFBSSxzQkFBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksc0JBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5RyxNQUFNLElBQUksS0FBSyxDQUNiLGdEQUFnRDtnQkFDOUMsYUFBYTtnQkFDYixRQUFRO2dCQUNSLE1BQU0sQ0FBQyxHQUFHO2dCQUNWLHdCQUF3QjtnQkFDeEIsc0JBQXNCLENBQ3pCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxXQUErQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsV0FBVyxHQUFHLE1BQU0sTUFBTTtpQkFDdkIsTUFBTSxFQUFFO2lCQUNSLEVBQUUsRUFBRTtpQkFDSixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RkFBNkYsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUMvQixNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFFakQsU0FBUzthQUNOLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7YUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQzthQUNmLE1BQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxNQUFNLENBQUMsV0FBVztTQUM1QixDQUFDO2FBQ0QsRUFBRSxDQUFDO1lBQ0YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7U0FDcEMsQ0FBQzthQUNELE1BQU0sQ0FBQyxlQUFlLENBQUM7YUFDdkIsU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUNwQixXQUFXLENBQUMsV0FBVyxDQUFDO2FBQ3hCLFVBQVUsQ0FBQyxJQUFJLHNCQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDaEQsU0FBUyxDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWxELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQy9ELFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQVksQ0FBQztZQUVyQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDMUQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztnQkFDM0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pELFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUMzQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNqRixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDekQsY0FBYyxFQUFFLENBQUM7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVuQyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFZLENBQUM7UUFFckMsT0FBTztZQUNMLEVBQUUsRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMxRCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDZixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFDekIsMkJBQTJCLEVBQzNCLFVBQVUsR0FDa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakYsTUFBTSxNQUFNLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEYsT0FBTyxNQUFNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssMkJBQTJCLENBQUMsZUFBdUI7UUFDekQsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxxQkFBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sVUFBVSxHQUFHLHFCQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1lBQ0QsTUFBTSxJQUFJLGlDQUFzQixDQUFDLDJFQUEyRSxDQUFDLENBQUM7WUFDOUcsd0JBQXdCO1FBQzFCLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUN6RCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxNQUFNLElBQUksaUNBQXNCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxJQUFJLGlDQUFzQixDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUEyQjtRQUN6RSxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxTQUFTLElBQUksU0FBUyxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUE1eEJELG9CQTR4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTZWVkVmFsaWRhdG9yIH0gZnJvbSAnLi9zZWVkVmFsaWRhdG9yJztcbmltcG9ydCB7IGNvaW5zLCBDb2luRmFtaWx5IH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBBbGdvTGliIGZyb20gJy4vbGliJztcbmltcG9ydCB7XG4gIEFkZHJlc3NDb2luU3BlY2lmaWMsXG4gIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvblJlc3VsdCxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgSW52YWxpZEtleSxcbiAgS2V5SW5kaWNlcyxcbiAgS2V5UGFpcixcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVG9rZW5NYW5hZ2VtZW50VHlwZSxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgTm90U3VwcG9ydGVkLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBUeEludGVudE1pc21hdGNoRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBVdGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2xpYi9pZmFjZXMnO1xuaW1wb3J0ICogYXMgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7XG4gIE1BSU5ORVRfR0VORVNJU19IQVNILFxuICBNQUlOTkVUX0dFTkVTSVNfSUQsXG4gIFRFU1RORVRfR0VORVNJU19IQVNILFxuICBURVNUTkVUX0dFTkVTSVNfSUQsXG59IGZyb20gJy4vbGliL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCBTVVBQT1JURURfQUREUkVTU19WRVJTSU9OID0gMTtcbmNvbnN0IE1TSUdfVEhSRVNIT0xEID0gMjsgLy8gbSBpbiBtLW9mLW5cblxuZXhwb3J0IGludGVyZmFjZSBBbGdvQWRkcmVzc0NvaW5TcGVjaWZpY3MgZXh0ZW5kcyBBZGRyZXNzQ29pblNwZWNpZmljIHtcbiAgcm9vdEFkZHJlc3M6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgYml0Z29QdWJLZXk/OiBzdHJpbmc7XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeUFsZ29BZGRyZXNzT3B0aW9ucyBleHRlbmRzIFZlcmlmeUFkZHJlc3NPcHRpb25zIHtcbiAgY2hhaW46IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY29pbjogc3RyaW5nO1xuICB3YWxsZXQ6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBBbGdvQWRkcmVzc0NvaW5TcGVjaWZpY3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxnb1RyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgbWVtbz86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZyB8IG51bWJlcjtcbiAgdm90ZUtleT86IHN0cmluZztcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICB2b3RlRmlyc3Q/OiBudW1iZXI7XG4gIHZvdGVMYXN0PzogbnVtYmVyO1xuICB2b3RlS2V5RGlsdXRpb24/OiBudW1iZXI7XG4gIHRva2VuSWQ/OiBudW1iZXI7XG4gIG9wZXJhdGlvbnM/OiBUcmFuc2FjdGlvbk9wZXJhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uT3BlcmF0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgdHhJbmZvOiB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmc7XG4gICAgZmVlOiBudW1iZXI7XG4gICAgZmlyc3RSb3VuZDogbnVtYmVyO1xuICAgIGxhc3RSb3VuZDogbnVtYmVyO1xuICAgIGdlbmVzaXNJRDogc3RyaW5nO1xuICAgIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gICAgbm90ZT86IHN0cmluZztcbiAgfTtcbiAga2V5czogc3RyaW5nW107XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbHlTaWduZWRUcmFuc2FjdGlvbiB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFsZlNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgaGFsZlNpZ25lZDoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25GZWUge1xuICBmZWU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIHB1YmxpY0tleXM/OiBzdHJpbmdbXTtcbiAgZmVlSW5mbzogVHJhbnNhY3Rpb25GZWU7XG59XG5cbmludGVyZmFjZSBOb2RlUGFyYW1zIHtcbiAgdG9rZW46IHN0cmluZztcbiAgYmFzZVNlcnZlcjogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICB0eEhleDogc3RyaW5nO1xuICBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICBzaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJ2OiBzdHJpbmc7XG4gIGlzSGFsZlNpZ25lZDogYm9vbGVhbjtcbiAgbnVtYmVyU2lnbmVyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY292ZXJ5T3B0aW9ucyB7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIHJvb3RBZGRyZXNzOiBzdHJpbmc7XG4gIHJlY292ZXJ5RGVzdGluYXRpb246IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbiAgZmVlOiBudW1iZXI7XG4gIGZpcnN0Um91bmQ/OiBudW1iZXI7XG4gIG5vdGU/OiBzdHJpbmc7XG4gIG5vZGVQYXJhbXM6IE5vZGVQYXJhbXM7XG59XG5cbmludGVyZmFjZSBSZWNvdmVyeUluZm8ge1xuICBpZDogc3RyaW5nO1xuICB0eDogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG4gIGZlZTogbnVtYmVyO1xuICBmaXJzdFJvdW5kOiBudW1iZXI7XG4gIGxhc3RSb3VuZDogbnVtYmVyO1xuICBnZW5lc2lzSWQ6IHN0cmluZztcbiAgZ2VuZXNpc0hhc2g6IHN0cmluZztcbiAgbm90ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZmZsaW5lVmF1bHRUeEluZm8ge1xuICB0eEhleDogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICBiaXRnb0tleTogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNvaW46IHN0cmluZztcbiAgZmVlSW5mbzogbnVtYmVyO1xuICBhbW91bnQ6IHN0cmluZztcbiAgZmlyc3RSb3VuZDogbnVtYmVyO1xuICBsYXN0Um91bmQ6IG51bWJlcjtcbiAgZ2VuZXNpc0lkOiBzdHJpbmc7XG4gIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIG5vdGU/OiBzdHJpbmc7XG4gIGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIGtleXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb2FkY2FzdFRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvbk9wdGlvbnMge1xuICBub2RlUGFyYW1zOiBOb2RlUGFyYW1zO1xufVxuXG5leHBvcnQgY2xhc3MgQWxnbyBleHRlbmRzIEJhc2VDb2luIHtcbiAgcmVhZG9ubHkgRU5BQkxFX1RPS0VOOiBUb2tlbk1hbmFnZW1lbnRUeXBlID0gJ2VuYWJsZXRva2VuJztcbiAgcmVhZG9ubHkgRElTQUJMRV9UT0tFTjogVG9rZW5NYW5hZ2VtZW50VHlwZSA9ICdkaXNhYmxldG9rZW4nO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEFsZ28oYml0Z28pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2FsZ28nO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdhbGdvJztcbiAgfVxuXG4gIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYWxnbyc7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQWxnb3JhbmQnO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgIHJldHVybiAxZTY7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGdvcmFuZCBzdXBwb3J0cyBhY2NvdW50IGNvbnNvbGlkYXRpb25zLiBUaGVzZSBhcmUgdHJhbnNmZXJzIGZyb20gdGhlIHJlY2VpdmUgYWRkcmVzc2VzXG4gICAqIHRvIHRoZSBtYWluIGFkZHJlc3MuXG4gICAqL1xuICBhbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGRvYyAqL1xuICBkZXJpdmVLZXlXaXRoU2VlZCgpOiB7IGRlcml2YXRpb25QYXRoOiBzdHJpbmc7IGtleTogc3RyaW5nIH0ge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ21ldGhvZCBkZXJpdmVLZXlXaXRoU2VlZCBub3Qgc3VwcG9ydGVkIGZvciBlZGRzYSBjdXJ2ZScpO1xuICB9XG5cbiAgLyoqIGluaGVyaXRkb2MgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBbGdvTGliLktleVBhaXIoeyBzZWVkIH0pIDogbmV3IEFsZ29MaWIuS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleVBhaXIuZ2V0QWRkcmVzcygpLFxuICAgICAgcHJ2OiBBbGdvTGliLmFsZ29VdGlscy5lbmNvZGVTZWVkKEJ1ZmZlci5mcm9tKGtleVBhaXIuZ2V0U2lnbmluZ0tleSgpKSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZG9jICovXG4gIGdlbmVyYXRlUm9vdEtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEFsZ29MaWIuS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgQWxnb0xpYi5LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7IHBydjoga2V5cy5wcnYgKyBrZXlzLnB1YiwgcHViOiBrZXlzLnB1YiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5pc1ZhbGlkQWRkcmVzcyhwdWIpIHx8IEFsZ29MaWIuYWxnb1V0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgc2VlZCBmb3IgdGhlIGNvaW5cbiAgICogSW4gQWxnb3JhbmQsIHdoZW4gdGhlIHByaXZhdGUga2V5IGlzIGVuY29kZWQgYXMgYmFzZTMyIHN0cmluZyBvbmx5IHRoZSBmaXJzdCAzMiBieXRlcyBhcmUgdGFrZW4sXG4gICAqIHNvIHRoZSBlbmNvZGVkIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZFNlZWQocHJ2KSB8fCBBbGdvTGliLmFsZ29VdGlscy5pc1ZhbGlkUHJpdmF0ZUtleShwcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFsZ29MaWIuYWxnb1V0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gbWVzc2FnZSB3aXRoIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBhbGdvS2V5cGFpciA9IG5ldyBBbGdvTGliLktleVBhaXIoeyBwcnY6IGtleS5wcnYgfSk7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihtZXNzYWdlKSkge1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYWxnb0tleXBhaXIuc2lnbk1lc3NhZ2UobWVzc2FnZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGF0IGtleSB3ZSB3aWxsIG5lZWQgZm9yIHNpZ25pbmdgIC0gQWxnb3JhbmQgbmVlZHMgdGhlIGJhY2t1cCwgYml0Z28gcHVicy5cbiAgICovXG4gIGtleUlkc0ZvclNpZ25pbmcoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbS2V5SW5kaWNlcy5VU0VSLCBLZXlJbmRpY2VzLkJBQ0tVUCwgS2V5SW5kaWNlcy5CSVRHT107XG4gIH1cblxuICBnZXRUb2tlbk5hbWVCeUlkKHRva2VuSWQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9rZW5OYW1lcyA9IGNvaW5zLmZpbHRlcigoY29pbikgPT4gY29pbi5mYW1pbHkgPT09ICdhbGdvJyAmJiBjb2luLmlzVG9rZW4pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUhKTtcbiAgICByZXR1cm4gdG9rZW5OYW1lcy5maW5kKCh0b2tlbk5hbWUpID0+IHRva2VuTmFtZS5zcGxpdCgnLScpWzFdID09PSBgJHt0b2tlbklkfWApIHx8ICdBbGdvVG9rZW4gdW5rbm93bic7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbi9wYXJzZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBbGdvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4IHx8IChwYXJhbXMuaGFsZlNpZ25lZCAmJiBwYXJhbXMuaGFsZlNpZ25lZC50eEhleCk7XG4gICAgaWYgKCF0eEhleCB8fCAhcGFyYW1zLmZlZUluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBleHBsYWluIHR4IHBhcmFtZXRlcnMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhIZXgpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICBpZiAodHgudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0eEpzb24udG8sXG4gICAgICAgICAgYW1vdW50OiB0eEpzb24uYW1vdW50LFxuICAgICAgICAgIG1lbW86IHR4SnNvbi5ub3RlLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbnM6IFRyYW5zYWN0aW9uT3BlcmF0aW9uW10gPSBbXTtcblxuICAgICAgY29uc3QgaXNUb2tlblR4ID0gdGhpcy5pc1Rva2VuVHgodHhKc29uLnR5cGUpO1xuICAgICAgaWYgKGlzVG9rZW5UeCkge1xuICAgICAgICBjb25zdCB0eXBlID0gQWxnb0xpYi5hbGdvVXRpbHMuZ2V0VG9rZW5UeFR5cGUodHhKc29uLmFtb3VudCwgdHhKc29uLmZyb20sIHR4SnNvbi50bywgdHhKc29uLmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgICBvcGVyYXRpb25zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgY29pbjogdGhpcy5nZXRUb2tlbk5hbWVCeUlkKHR4SnNvbi50b2tlbklkKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnb3BlcmF0aW9ucycsXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogQWxnb1RyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgICAgaWQ6IHR4SnNvbi5pZCxcbiAgICAgICAgb3V0cHV0QW1vdW50OiB0eEpzb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgZmVlOiB0eEpzb24uZmVlLFxuICAgICAgICBtZW1vOiB0eEpzb24ubm90ZSxcbiAgICAgICAgdHlwZTogdHgudHlwZS50b1N0cmluZygpLFxuICAgICAgICBvcGVyYXRpb25zLFxuICAgICAgfTtcblxuICAgICAgaWYgKHR4SnNvbi50b2tlbklkKSB7XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnRva2VuSWQgPSB0eEpzb24udG9rZW5JZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4cGxhbmF0aW9uUmVzdWx0O1xuICAgIH1cblxuICAgIGlmICh0eC50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAndm90ZUtleScsXG4gICAgICAgICdzZWxlY3Rpb25LZXknLFxuICAgICAgICAndm90ZUZpcnN0JyxcbiAgICAgICAgJ3ZvdGVMYXN0JyxcbiAgICAgICAgJ3ZvdGVLZXlEaWx1dGlvbicsXG4gICAgICBdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBmZWU6IHR4SnNvbi5mZWUsXG4gICAgICAgIG1lbW86IHR4SnNvbi5ub3RlLFxuICAgICAgICB0eXBlOiB0eC50eXBlLFxuICAgICAgICB2b3RlS2V5OiB0eEpzb24udm90ZUtleSxcbiAgICAgICAgc2VsZWN0aW9uS2V5OiB0eEpzb24uc2VsZWN0aW9uS2V5LFxuICAgICAgICB2b3RlRmlyc3Q6IHR4SnNvbi52b3RlRmlyc3QsXG4gICAgICAgIHZvdGVMYXN0OiB0eEpzb24udm90ZUxhc3QsXG4gICAgICAgIHZvdGVLZXlEaWx1dGlvbjogdHhKc29uLnZvdGVLZXlEaWx1dGlvbixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaWYgYSB0eCBpcyBhIHRva2VuIHR4XG4gICAqIEBwYXJhbSB0eXBlIHtzdHJpbmd9IC0gdHggdHlwZVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGl0J3MgYSB0b2tlbiB0eFxuICAgKi9cbiAgaXNUb2tlblR4KHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlID09PSAnYXhmZXInO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgc2VlZCBpcyBhIHZhbGlkIHN0ZWxsYXIgc2VlZFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc2VlZCB0aGUgc2VlZCB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgaW5wdXQgaXMgYSBTdGVsbGFyIHNlZWRcbiAgICovXG4gIGlzU3RlbGxhclNlZWQoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNlZWRWYWxpZGF0b3IuaXNWYWxpZEVkMjU1MTlTZWVkRm9yQ29pbihzZWVkLCBDb2luRmFtaWx5LlhMTSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0ZWxsYXIgc2VlZCB0byBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlZWQgdGhlIHNlZWQgdG8gY29udmVydFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbiB8IG51bGx9IHNlZWQgaW4gYWxnbyBlbmNvZGluZ1xuICAgKi9cbiAgY29udmVydEZyb21TdGVsbGFyU2VlZChzZWVkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBhc3N1bWUgdGhpcyBpcyBhIHRydXN0IGN1c3RvZGlhbCBzZWVkIGlmIGl0cyBhIHZhbGlkIGVkMjU1MTkgcHJ2XG4gICAgaWYgKCF0aGlzLmlzU3RlbGxhclNlZWQoc2VlZCkgfHwgU2VlZFZhbGlkYXRvci5oYXNDb21wZXRpbmdTZWVkRm9ybWF0cyhzZWVkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKFNlZWRWYWxpZGF0b3IuaXNWYWxpZEVkMjU1MTlTZWVkRm9yQ29pbihzZWVkLCBDb2luRmFtaWx5LlhMTSkpIHtcbiAgICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5jb252ZXJ0RnJvbVN0ZWxsYXJTZWVkKHNlZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmVyaWZ5U2lnblRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFZlcmlmaWVkVHJhbnNhY3Rpb25QYXJhbWV0ZXJzIHtcbiAgICBjb25zdCBwcnYgPSBwYXJhbXMucHJ2O1xuICAgIGNvbnN0IGFkZHJlc3NWZXJzaW9uID0gcGFyYW1zLnR4UHJlYnVpbGQuYWRkcmVzc1ZlcnNpb247XG4gICAgbGV0IGlzSGFsZlNpZ25lZCA9IGZhbHNlO1xuXG4gICAgLy8gaXQncyBwb3NzaWJsZSB0aGlzIHR4IHdhcyBhbHJlYWR5IHNpZ25lZCAtIHRha2UgdGhlIGhhbGZTaWduZWRcbiAgICAvLyB0eEhleCBpZiBpdCBpc1xuICAgIGxldCB0eEhleCA9IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmIChwYXJhbXMudHhQcmVidWlsZC5oYWxmU2lnbmVkKSB7XG4gICAgICBpc0hhbGZTaWduZWQgPSB0cnVlO1xuICAgICAgdHhIZXggPSBwYXJhbXMudHhQcmVidWlsZC5oYWxmU2lnbmVkLnR4SGV4O1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHR4SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQgcGFyYW1ldGVyJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHR4SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgdHlwZSAke3R5cGVvZiB0eEhleH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcHJ2IHBhcmFtZXRlciB0byBzaWduIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHBydikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJ2IG11c3QgYmUgYSBzdHJpbmcsIGdvdCB0eXBlICR7dHlwZW9mIHBydn1gKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaGFzKHBhcmFtcy50eFByZWJ1aWxkLCAna2V5cycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcHVibGljIGtleXMgcGFyYW1ldGVyIHRvIHNpZ24gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNOdW1iZXIoYWRkcmVzc1ZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYWRkcmVzc1ZlcnNpb24gcGFyYW1ldGVyIHRvIHNpZ24gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZXJzID0gcGFyYW1zLnR4UHJlYnVpbGQua2V5cy5tYXAoKGtleSkgPT4ge1xuICAgICAgLy8gaWYgd2UgYXJlIHJlY2VpdmluZyBhZGRyZXNzZXMgZG8gbm90IHRyeSB0byBjb252ZXJ0IHRoZW1cbiAgICAgIGlmICghQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZEFkZHJlc3Moa2V5KSkge1xuICAgICAgICByZXR1cm4gQWxnb0xpYi5hbGdvVXRpbHMucHVibGljS2V5VG9BbGdvQWRkcmVzcyhBbGdvTGliLmFsZ29VdGlscy50b1VpbnQ4QXJyYXkoa2V5KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIC8vIFRPRE8oaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9TVExYLTYwNjcpOiBmaXggdGhlIG51bWJlciBvZiBzaWduZXJzIHVzaW5nXG4gICAgLy8gc2hvdWxkIGJlIHNpbWlsYXIgdG8gb3RoZXIgY29pbnMgaW1wbGVtZW50YXRpb25cbiAgICAvLyBJZiB3ZSBoYXZlIGEgbnVtYmVyIHdpdGggZGlnaXRzIHRvIGVsaW1pbmF0ZSB0aGVtIHdpdGhvdXQgdGFraW5nIGFueSByb3VuZGluZyBjcml0ZXJpYS5cbiAgICBjb25zdCBudW1iZXJTaWduZXJzID0gTWF0aC50cnVuYyhzaWduZXJzLmxlbmd0aCAvIDIpICsgMTtcbiAgICByZXR1cm4geyB0eEhleCwgYWRkcmVzc1ZlcnNpb24sIHNpZ25lcnMsIHBydiwgaXNIYWxmU2lnbmVkLCBudW1iZXJTaWduZXJzIH07XG4gIH1cblxuICAvKipcbiAgICogQXNzZW1ibGUga2V5Y2hhaW4gYW5kIGhhbGYtc2lnbiBwcmVidWlsdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMudHhQcmVidWlsZCB7VHJhbnNhY3Rpb25QcmVidWlsZH0gcHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHBsYXRmb3JtXG4gICAqIEBwYXJhbSBwYXJhbXMucHJ2IHtTdHJpbmd9IHVzZXIgcHJ2XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPn1cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgeyB0eEhleCwgc2lnbmVycywgcHJ2LCBpc0hhbGZTaWduZWQsIG51bWJlclNpZ25lcnMgfSA9IHRoaXMudmVyaWZ5U2lnblRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtcyk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eEhleCk7XG4gICAgdHhCdWlsZGVyLm51bWJlck9mUmVxdWlyZWRTaWduZXJzKG51bWJlclNpZ25lcnMpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBwcnYgfSk7XG4gICAgdHhCdWlsZGVyLnNldFNpZ25lcnMoc2lnbmVycyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVkVHhIZXggPSBCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgaWYgKG51bWJlclNpZ25lcnMgPT09IDEpIHtcbiAgICAgIHJldHVybiB7IHR4SGV4OiBzaWduZWRUeEhleCB9O1xuICAgIH0gZWxzZSBpZiAoaXNIYWxmU2lnbmVkKSB7XG4gICAgICByZXR1cm4geyB0eEhleDogc2lnbmVkVHhIZXggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgaGFsZlNpZ25lZDogeyB0eEhleDogc2lnbmVkVHhIZXggfSB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBjYW4gYmUgdXNlZCB0byBzZW5kIGZ1bmRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLmFkZHJlc3MgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zLmtleWNoYWlucyBwdWJsaWMga2V5cyB0byBnZW5lcmF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBbGdvQWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7XG4gICAgICBhZGRyZXNzLFxuICAgICAga2V5Y2hhaW5zLFxuICAgICAgY29pblNwZWNpZmljOiB7IGJpdGdvUHViS2V5IH0sXG4gICAgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGlmICgha2V5Y2hhaW5zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWZmZWN0aXZlS2V5Y2hhaW4gPSBiaXRnb1B1YktleSA/IGtleWNoYWlucy5zbGljZSgwLCAtMSkuY29uY2F0KFt7IHB1YjogYml0Z29QdWJLZXkgfV0pIDoga2V5Y2hhaW5zO1xuICAgIGNvbnN0IHB1YktleXMgPSBlZmZlY3RpdmVLZXljaGFpbi5tYXAoKGtleSkgPT4gdGhpcy5zdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3Moa2V5LnB1YikpO1xuXG4gICAgaWYgKCFwdWJLZXlzLmV2ZXJ5KChwdWJLZXkpID0+IHRoaXMuaXNWYWxpZFB1YihwdWJLZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ2ludmFsaWQgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3RBZGRyZXNzID0gQWxnb0xpYi5hbGdvVXRpbHMubXVsdGlzaWdBZGRyZXNzKFNVUFBPUlRFRF9BRERSRVNTX1ZFUlNJT04sIE1TSUdfVEhSRVNIT0xELCBwdWJLZXlzKTtcblxuICAgIHJldHVybiByb290QWRkcmVzcyA9PT0gYWRkcmVzcztcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gfSA9IHBhcmFtcztcblxuICAgIGlmICghdHhQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB0eFBhcmFtcycpO1xuICAgIH1cblxuICAgIGlmICghdHhQcmVidWlsZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXR4UHJlYnVpbGQudHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB0eEhleCBpbiB0eFByZWJ1aWxkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eFByZWJ1aWxkLnR4SGV4KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgLy8gVmFsaWRhdGUgYmFzZWQgb24gQWxnb3JhbmQgdHJhbnNhY3Rpb24gdHlwZVxuICAgIHN3aXRjaCAodHhKc29uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3BheSc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVQYXlUcmFuc2FjdGlvbih0eEpzb24sIHR4UGFyYW1zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdheGZlcic6XG4gICAgICAgIHRoaXMudmFsaWRhdGVBc3NldFRyYW5zZmVyVHJhbnNhY3Rpb24odHhKc29uLCB0eFBhcmFtcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRm9yIG90aGVyIHRyYW5zYWN0aW9uIHR5cGVzLCBwZXJmb3JtIGJhc2ljIHZhbGlkYXRpb25cbiAgICAgICAgdGhpcy52YWxpZGF0ZUJhc2ljVHJhbnNhY3Rpb24odHhKc29uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb25zIHNlbmQgdG8gYmFzZSBhZGRyZXNzXG4gICAgaWYgKHZlcmlmaWNhdGlvbj8uY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3MpIHtcbiAgICAgIGlmICghd2FsbGV0Py5jb2luU3BlY2lmaWMoKT8ucm9vdEFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGV0ZXJtaW5lIGJhc2UgYWRkcmVzcyBmb3IgY29uc29saWRhdGlvbicpO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdEFkZHJlc3MgPSB3YWxsZXQuY29pblNwZWNpZmljKCk/LnJvb3RBZGRyZXNzIGFzIHN0cmluZztcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiByZWNpcGllbnQgbWF0Y2hlcyB0aGUgcm9vdEFkZHJlc3NcbiAgICAgIGlmICghdHhKc29uLnRvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gaXMgbWlzc2luZyByZWNpcGllbnQgYWRkcmVzcycpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHhKc29uLnRvICE9PSByb290QWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgVHhJbnRlbnRNaXNtYXRjaEVycm9yKFxuICAgICAgICAgICdDb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uIHJlY2lwaWVudCBkb2VzIG5vdCBtYXRjaCB3YWxsZXQgYmFzZSBhZGRyZXNzJyxcbiAgICAgICAgICB0eEpzb24udG8sXG4gICAgICAgICAgW3R4UGFyYW1zXSxcbiAgICAgICAgICB0eEpzb25cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBiYXNpYyB0cmFuc2FjdGlvbiBmaWVsZHMgY29tbW9uIHRvIGFsbCB0cmFuc2FjdGlvbiB0eXBlc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUJhc2ljVHJhbnNhY3Rpb24odHhKc29uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXR4SnNvbi5mcm9tKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2VuZGVyIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAoIXR4SnNvbi5mZWUgfHwgdHhKc29uLmZlZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCBmZWUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgUGF5bWVudCAocGF5KSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBheVRyYW5zYWN0aW9uKHR4SnNvbjogYW55LCB0eFBhcmFtczogYW55KTogYm9vbGVhbiB7XG4gICAgdGhpcy52YWxpZGF0ZUJhc2ljVHJhbnNhY3Rpb24odHhKc29uKTtcblxuICAgIGlmICghdHhKc29uLnRvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgcmVjaXBpZW50IGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAodHhKc29uLmFtb3VudCA9PT0gdW5kZWZpbmVkIHx8IHR4SnNvbi5hbW91bnQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcmVjaXBpZW50cyBpZiBwcm92aWRlZCBpbiB0eFBhcmFtc1xuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWxnb3JhbmQgdHJhbnNhY3Rpb25zIGNhbiBvbmx5IGhhdmUgb25lIHJlY2lwaWVudCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHBlY3RlZFJlY2lwaWVudCA9IHR4UGFyYW1zLnJlY2lwaWVudHNbMF07XG4gICAgICBjb25zdCBleHBlY3RlZEFtb3VudCA9IGV4cGVjdGVkUmVjaXBpZW50LmFtb3VudC50b1N0cmluZygpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gZXhwZWN0ZWRSZWNpcGllbnQuYWRkcmVzcztcbiAgICAgIGNvbnN0IGFjdHVhbEFtb3VudCA9IHR4SnNvbi5hbW91bnQudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGFjdHVhbEFkZHJlc3MgPSB0eEpzb24udG87XG5cbiAgICAgIGlmIChleHBlY3RlZEFtb3VudCAhPT0gYWN0dWFsQW1vdW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gYW1vdW50IGluIHR4UHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggdGhlIHZhbHVlIGdpdmVuIGJ5IGNsaWVudCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXhwZWN0ZWRBZGRyZXNzLnRvTG93ZXJDYXNlKCkgIT09IGFjdHVhbEFkZHJlc3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlc3RpbmF0aW9uIGFkZHJlc3MgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgcmVjaXBpZW50IGFkZHJlc3MnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBBc3NldCBUcmFuc2ZlciAoYXhmZXIpIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQXNzZXRUcmFuc2ZlclRyYW5zYWN0aW9uKHR4SnNvbjogYW55LCB0eFBhcmFtczogYW55KTogYm9vbGVhbiB7XG4gICAgdGhpcy52YWxpZGF0ZUJhc2ljVHJhbnNhY3Rpb24odHhKc29uKTtcblxuICAgIC8vIEJhc2ljIGFtb3VudCB2YWxpZGF0aW9uIGlmIHByZXNlbnRcbiAgICBpZiAodHhKc29uLmFtb3VudCAhPT0gdW5kZWZpbmVkICYmIHR4SnNvbi5hbW91bnQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHJhbnNmZXIgdHJhbnNhY3Rpb246IGludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkZWNvZGVUeCh0eG46IEJ1ZmZlcik6IHVua25vd24ge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5kZWNvZGVBbGdvVHhuKHR4bik7XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXk6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBBbGdvTGliLmFsZ29VdGlscy5wdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHB1YktleSk7XG4gIH1cblxuICBzdXBwb3J0c0Rlcml2ZUtleVdpdGhTZWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy5vbmNoYWluO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY29uZmlnIGZvciBob3cgdG9rZW4gZW5hYmxlbWVudHMgd29yayBmb3IgdGhpcyBjb2luXG4gICAqIEByZXR1cm5zXG4gICAqICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiBUcnVlIGlmIHRva2VucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgY29pblxuICAgKiAgICBzdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50czogVHJ1ZSBpZiBtdWx0aXBsZSB0b2tlbnMgY2FuIGJlIGVuYWJsZWQgaW4gb25lIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFsYW5jZSBvZiB0aGUgcm9vdCBhZGRyZXNzIGluIGJhc2UgdW5pdHMgb2YgYWxnb1xuICAgKiBFZy4gSWYgYmFsYW5jZSBpcyAxIEFsZ28sIHRoaXMgcmV0dXJucyAxKjEwXjZcbiAgICogQHBhcmFtIHJvb3RBZGRyZXNzXG4gICAqIEBwYXJhbSBjbGllbnRcbiAgICovXG4gIGFzeW5jIGdldEFjY291bnRCYWxhbmNlKHJvb3RBZGRyZXNzOiBzdHJpbmcsIGNsaWVudDogYWxnb3Nkay5BbGdvZHYyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBhY2NvdW50SW5mb3JtYXRpb24gPSBhd2FpdCBjbGllbnQuYWNjb3VudEluZm9ybWF0aW9uKHJvb3RBZGRyZXNzKS5kbygpO1xuICAgIC8vIEV4dHJhY3QgdGhlIGJhbGFuY2UgZnJvbSB0aGUgYWNjb3VudCBpbmZvcm1hdGlvblxuICAgIHJldHVybiBhY2NvdW50SW5mb3JtYXRpb24uYW1vdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEFsZ28gY2xpZW50IGZvciB0aGUgZ2l2ZW4gdG9rZW4sIGJhc2VTZXJ2ZXIgYW5kIHBvcnRcbiAgICogVXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBBbGdvIG5ldHdvcmtcbiAgICovXG4gIGdldENsaWVudCh0b2tlbjogc3RyaW5nLCBiYXNlU2VydmVyOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IGFsZ29zZGsuQWxnb2R2MiB7XG4gICAgcmV0dXJuIG5ldyBhbGdvc2RrLkFsZ29kdjIodG9rZW4sIGJhc2VTZXJ2ZXIsIHBvcnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY292ZXIocGFyYW1zOiBSZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPFJlY292ZXJ5SW5mbyB8IE9mZmxpbmVWYXVsdFR4SW5mbz4ge1xuICAgIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9IHRoaXMuaXNWYWxpZFB1YihwYXJhbXMudXNlcktleSkgJiYgdGhpcy5pc1ZhbGlkUHViKHBhcmFtcy5iYWNrdXBLZXkpO1xuXG4gICAgaWYgKCFwYXJhbXMubm9kZVBhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSB0aGUgZGV0YWlscyBvZiBhbiBBTEdPIG5vZGUgdG8gdXNlIGZvciByZWNvdmVyeScpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoZSByb290IGFkZHJlc3NcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJvb3RBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJvb3RBZGRyZXNzLCBnb3Q6ICcgKyBwYXJhbXMucm9vdEFkZHJlc3MpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24sIGdvdDogJyArIHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmZpcnN0Um91bmQgJiYgbmV3IEJpZ051bWJlcihwYXJhbXMuZmlyc3RSb3VuZCkuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IHJvdW5kIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgdmFsdWUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBnZW5lc2lzSWQgPSB0aGlzLmJpdGdvLmdldEVudigpID09PSAncHJvZCcgPyBNQUlOTkVUX0dFTkVTSVNfSUQgOiBURVNUTkVUX0dFTkVTSVNfSUQ7XG4gICAgY29uc3QgZ2VuZXNpc0hhc2ggPSB0aGlzLmJpdGdvLmdldEVudigpID09PSAncHJvZCcgPyBNQUlOTkVUX0dFTkVTSVNfSEFTSCA6IFRFU1RORVRfR0VORVNJU19IQVNIO1xuXG4gICAgVXRpbHMudmFsaWRhdGVCYXNlNjQoZ2VuZXNpc0hhc2gpO1xuXG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXAgJiYgIXBhcmFtcy53YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldFBhc3NwaHJhc2UgaXMgcmVxdWlyZWQgZm9yIG5vbi1iaXRnbyByZWNvdmVyeScpO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgQWxnb0xpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgnYWxnbycpKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuXG4gICAgbGV0IHVzZXJQcnY6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYmFja3VwUHJ2OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIGlmICghcGFyYW1zLmJpdGdvS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYml0Z28gcHVibGljIGtleSBmcm9tIHRoZSBrZXlDYXJkIGlzIHJlcXVpcmVkIGZvciBub24tYml0Z28gcmVjb3ZlcnknKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHVzZXJQcnYgPSB0aGlzLmJpdGdvLmRlY3J5cHQoeyBpbnB1dDogcGFyYW1zLnVzZXJLZXksIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICAgICAgYmFja3VwUHJ2ID0gdGhpcy5iaXRnby5kZWNyeXB0KHsgaW5wdXQ6IHBhcmFtcy5iYWNrdXBLZXksIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICAgICAgY29uc3QgdXNlcktleUFkZHJlc3MgPSBVdGlscy5wcml2YXRlS2V5VG9BbGdvQWRkcmVzcyh1c2VyUHJ2KTtcbiAgICAgICAgY29uc3QgYmFja3VwS2V5QWRkcmVzcyA9IFV0aWxzLnByaXZhdGVLZXlUb0FsZ29BZGRyZXNzKGJhY2t1cFBydik7XG4gICAgICAgIHR4QnVpbGRlci5udW1iZXJPZlJlcXVpcmVkU2lnbmVycygyKS5zZXRTaWduZXJzKFt1c2VyS2V5QWRkcmVzcywgYmFja3VwS2V5QWRkcmVzcywgcGFyYW1zLmJpdGdvS2V5XSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAndW5hYmxlIHRvIGRlY3J5cHQgdXNlcktleSBvciBiYWNrdXBLZXkgd2l0aCB0aGUgd2FsbGV0UGFzc3BocmFzZSBwcm92aWRlZCwgZ290IGVycm9yOiAnICsgZS5tZXNzYWdlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQocGFyYW1zLm5vZGVQYXJhbXMudG9rZW4sIHBhcmFtcy5ub2RlUGFyYW1zLmJhc2VTZXJ2ZXIsIHBhcmFtcy5ub2RlUGFyYW1zLnBvcnQpO1xuICAgIGNvbnN0IG5hdGl2ZUJhbGFuY2UgPSBhd2FpdCB0aGlzLmdldEFjY291bnRCYWxhbmNlKHBhcmFtcy5yb290QWRkcmVzcywgY2xpZW50KTtcblxuICAgIC8vIEFsZ29yYW5kIGFjY291bnRzIHJlcXVpcmUgYSBtaW4uIGJhbGFuY2Ugb2YgMSBBTEdPXG4gICAgY29uc3QgTUlOX01JQ1JPQUxHT1NfQkFMQU5DRSA9IDEwMDAwMDtcbiAgICBjb25zdCBzcGVuZGFibGVBbW91bnQgPSBuZXcgQmlnTnVtYmVyKG5hdGl2ZUJhbGFuY2UpLm1pbnVzKHBhcmFtcy5mZWUpLm1pbnVzKE1JTl9NSUNST0FMR09TX0JBTEFOQ0UpLnRvTnVtYmVyKCk7XG5cbiAgICBpZiAobmV3IEJpZ051bWJlcihzcGVuZGFibGVBbW91bnQpLmlzWmVybygpIHx8IG5ldyBCaWdOdW1iZXIoc3BlbmRhYmxlQW1vdW50KS5pc0xlc3NUaGFuT3JFcXVhbFRvKHBhcmFtcy5mZWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnN1ZmZpY2llbnQgYmFsYW5jZSB0byByZWNvdmVyLCBnb3QgYmFsYW5jZTogJyArXG4gICAgICAgICAgbmF0aXZlQmFsYW5jZSArXG4gICAgICAgICAgJyBmZWU6ICcgK1xuICAgICAgICAgIHBhcmFtcy5mZWUgK1xuICAgICAgICAgICcgbWluIGFjY291bnQgYmFsYW5jZTogJyArXG4gICAgICAgICAgTUlOX01JQ1JPQUxHT1NfQkFMQU5DRVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbGF0ZXN0Um91bmQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXBhcmFtcy5maXJzdFJvdW5kKSB7XG4gICAgICBsYXRlc3RSb3VuZCA9IGF3YWl0IGNsaWVudFxuICAgICAgICAuc3RhdHVzKClcbiAgICAgICAgLmRvKClcbiAgICAgICAgLnRoZW4oKHN0YXR1cykgPT4gc3RhdHVzWydsYXN0LXJvdW5kJ10pO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0Um91bmQgPSAhcGFyYW1zLmZpcnN0Um91bmQgPyBsYXRlc3RSb3VuZCA6IHBhcmFtcy5maXJzdFJvdW5kO1xuICAgIGlmICghZmlyc3RSb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmV0Y2ggdGhlIGxhdGVzdCByb3VuZCBmcm9tIHRoZSBub2RlLiBQbGVhc2UgcHJvdmlkZSB0aGUgZmlyc3RSb3VuZCBvciB0cnkgYWdhaW4uJyk7XG4gICAgfVxuICAgIGNvbnN0IExBU1RfUk9VTkRfQlVGRkVSID0gMTAwMDtcbiAgICBjb25zdCBsYXN0Um91bmQgPSBmaXJzdFJvdW5kICsgTEFTVF9ST1VORF9CVUZGRVI7XG5cbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5mZWUoeyBmZWU6IHBhcmFtcy5mZWUudG9TdHJpbmcoKSB9KVxuICAgICAgLmlzRmxhdEZlZSh0cnVlKVxuICAgICAgLnNlbmRlcih7XG4gICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yb290QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgICAudG8oe1xuICAgICAgICBhZGRyZXNzOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pXG4gICAgICAuYW1vdW50KHNwZW5kYWJsZUFtb3VudClcbiAgICAgIC5nZW5lc2lzSWQoZ2VuZXNpc0lkKVxuICAgICAgLmdlbmVzaXNIYXNoKGdlbmVzaXNIYXNoKVxuICAgICAgLmZpcnN0Um91bmQobmV3IEJpZ051bWJlcihmaXJzdFJvdW5kKS50b051bWJlcigpKVxuICAgICAgLmxhc3RSb3VuZChuZXcgQmlnTnVtYmVyKGxhc3RSb3VuZCkudG9OdW1iZXIoKSk7XG5cbiAgICBpZiAocGFyYW1zLm5vdGUpIHtcbiAgICAgIGNvbnN0IG5vdGUgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwYXJhbXMubm90ZSwgJ3V0Zi04JykpO1xuICAgICAgdHhCdWlsZGVyLm5vdGUobm90ZSk7XG4gICAgfVxuXG4gICAgLy8gQ29sZCB3YWxsZXQsIG9mZmxpbmUgdmF1bHRcbiAgICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCkgYXMgVHhEYXRhO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eEhleDogQnVmZmVyLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0eXBlOiB0eEpzb24udHlwZSxcbiAgICAgICAgdXNlcktleTogcGFyYW1zLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogcGFyYW1zLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHBhcmFtcy5iaXRnb0tleSxcbiAgICAgICAgYWRkcmVzczogcGFyYW1zLnJvb3RBZGRyZXNzLFxuICAgICAgICBjb2luOiB0aGlzLmdldENoYWluKCksXG4gICAgICAgIGZlZUluZm86IHR4SnNvbi5mZWUsXG4gICAgICAgIGFtb3VudDogdHhKc29uLmFtb3VudCA/PyBuYXRpdmVCYWxhbmNlLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0Um91bmQ6IHR4SnNvbi5maXJzdFJvdW5kLFxuICAgICAgICBsYXN0Um91bmQ6IHR4SnNvbi5sYXN0Um91bmQsXG4gICAgICAgIGdlbmVzaXNJZDogZ2VuZXNpc0lkLFxuICAgICAgICBnZW5lc2lzSGFzaDogZ2VuZXNpc0hhc2gsXG4gICAgICAgIG5vdGU6IHR4SnNvbi5ub3RlID8gQnVmZmVyLmZyb20odHhKc29uLm5vdGUuYnVmZmVyKS50b1N0cmluZygndXRmLTgnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAga2V5czogW3BhcmFtcy51c2VyS2V5LCBwYXJhbXMuYmFja3VwS2V5LCBwYXJhbXMuYml0Z29LZXldLFxuICAgICAgICBhZGRyZXNzVmVyc2lvbjogMSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gTm9uLWJpdGdvIFJlY292ZXJ5IChIb3Qgd2FsbGV0cylcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdXNlclBydiB9KTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogYmFja3VwUHJ2IH0pO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKSBhcyBUeERhdGE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHg6IEJ1ZmZlci5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICBjb2luOiB0aGlzLmdldENoYWluKCksXG4gICAgICBmZWU6IHR4SnNvbi5mZWUsXG4gICAgICBmaXJzdFJvdW5kOiB0eEpzb24uZmlyc3RSb3VuZCxcbiAgICAgIGxhc3RSb3VuZDogdHhKc29uLmxhc3RSb3VuZCxcbiAgICAgIGdlbmVzaXNJZDogZ2VuZXNpc0lkLFxuICAgICAgZ2VuZXNpc0hhc2g6IGdlbmVzaXNIYXNoLFxuICAgICAgbm90ZTogdHhKc29uLm5vdGUgPyBCdWZmZXIuZnJvbSh0eEpzb24ubm90ZS5idWZmZXIpLnRvU3RyaW5nKCd1dGYtOCcpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGZ1bGx5IHNpZ25lZCBzZXJpYWxpemVkIGJhc2U2NCB0cmFuc2FjdGlvbiBhbmQgYnJvYWRjYXN0cyBpdCBvbiB0aGUgbmV0d29yay5cbiAgICogVXNlcyB0aGUgZXh0ZXJuYWwgbm9kZSBwcm92aWRlZCBieSB0aGUgY2xpZW50XG4gICAqIEBwYXJhbSBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIG5vZGVQYXJhbXNcbiAgICovXG4gIGFzeW5jIGJyb2FkY2FzdFRyYW5zYWN0aW9uKHtcbiAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgbm9kZVBhcmFtcyxcbiAgfTogQnJvYWRjYXN0VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICBpZiAoIW5vZGVQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHByb3ZpZGUgdGhlIGRldGFpbHMgb2YgdGhlIGFsZ29yYW5kIG5vZGUnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4SGV4ID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgYWxnb1R4ID0gVXRpbHMudG9VaW50OEFycmF5KHR4SGV4KTtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KG5vZGVQYXJhbXMudG9rZW4sIG5vZGVQYXJhbXMuYmFzZVNlcnZlciwgbm9kZVBhcmFtcy5wb3J0KTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGNsaWVudC5zZW5kUmF3VHJhbnNhY3Rpb24oYWxnb1R4KS5kbygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGJyb2FkY2FzdCB0cmFuc2FjdGlvbiwgZXJyb3I6ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGVsbGFyIGFuZCBBbGdvcmFuZCBib3RoIHVzZSBrZXlzIG9uIHRoZSBlZDI1NTE5IGN1cnZlLCBidXQgdXNlIGRpZmZlcmVudCBlbmNvZGluZ3MuXG4gICAqIEFzIHRoZSBIU00gZG9lc24ndCBoYXZlIGV4cGxpY2l0IHN1cHBvcnQgdG8gY3JlYXRlIEFsZ29yYW5kIGFkZHJlc3Nlcywgd2UgdXNlIHRoZSBTdGVsbGFyXG4gICAqIGtleXMgYW5kIHJlLWVuY29kZSB0aGVtIHRvIHRoZSBBbGdvcmFuZCBlbmNvZGluZy5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIEFsZ29yYW5kIGN1c3RvZGlhbCB3YWxsZXRzIHJldXNpbmcgU3RlbGxhciBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc09yUHViS2V5IGEgU3RlbGxhciBwdWJrZXkgb3IgQWxnb3JhbmQgYWRkcmVzc1xuICAgKiBAcmV0dXJuIHsqfVxuICAgKi9cbiAgcHJpdmF0ZSBzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MoYWRkcmVzc09yUHViS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHdlIGhhdmUgYW4gQWxnb3JhbmQgYWRkcmVzc1xuICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIHJldHVybiBhZGRyZXNzT3JQdWJLZXk7XG4gICAgfVxuXG4gICAgLy8gd2UgaGF2ZSBhIHN0ZWxsYXIga2V5XG4gICAgaWYgKHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIGNvbnN0IHN0ZWxsYXJQdWIgPSBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KGFkZHJlc3NPclB1YktleSk7XG4gICAgICBjb25zdCBhbGdvQWRkcmVzcyA9IEFsZ29MaWIuYWxnb1V0aWxzLmVuY29kZUFkZHJlc3Moc3RlbGxhclB1Yik7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhbGdvQWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGFsZ29BZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IFN0ZWxsYXIgYWRkcmVzcyB0byBhbiBBbGdvcmFuZCBhZGRyZXNzIHZpYSBzdGVsbGFyIHB1YmtleS4nKTtcbiAgICAgIC8vIHdlIGhhdmUgYSByb290IHB1YmtleVxuICAgIH0gZWxzZSBpZiAoQWxnb0xpYi5hbGdvVXRpbHMuaXNWYWxpZFB1YmxpY0tleShhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBBbGdvTGliLktleVBhaXIoeyBwdWI6IGFkZHJlc3NPclB1YktleSB9KTtcbiAgICAgIGNvbnN0IGFsZ29BZGRyZXNzID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWxnb0FkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBhbGdvQWRkcmVzcztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKCdJbnZhbGlkIHJvb3QgcHVia2V5LicpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKCdOZWl0aGVyIGFuIEFsZ29yYW5kIGFkZHJlc3MsIGEgc3RlbGxhciBwdWJrZXkgb3IgYSByb290IHB1YmxpYyBrZXkuJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogQWxnb0xpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IEFsZ29MaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRCYXNlQ2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgcHVibGljS2V5LCBwcnYsIG11bHRpU2lnVHlwZSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcykge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgPT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cblxuICAgIGxldCBhbGdvS2V5O1xuICAgIHRyeSB7XG4gICAgICBhbGdvS2V5ID0gbmV3IEFsZ29MaWIuS2V5UGFpcih7IHBydiB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJpdmF0ZSBrZXk6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAocHVibGljS2V5ICYmIHB1YmxpY0tleSAhPT0gYWxnb0tleS5nZXRLZXlzKCkucHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxufVxuIl19
|
|
@@ -111,4 +111,11 @@ export declare const base64Txn: {
|
|
|
111
111
|
readonly txid: "RSWDVNXWLX7UEDVGJR7B7SSCL3Q43UILPYIEX2AMDD72JIFV7TVA";
|
|
112
112
|
};
|
|
113
113
|
};
|
|
114
|
+
export declare const consolidation: {
|
|
115
|
+
readonly rootAddress: "L6OMQGFVXSDOCEXVB3FFRBYUD3FH6UFMT6WNTFYDJXGEV6ZDQ74EXGF6BE";
|
|
116
|
+
readonly receiveAddress: "U3YYPVGS7MOEPLAMOEBQYMQL6K6OG6VA5CL4RGMPXQTMWEWHBSN2RYS774";
|
|
117
|
+
readonly txHex: "iaNhbXTOAJcL+KNmZWXNA+iiZnbOA2bxbqNnZW6sdGVzdG5ldC12MS4womdoxCBIY7UYpLPITsgQ8i1PEIHLD3HwWaesIN7GL39w5Qk6IqJsds4DZvVWo3JjdsQgX5zIGLW8huES9Q7KWIcUHsp/UKyfrNmXA03MSvsjh/ijc25kxCCm8YfU0vscR6wMcQMMMgvyvON6oOiXyJmPvCbLEscMm6R0eXBlo3BheQ==";
|
|
118
|
+
readonly amount: "9899000";
|
|
119
|
+
readonly txId: "ROTFDRSEAWKSYIOBE6PKX5TVZIYKRFWEN4PET54ODY3RDMRCMMQA";
|
|
120
|
+
};
|
|
114
121
|
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../test/fixtures/resources.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCX,CAAC;AACX,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;CA+BR,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAaX,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCf,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAaZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../test/fixtures/resources.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCX,CAAC;AACX,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;CA+BR,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAaX,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCf,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAaZ,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;CAQhB,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.base64Txn = exports.transactions = exports.networks = exports.rawTx = exports.accounts = void 0;
|
|
7
|
+
exports.consolidation = exports.base64Txn = exports.transactions = exports.networks = exports.rawTx = exports.accounts = void 0;
|
|
8
8
|
exports.accounts = {
|
|
9
9
|
account1: {
|
|
10
10
|
secretKey: Buffer.from('9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60', 'hex'),
|
|
@@ -120,4 +120,12 @@ exports.base64Txn = {
|
|
|
120
120
|
txid: 'RSWDVNXWLX7UEDVGJR7B7SSCL3Q43UILPYIEX2AMDD72JIFV7TVA',
|
|
121
121
|
},
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9maXh0dXJlcy9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRVUsUUFBQSxRQUFRLEdBQUc7SUFDdEIsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQ2pHLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQztRQUM5RixNQUFNLEVBQUUsNERBQTREO1FBQ3BFLE9BQU8sRUFBRSw0REFBNEQ7UUFDckUsT0FBTyxFQUFFLDhDQUE4QztRQUN2RCxhQUFhLEVBQUUsMEZBQTBGO1FBQ3pHLFlBQVksRUFBRSw4Q0FBOEM7S0FDN0Q7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDakcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQzlGLE9BQU8sRUFBRSw0REFBNEQ7S0FDdEU7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDakcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQzlGLE1BQU0sRUFBRSw0REFBNEQ7UUFDcEUsT0FBTyxFQUFFLDREQUE0RDtLQUN0RTtJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQztRQUNqRyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDOUYsTUFBTSxFQUFFLDREQUE0RDtRQUNwRSxPQUFPLEVBQUUsNERBQTREO0tBQ3RFO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQ2pHLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQztRQUM5RixPQUFPLEVBQUUsNERBQTREO0tBQ3RFO0NBQ08sQ0FBQztBQUNFLFFBQUEsS0FBSyxHQUFHO0lBQ25CLFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFDTiw0YUFBNGE7UUFDOWEsTUFBTSxFQUNKLGtrQkFBa2tCO1FBQ3BrQiw0QkFBNEI7UUFDNUIsVUFBVSxFQUNSLDRwQkFBNHBCO1FBQzlwQixxQ0FBcUM7UUFDckMsUUFBUSxFQUNOLG95QkFBb3lCO0tBQ3Z5QjtJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFDTixnZEFBZ2Q7UUFDbGQsTUFBTSxFQUNKLHNtQkFBc21CO1FBQ3htQixjQUFjLEVBQ1osc1RBQXNUO1FBQ3hULGVBQWUsRUFDYiwrU0FBK1M7UUFDalQsWUFBWSxFQUNWLGtkQUFrZDtLQUNyZDtJQUNELGFBQWEsRUFBRTtRQUNiLFFBQVEsRUFDTiw0V0FBNFc7UUFDOVcsTUFBTSxFQUNKLDRmQUE0ZjtLQUMvZjtDQUNPLENBQUM7QUFFRSxRQUFBLFFBQVEsR0FBRztJQUN0QixPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsY0FBYztRQUN6QixXQUFXLEVBQUUsOENBQThDO0tBQzVEO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLGNBQWM7UUFDekIsV0FBVyxFQUFFLDhDQUE4QztLQUM1RDtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFdBQVcsRUFBRSw4Q0FBOEM7S0FDNUQ7Q0FDTyxDQUFDO0FBRUUsUUFBQSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLDREQUE0RDtRQUNsRSxFQUFFLEVBQUUsNERBQTREO1FBQ2hFLE1BQU0sRUFBRSxJQUFJO1FBQ1osVUFBVSxFQUFFLEdBQUc7UUFDZixTQUFTLEVBQUUsSUFBSTtRQUNmLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFdBQVcsRUFBRSw4Q0FBOEM7S0FDNUQ7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSw0REFBNEQ7UUFDbEUsVUFBVSxFQUFFLEdBQUc7UUFDZixTQUFTLEVBQUUsSUFBSTtRQUNmLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFdBQVcsRUFBRSw4Q0FBOEM7UUFDM0QsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QjtJQUNELFNBQVMsRUFBRTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsVUFBVSxFQUFFLEdBQUc7UUFDZixXQUFXLEVBQUUsOENBQThDO1FBQzNELFNBQVMsRUFBRSxJQUFJO1FBQ2YsWUFBWSxFQUFFLDREQUE0RDtRQUMxRSxJQUFJLEVBQUUsNERBQTREO1FBQ2xFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLENBQUM7UUFDWixlQUFlLEVBQUUsS0FBSztRQUN0QixPQUFPLEVBQUUsNERBQTREO1FBQ3JFLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0NBQ08sQ0FBQztBQUVFLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLFFBQVEsRUFBRTtRQUNSLEdBQUcsRUFBRSxzaUJBQXNpQjtRQUMzaUIsSUFBSSxFQUFFLHNEQUFzRDtLQUM3RDtJQUNELFVBQVUsRUFBRTtRQUNWLEdBQUcsRUFBRSxxaUJBQXFpQjtRQUMxaUIsSUFBSSxFQUFFLEVBQUU7S0FDVDtJQUNELFdBQVcsRUFBRTtRQUNYLEdBQUcsRUFBRSw4VUFBOFU7UUFDblYsSUFBSSxFQUFFLHNEQUFzRDtLQUM3RDtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogc2VjcmV0L3B1YmxpYyBrZXlzIGFyZSBmcm9tIFJGQyA4MDMyIGxpbmsgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvXG4gKlxuICovXG5cbmV4cG9ydCBjb25zdCBhY2NvdW50cyA9IHtcbiAgYWNjb3VudDE6IHtcbiAgICBzZWNyZXRLZXk6IEJ1ZmZlci5mcm9tKCc5ZDYxYjE5ZGVmZmQ1YTYwYmE4NDRhZjQ5MmVjMmNjNDQ0NDljNTY5N2IzMjY5MTk3MDNiYWMwMzFjYWU3ZjYwJywgJ2hleCcpLFxuICAgIHB1YktleTogQnVmZmVyLmZyb20oJ2Q3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWEnLCAnaGV4JyksXG4gICAgcHJ2S2V5OiAnVFZRM0RIUFA3Vk5HQk9VRUpMMkpGM0JNWVJDRVRSTEpQTVpHU0dMUUhPV0FHSEZPUDVRRVlUWkgyUScsXG4gICAgYWRkcmVzczogJzI1TkpRQU1DV0VGTFBWS0w3M0o0U1pBSEhJSE9DNFhUM0tUQ0dKTlBBSU5HUjVZSEtFTk1FRjVRVEUnLFxuICAgIHZvdGVLZXk6ICdPMGxNS1hBYXFONGg3alZKcjhMSFkwaHZFYks2Mk9KTEprTjFzb3hwOUJnPScsXG4gICAgc3RhdGVQcm9vZktleTogJ21ZUjBHVkVPYk1UU05kc0tNNlJ3WXl3SFlQcVZEcWczRTRKRnp4Wk9yZUg5TlU4Qit0S3pVYW55WThBUTE0NGhFVGdTTVg3ZlhXd2pCZEh6NkFXazl3PT0nLFxuICAgIHNlbGVjdGlvbktleTogJ3dYamZ6QW9aaGxzL3pyaGdBbjh6YXMvV1RrdHZSdXhlcHM2Zmt2MmF1K2M9JyxcbiAgfSxcbiAgYWNjb3VudDI6IHtcbiAgICBzZWNyZXRLZXk6IEJ1ZmZlci5mcm9tKCc0Y2NkMDg5YjI4ZmY5NmRhOWRiNmMzNDZlYzExNGUwZjViOGEzMTlmMzVhYmE2MjRkYThjZjZlZDRmYjhhNmZiJywgJ2hleCcpLFxuICAgIHB1YktleTogQnVmZmVyLmZyb20oJzNkNDAxN2MzZTg0Mzg5NWE5MmI3MGFhNzRkMWI3ZWJjOWM5ODJjY2YyZWM0OTY4Y2MwY2Q1NWYxMmFmNDY2MGMnLCAnaGV4JyksXG4gICAgYWRkcmVzczogJ0hWQUJQUTdJSU9FVlZFVlhCS1RVMkczNlhTT0pRTEdQRjNDSk5ER0FaVks3Q0tYVU1ZR0E2RU9FNlknLFxuICB9LFxuICBhY2NvdW50Mzoge1xuICAgIHNlY3JldEtleTogQnVmZmVyLmZyb20oJ2M1YWE4ZGY0M2Y5ZjgzN2JlZGI3NDQyZjMxZGNiN2IxNjZkMzg1MzUwNzZmMDk0Yjg1Y2UzYTJlMGI0NDU4ZjcnLCAnaGV4JyksXG4gICAgcHViS2V5OiBCdWZmZXIuZnJvbSgnZmM1MWNkOGU2MjE4YTFhMzhkYTQ3ZWQwMDIzMGYwNTgwODE2ZWQxM2JhMzMwM2FjNWRlYjkxMTU0ODkwODAyNScsICdoZXgnKSxcbiAgICBwcnZLZXk6ICdZV1ZJMzVCN1Q2QlhYM05YSVFYVERYRlhXRlROSEJKVkE1WFFTUzRGWlk1QzRDMkVMRDNZV1lTWkxVJyxcbiAgICBhZGRyZXNzOiAnN1JJNDNEVENEQ1EySERORVAzSUFFTUhRTEFFQk4zSVRYSVpRSExDNTVPSVJLU0VRUUFTNTJPWUtKRScsXG4gIH0sXG4gIGFjY291bnQ0OiB7XG4gICAgc2VjcmV0S2V5OiBCdWZmZXIuZnJvbSgnOWE3ODA0MGY0ODg5ZWFjMTg3ODc5Mzc1N2M1NGI4NTcwNTYzOGZhZDUxOTk2ZGQ5MTM1NjUyZmY4OTAyZDkyNCcsICdoZXgnKSxcbiAgICBwdWJLZXk6IEJ1ZmZlci5mcm9tKCdlODI0OGMwY2U5Y2Y0OGVmNDFiNTY0ODIyMGFjODRjYWY3ZWY0OTk4ODUwM2IyZWYwMzZmYTE2ZWNhZTdmZTFjJywgJ2hleCcpLFxuICAgIHBydktleTogJ1RKNEFJRDJJUkhWTURCNEhTTjJYWVZGWUs0Q1dIRDVOS0dNVzNXSVRLWkpQN0NJQzNFU0tCVkdYTkEnLFxuICAgIGFkZHJlc3M6ICc1QVNJWURISlo1RU82UU5WTVNCQ0JMRUVaTDM2NlNNWVFVQjNGM1lETjZRVzVTWEg3WU9MVUUzWklZJyxcbiAgfSxcbiAgZGVmYXVsdDoge1xuICAgIHNlY3JldEtleTogQnVmZmVyLmZyb20oJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAnaGV4JyksXG4gICAgcHViS2V5OiBCdWZmZXIuZnJvbSgnM2I2YTI3YmNjZWI2YTQyZDYyYTNhOGQwMmE2ZjBkNzM2NTMyMTU3NzFkZTI0M2E2M2FjMDQ4YTE4YjU5ZGEyOScsICdoZXgnKSxcbiAgICBhZGRyZXNzOiAnSE5WQ1BQR09XMlNDMllWRFZESUNVM1lOT05TVEVGTFhEWFJFSEpSMllCRUtEQzJaM0lVWlNDNllHSScsXG4gIH0sXG59IGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IHJhd1R4ID0ge1xuICB0cmFuc2Zlcjoge1xuICAgIHVuc2lnbmVkOlxuICAgICAgJzhiYTM2MTZkNzRjZDI3MTBhNTYzNmM2ZjczNjVjNDIwZmM1MWNkOGU2MjE4YTFhMzhkYTQ3ZWQwMDIzMGYwNTgwODE2ZWQxM2JhMzMwM2FjNWRlYjkxMTU0ODkwODAyNWEzNjY2NTY1Y2Q1NWYwYTI2Njc2MDFhMzY3NjU2ZWFjNzQ2NTczNzQ2ZTY1NzQyZDc2MzEyZTMwYTI2NzY4YzQyMDQ4NjNiNTE4YTRiM2M4NGVjODEwZjIyZDRmMTA4MWNiMGY3MWYwNTlhN2FjMjBkZWM2MmY3ZjcwZTUwOTNhMjJhMjZjNzY2NGE0NmU2Zjc0NjVjNDA0NmU2Zjc0NjVhMzcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhMzcwNjE3OScsXG4gICAgc2lnbmVkOlxuICAgICAgJzgyYTM3MzY5NjdjNDQwNzAxNDZmZDJhMzBlZjMxMTUzZTIwMGM0YjlkZjI5ZTA0NjAzNWZlNWFkODkzNDE3NzAwNzRkZDUzMjA2OGQwMzIzNmM5MDdmMWEwM2NkYmI4MzRjY2EzZTUxN2Q4N2YxNDU1MWY0OGMyNTY5NTkyZThhN2EzMzliNWQzM2ZkMGVhMzc0Nzg2ZThiYTM2MTZkNzRjZDI3MTBhNTYzNmM2ZjczNjVjNDIwZmM1MWNkOGU2MjE4YTFhMzhkYTQ3ZWQwMDIzMGYwNTgwODE2ZWQxM2JhMzMwM2FjNWRlYjkxMTU0ODkwODAyNWEzNjY2NTY1Y2Q1NWYwYTI2Njc2MDFhMzY3NjU2ZWFjNzQ2NTczNzQ2ZTY1NzQyZDc2MzEyZTMwYTI2NzY4YzQyMDQ4NjNiNTE4YTRiM2M4NGVjODEwZjIyZDRmMTA4MWNiMGY3MWYwNTlhN2FjMjBkZWM2MmY3ZjcwZTUwOTNhMjJhMjZjNzY2NGE0NmU2Zjc0NjVjNDA0NmU2Zjc0NjVhMzcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhMzcwNjE3OScsXG4gICAgLy8gc2lnbmVkIHdpdGggYWNjb3VudDEgb25seVxuICAgIGhhbGZTaWduZWQ6XG4gICAgICAnODJhNDZkNzM2OTY3ODNhNjczNzU2MjczNjk2NzkyODJhMjcwNmJjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWExNzNjNDQwYmY1ODRiMmE5ZWMyNjZjNzgwOWFhYTBmODQ4Njg3Yzc4ZDAxNDVkYzVhODk2N2UxNDQ1NmQxMTY5N2M3MmU4YjlhZDZiOGVlY2JlOGFlYTQxZmNmMzg0ZDA1YTZhZjU0ZTlkMDkyOGZiYTdkMjllZGJkZjI3ZDllZjNjOWE1MDA4MWEyNzA2YmM0MjBmYzUxY2Q4ZTYyMThhMWEzOGRhNDdlZDAwMjMwZjA1ODA4MTZlZDEzYmEzMzAzYWM1ZGViOTExNTQ4OTA4MDI1YTM3NDY4NzIwMmExNzYwMWEzNzQ3ODZlODlhMzYxNmQ3NGNkMjcxMGEzNjY2NTY1Y2Q1NWYwYTI2Njc2MDFhMzY3NjU2ZWFjNzQ2NTczNzQ2ZTY1NzQyZDc2MzEyZTMwYTI2NzY4YzQyMDQ4NjNiNTE4YTRiM2M4NGVjODEwZjIyZDRmMTA4MWNiMGY3MWYwNTlhN2FjMjBkZWM2MmY3ZjcwZTUwOTNhMjJhMjZjNzY2NGEzNzI2Mzc2YzQyMDNkNDAxN2MzZTg0Mzg5NWE5MmI3MGFhNzRkMWI3ZWJjOWM5ODJjY2YyZWM0OTY4Y2MwY2Q1NWYxMmFmNDY2MGNhMzczNmU2NGM0MjA1YTg3NDc2MmE1ZThmNTVlMGExOTk5NWFlMzdkNjBhNjM1NWEyNmI4MzAzODZlY2EzNjM5ZWMzOTI4NjYwYzJjYTQ3NDc5NzA2NWEzNzA2MTc5JyxcbiAgICAvLyBzaWduZWQgd2l0aCBhY2NvdW50MSBhbmQgYWNjb3VudCAzXG4gICAgbXVsdGlzaWc6XG4gICAgICAnODJhNDZkNzM2OTY3ODNhNjczNzU2MjczNjk2NzkyODJhMjcwNmJjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWExNzNjNDQwYmY1ODRiMmE5ZWMyNjZjNzgwOWFhYTBmODQ4Njg3Yzc4ZDAxNDVkYzVhODk2N2UxNDQ1NmQxMTY5N2M3MmU4YjlhZDZiOGVlY2JlOGFlYTQxZmNmMzg0ZDA1YTZhZjU0ZTlkMDkyOGZiYTdkMjllZGJkZjI3ZDllZjNjOWE1MDA4MmEyNzA2YmM0MjBmYzUxY2Q4ZTYyMThhMWEzOGRhNDdlZDAwMjMwZjA1ODA4MTZlZDEzYmEzMzAzYWM1ZGViOTExNTQ4OTA4MDI1YTE3M2M0NDBkZTVjMjI2NjY0MTA0MTBiNzdhMzRiMmE5MTdmYzEwOTk2MTBhMjc3MTgxOGQ1MWU2NDQ2ZjE1YmQwM2IyZjE5ZmJjNjNkNzU1N2Q2ZmY0ZjUxZTYxOTMzYmRjODMzMDY0ZjZjOTk5NmQ2MmU2MWI4ZWE1YWM2MTZhN2I3MjYwYWEzNzQ2ODcyMDJhMTc2MDFhMzc0Nzg2ZTg5YTM2MTZkNzRjZDI3MTBhMzY2NjU2NWNkNTVmMGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhMzcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM3MzZlNjRjNDIwNWE4NzQ3NjJhNWU4ZjU1ZTBhMTk5OTVhZTM3ZDYwYTYzNTVhMjZiODMwMzg2ZWNhMzYzOWVjMzkyODY2MGMyY2E0NzQ3OTcwNjVhMzcwNjE3OScsXG4gIH0sXG4gIGtleVJlZzoge1xuICAgIHVuc2lnbmVkOlxuICAgICAgJzhjYTM2NjY1NjVjZTAwMDRhMzgwYTI2Njc2MDFhMzY3NjU2ZWFjNzQ2NTczNzQ2ZTY1NzQyZDc2MzEyZTMwYTI2NzY4YzQyMDQ4NjNiNTE4YTRiM2M4NGVjODEwZjIyZDRmMTA4MWNiMGY3MWYwNTlhN2FjMjBkZWM2MmY3ZjcwZTUwOTNhMjJhMjZjNzY2NGE2NzM2NTZjNmI2NTc5YzQyMGMxNzhkZmNjMGExOTg2NWIzZmNlYjg2MDAyN2YzMzZhY2ZkNjRlNGI2ZjQ2ZWM1ZWE2Y2U5ZjkyZmQ5YWJiZTdhMzczNmU2NGM0MjBkNzVhOTgwMTgyYjEwYWI3ZDU0YmZlZDNjOTY0MDczYTBlZTE3MmYzZGFhNjIzMjVhZjAyMWE2OGY3MDc1MTFhYTQ3NDc5NzA2NWE2NmI2NTc5NzI2NTY3YTc3NjZmNzQ2NTY2NzM3NDAxYTY3NjZmNzQ2NTZiNjQwOWE3NzY2Zjc0NjU2YjY1NzljNDIwM2I0OTRjMjk3MDFhYThkZTIxZWUzNTQ5YWZjMmM3NjM0ODZmMTFiMmJhZDhlMjRiMjY0Mzc1YjI4YzY5ZjQxOGE3NzY2Zjc0NjU2YzczNzQ2NCcsXG4gICAgc2lnbmVkOlxuICAgICAgJzgyYTM3MzY5NjdjNDQwODNlMGU3MGJhZTcyNmQ3MzVhMmZlMzIwNjIzNzhjNTBhNWI1NmYxMjU0NDVkOTg1MDY2NmM1YTA0YzY3OWFmMzNhZGQyOWQ2NmIzMDFlMjkzYzlkNTMzNDA0NmJjMDJjMDRhMjA5ZWVkNTBkYjA0OWYxNTE4YThhNTkxNzZlMDNhMzc0Nzg2ZThjYTM2NjY1NjVjZTAwMDRhMzgwYTI2Njc2MDFhMzY3NjU2ZWFjNzQ2NTczNzQ2ZTY1NzQyZDc2MzEyZTMwYTI2NzY4YzQyMDQ4NjNiNTE4YTRiM2M4NGVjODEwZjIyZDRmMTA4MWNiMGY3MWYwNTlhN2FjMjBkZWM2MmY3ZjcwZTUwOTNhMjJhMjZjNzY2NGE2NzM2NTZjNmI2NTc5YzQyMGMxNzhkZmNjMGExOTg2NWIzZmNlYjg2MDAyN2YzMzZhY2ZkNjRlNGI2ZjQ2ZWM1ZWE2Y2U5ZjkyZmQ5YWJiZTdhMzczNmU2NGM0MjBkNzVhOTgwMTgyYjEwYWI3ZDU0YmZlZDNjOTY0MDczYTBlZTE3MmYzZGFhNjIzMjVhZjAyMWE2OGY3MDc1MTFhYTQ3NDc5NzA2NWE2NmI2NTc5NzI2NTY3YTc3NjZmNzQ2NTY2NzM3NDAxYTY3NjZmNzQ2NTZiNjQwOWE3NzY2Zjc0NjU2YjY1NzljNDIwM2I0OTRjMjk3MDFhYThkZTIxZWUzNTQ5YWZjMmM3NjM0ODZmMTFiMmJhZDhlMjRiMjY0Mzc1YjI4YzY5ZjQxOGE3NzY2Zjc0NjU2YzczNzQ2NCcsXG4gICAgb2xkU2RrVW5zaWduZWQ6XG4gICAgICAnaTZObVpXWE5BK2lpWm5iT0FFUDlDYUpuYU1RZ1NHTzFHS1N6eUU3SUVQSXRUeENCeXc5eDhGbW5yQ0RleGk5L2NPVUpPaUtpYkhiT0FFUUE4YVp6Wld4clpYbkVJS3dNSVg1VEcyTjJINi83bkJjcjFycWRUanJpMVp1SmJ3ZVFteElza2lKWW8zTnVaTVFnRDB1Wm1DNW9lclk2NlpMR2ZrZTFIUWhhUzlicHhpazFKVGRicjZZQVNQaWtkSGx3WmFaclpYbHlaV2VuZG05MFpXWnpkTTRBUS8wSnBuWnZkR1ZyWk0wbkVLZDJiM1JsYTJWNXhDQmtNS0NXL2I1Nk5yY0FBNlhqTHd4YVo5TDdxTStHNS9jMDdHeG94aXBqRGFkMmIzUmxiSE4wemdDZmlvaz0nLFxuICAgIG9sZFNka1Vuc2lnbmVkMjpcbiAgICAgICdnYU4wZUc2TG8yWmxaYzBENktKbWRnR2laMmpFSUVoanRSaWtzOGhPeUJEeUxVOFFnY3NQY2ZCWnA2d2czc1l2ZjNEbENUb2lvbXgyelFQcHBuTmxiR3RsZWNRZ2swWTZGVGs5V2xXQmEvOGE0OXZQR2tqWDBMQmttbmJFNk1lVTdudFFSV0NqYzI1a3hDQ1RSam9WT1QxYVZZRnIveHJqMjg4YVNOZlFzR1NhZHNUb3g1VHVlMUJGWUtSMGVYQmxwbXRsZVhKbFo2ZDJiM1JsWm5OMEFhWjJiM1JsYTJUTkp4Q25kbTkwWld0bGVjUWdrMFk2RlRrOVdsV0JhLzhhNDl2UEdralgwTEJrbW5iRTZNZVU3bnRRUldDbmRtOTBaV3h6ZE00QVc0MkIvJyxcbiAgICBvbGRTZGtTaWduZWQ6XG4gICAgICAnZ3FSdGMybG5nNlp6ZFdKemFXZVRncUp3YThRZzY4emI5QXhsQUIxdWlsOEM4WDUyVWhWVGVVVmxwM2hmdFkwbTVkWG1rak9oYzhSQWhrRTJ2NHpyblVvSzBNRE15aXZmcnFiUkJhRkRrUnNESWZ6bUlJaGwxU1M2YWgzVldCSUtJTmNncWJNTDlnVHJHZWlCVmM0cFVmL1BIZUI2MkhBcEFJR2ljR3ZFSUFWaVUrc1BCOU1aV3RoRzRDOWoycXpmL3gwdFpuMEtaR1k2d1hwd1lZMEdnYUp3YThRZ2IrZjZvSkZsdnU1MkRIN25RYmVOTXdGR0lyQmpXaGdBeVliOWRoOGtFUjJqZEdoeUFxRjJBYU4wZUc2SW8yWmxaYzBFR3FKbWRzNEF3QUpRbzJkbGJxeDBaWE4wYm1WMExYWXhMakNpWjJqRUlFaGp0UmlrczhoT3lCRHlMVThRZ2NzUGNmQlpwNndnM3NZdmYzRGxDVG9pb214MnpnREFCamluYm05dWNHRnlkTU9qYzI1a3hDQXFaOExGN3MvbzlHRGpMMDMycEdRb2IxUXZNcFYxSHNqQnNMaWpPbDlqVmFSMGVYQmxwbXRsZVhKbFp3PT0nLFxuICB9LFxuICBhc3NldFRyYW5zZmVyOiB7XG4gICAgdW5zaWduZWQ6XG4gICAgICAnOGFhNDYxNjE2ZDc0Y2QwM2U4YTQ2MTcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM2NjY1NjVjZDAzZThhMjY2NzYwMWEzNjc2NTZlZDkyYzUzNDc0ZjMxNDc0YjUzN2E3OTQ1Mzc0OTQ1NTA0OTc0NTQ3ODQzNDI3OTc3Mzk3ODM4NDY2ZDZlNzI0MzQ0NjU3ODY5MzkyZjYzNGY1NTRhNGY2OTQ5M2RhMjY3NjhjNDA4YjVlYjJkOWRlYjdlYmY1ZGEyNmM3NjBhYTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhNTYxNzg2NjY1NzJhNDc4NjE2OTY0MDEnLFxuICAgIHNpZ25lZDpcbiAgICAgICc4MmEzNzM2OTY3YzQ0MDE3N2I2ZDdmNTQ4YzhjNTc5NjE4MjAwZmFlM2Y2MTU0OWNkZDNmZTBhYmE1YTc0Y2MzZGM3MjExMmE1ZmU0YWE0NmIyMDlmNjNhMzY0YTMzMTI3ODg2ZjA2ZmZjYTQ1ZmNiZTY2Y2NhNjRjOTkwYTZjYmY3ZThmZGJhY2U5NTBjYTM3NDc4NmU4YWE0NjE2MTZkNzRjZjhhYzcyMzA0ODllODAwMDBhNDYxNzI2Mzc2YzQyMDNkNDAxN2MzZTg0Mzg5NWE5MmI3MGFhNzRkMWI3ZWJjOWM5ODJjY2YyZWM0OTY4Y2MwY2Q1NWYxMmFmNDY2MGNhMzY2NjU2NWNkMDNlOGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2MGFhMzczNmU2NGM0MjBkNzVhOTgwMTgyYjEwYWI3ZDU0YmZlZDNjOTY0MDczYTBlZTE3MmYzZGFhNjIzMjVhZjAyMWE2OGY3MDc1MTFhYTQ3NDc5NzA2NWE1NjE3ODY2NjU3MmE0Nzg2MTY5NjQwMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgbmV0d29ya3MgPSB7XG4gIG1haW5uZXQ6IHtcbiAgICBnZW5lc2lzSUQ6ICdtYWlubmV0LXYxLjAnLFxuICAgIGdlbmVzaXNIYXNoOiAnd0dIRTJQd2R2ZDdTMTJCTDVGYU9QMjBFR1llc043M2t0aUMxcXpra2l0OD0nLFxuICB9LFxuICB0ZXN0bmV0OiB7XG4gICAgZ2VuZXNpc0lEOiAndGVzdG5ldC12MS4wJyxcbiAgICBnZW5lc2lzSGFzaDogJ1NHTzFHS1N6eUU3SUVQSXRUeENCeXc5eDhGbW5yQ0RleGk5L2NPVUpPaUk9JyxcbiAgfSxcbiAgYmV0YW5ldDoge1xuICAgIGdlbmVzaXNJRDogJ2JldGFuZXQtdjEuMCcsXG4gICAgZ2VuZXNpc0hhc2g6ICdtRmdhekYrMnVSUzF0TWlMOWRzajAxaEpHeVNFbVBOMjhCL1RqanZwVlcwPScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdHJhbnNhY3Rpb25zID0ge1xuICBwYXlUeG46IHtcbiAgICBmcm9tOiAnWUdOVVBIWFdQSEpQVUhQNVk0TjVGRUtIUFJHSUdHTDdHNkRSMzNCRjZHTE1NVzU1NEQ1M0RFSElOSScsXG4gICAgdG86ICdTUDc0NUpKUjRLUFJRRVhKWkhWSUVONzM2TFlUTDJUMkRGTUczT0lJRkpCVjY2SzczUEhOTURDWlZNJyxcbiAgICBhbW91bnQ6IDUwMDAsXG4gICAgZmlyc3RSb3VuZDogMTY3LFxuICAgIGxhc3RSb3VuZDogMTE2NyxcbiAgICBnZW5lc2lzSUQ6ICd0ZXN0bmV0LXYxLjAnLFxuICAgIGdlbmVzaXNIYXNoOiAnU0dPMUdLU3p5RTdJRVBJdFR4Q0J5dzl4OEZtbnJDRGV4aTkvY09VSk9pST0nLFxuICB9LFxuICBub25QYXJ0aWNpcGF0aW9uVHhuOiB7XG4gICAgdHlwZTogJ2tleXJlZycsXG4gICAgZnJvbTogJ1IyNzVITktFWEMzQUkzQ1lMMlBQT0dQMkFGQTRYQ1JETzJDQ1JFR0NWRFg2T0pBWjU0TUJEN1ZMWUEnLFxuICAgIGZpcnN0Um91bmQ6IDE2NyxcbiAgICBsYXN0Um91bmQ6IDExNjcsXG4gICAgZ2VuZXNpc0lEOiAndGVzdG5ldC12MS4wJyxcbiAgICBnZW5lc2lzSGFzaDogJ1NHTzFHS1N6eUU3SUVQSXRUeENCeXc5eDhGbW5yQ0RleGk5L2NPVUpPaUk9JyxcbiAgICBub25QYXJ0aWNpcGF0aW9uOiB0cnVlLFxuICB9LFxuICBrZXlyZWdUeG46IHtcbiAgICBmZWU6IDEwMDAsXG4gICAgZmlyc3RSb3VuZDogMTY3LFxuICAgIGdlbmVzaXNIYXNoOiAnU0dPMUdLU3p5RTdJRVBJdFR4Q0J5dzl4OEZtbnJDRGV4aTkvY09VSk9pST0nLFxuICAgIGxhc3RSb3VuZDogMTE2NyxcbiAgICBzZWxlY3Rpb25LZXk6ICdSMjc1SE5LRVhDM0FJM0NZTDJQUE9HUDJBRkE0WENSRE8yQ0NSRUdDVkRYNk9KQVo1NE1CRDdWTFlBJyxcbiAgICBmcm9tOiAnUjI3NUhOS0VYQzNBSTNDWUwyUFBPR1AyQUZBNFhDUkRPMkNDUkVHQ1ZEWDZPSkFaNTRNQkQ3VkxZQScsXG4gICAgdHlwZTogJ2tleXJlZycsXG4gICAgdm90ZUZpcnN0OiAxLFxuICAgIHZvdGVLZXlEaWx1dGlvbjogMTAwMDAsXG4gICAgdm90ZUtleTogJ1IyNzVITktFWEMzQUkzQ1lMMlBQT0dQMkFGQTRYQ1JETzJDQ1JFR0NWRFg2T0pBWjU0TUJEN1ZMWUEnLFxuICAgIHZvdGVMYXN0OiA2MDAwMDAxLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGJhc2U2NFR4biA9IHtcbiAgdmFsaWRUeG46IHtcbiAgICB0eG46ICdncVJ0YzJsbmc2WnpkV0p6YVdlU2dxSndhOFFnL0ZITmptSVlvYU9OcEg3UUFqRHdXQWdXN1JPNk13T3NYZXVSRlVpUWdDV2hjOFJBRjR4Y2c3eGVLUFFVY25lWHVkVzZwRnVxN1Z2UXJFUmdsNStXV2dra2xDQXQ4SWNCTlVTSWxxaXZiaCt2WGVKVjhrWllNQmtXSnRrR05GRks2YlRCRFlLaWNHdkVJT2drakF6cHowanZRYlZrZ2lDc2hNcjM3MG1ZaFFPeTd3TnZvVzdLNS80Y29YUEVRRjFqbVJDWFhVckMySHp2OERndVNIY2V0Yk1IMnA1Q2dZQnFrV2NlenpWSUJxTVphZ3FGQmhnQysxUVpLdTBmWm9JelQveHhtKzZDcjB4bTQ1NE1wZ21qZEdoeUFxRjJBYU4wZUc2Sm8yRnRkTTRBVEV0QW8yWmxaYzBENktKbWRzNEFXNDJBbzJkbGJxeDBaWE4wYm1WMExYWXhMakNpWjJqRUlFaGp0UmlrczhoT3lCRHlMVThRZ2NzUGNmQlpwNndnM3NZdmYzRGxDVG9pb214MnpnQmJrV2lqY21OMnhDQTlRQmZENkVPSldwSzNDcWRORzM2OG5KZ3N6eTdFbG96QXpWWHhLdlJtREtOemJtVEVJTG9pYVVUWjdmeEtCNE9rS1FMT0k2QnR2S3F4REVjUHNnOGhvTWZrWHhhdHBIUjVjR1dqY0dGNScsXG4gICAgdHhpZDogJ00zRE9VVEVaSTZJMllNQ1hHRVNBSUczVjZFV0NBUkNZRVREVkdUVTZJN0g1QURSRTJDQkEnLFxuICB9LFxuICBpbnZhbGlkVHhuOiB7XG4gICAgdHhuOiAnZ3FSdGMybG5nNlp6ZFdKemFXZVNncUp3YThRZy9GSE5qbUlZb2FPTnBIN1FBakR3V0FnVzdSTzZNd09zWGV1UkZVaVFnQ1doYzhSQUY0eGNnN3hlS1BRVWNuZVh1ZFc2cEZ1cTdWdlFyRVJnbDUrV1dna2tsQ0F0OEljQk5VU0lscWl2YmgrdlhlSlY4a1pZTUJrV0p0a0dORkZLNmJUQkRZS2ljR3ZFSU9na2pBenB6MGp2UWJWa2dpQ3NoTXIzNzBtWWhRT3k3d052b1c3SzUvNGNvWFBFUUYxam1SQ1hYVXJDMkh6djhEZ3VTSGNldGJNSDJwNUNnWUJxa1djZXp6VklCcU1aYWdxRkJoZ0MrMVFaS3UwZlpvSXpUL3h4bSs2Q3IweG00NTRNcGdtamRHaHlBcUYyQWFOMGVHNkpvMkZ0ZE00QVRFdEFvMlpsWmMwRDZLSm1kczRBVzQyQW8yZGxicXgwWlhOMGJtVjBMWFl4TGpDaVoyakVJRWhqdFJpa3M4aE95QkR5TFU4UWdjc1BjZkJacDZ3ZzNzWXZmM0RsQ1RvaW9teDJ6Z0Jia1dpamNtTjJ4Q0E5UUJmRDZFT0pXcEszQ3FkTkczNjhuSmdzenk3RWxvekF6Vlh4S3ZSbURLTnpibVRFSUxvaWFVVFo3ZnhLQjRPa0tRTE9JNkJ0dktxeERFY1BzZzhob01ma1h4YXRwSFI1Y0dXamNHRicsXG4gICAgdHhpZDogJycsXG4gIH0sXG4gIGludmFsaWRUeG4yOiB7XG4gICAgdHhuOiAnZ3FOemFXZkVRTXk0Z1g4Z0poZnZ4VVN5OUNITy82aHJUZXU4QTBSZWd5Z1JCUFJrSUQveGVwbTJXMWQxenFCSWpubHBDaFk2OUU5NHRpY1NQLzBCazd0OWdvSkhNdytqZEhodWlhTmhiWFRPQUV4TFFLTm1aV1hOQStpaVpuYk9BRnVOZ0tOblpXNnNkR1Z6ZEc1bGRDMTJNUzR3b21kb3hDQklZN1VZcExQSVRzZ1E4aTFQRUlITEQzSHdXYWVzSU43R0wzOXc1UWs2SXFKc2RzNEFXNUZvbzNKamRzUWdQVUFYdytoRGlWcVN0d3FuVFJ0K3ZKeVlMTTh1eEphTXdNMVY4U3IwWmd5amMyNWt4Q0RYV3BnQmdyRUt0OVZML3RQSlpBYzZEdUZ5ODlxbUl5V3ZBaHBvOXdkUkdxUjBlWEJsbzNCaGVRPT0nLFxuICAgIHR4aWQ6ICdSU1dEVk5YV0xYN1VFRFZHSlI3QjdTU0NMM1E0M1VJTFBZSUVYMkFNREQ3MkpJRlY3VFZBJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
|
|
123
|
+
exports.consolidation = {
|
|
124
|
+
// Real consolidation transaction from account-consolidation-build
|
|
125
|
+
rootAddress: 'L6OMQGFVXSDOCEXVB3FFRBYUD3FH6UFMT6WNTFYDJXGEV6ZDQ74EXGF6BE',
|
|
126
|
+
receiveAddress: 'U3YYPVGS7MOEPLAMOEBQYMQL6K6OG6VA5CL4RGMPXQTMWEWHBSN2RYS774',
|
|
127
|
+
txHex: 'iaNhbXTOAJcL+KNmZWXNA+iiZnbOA2bxbqNnZW6sdGVzdG5ldC12MS4womdoxCBIY7UYpLPITsgQ8i1PEIHLD3HwWaesIN7GL39w5Qk6IqJsds4DZvVWo3JjdsQgX5zIGLW8huES9Q7KWIcUHsp/UKyfrNmXA03MSvsjh/ijc25kxCCm8YfU0vscR6wMcQMMMgvyvON6oOiXyJmPvCbLEscMm6R0eXBlo3BheQ==',
|
|
128
|
+
amount: '9899000',
|
|
129
|
+
txId: 'ROTFDRSEAWKSYIOBE6PKX5TVZIYKRFWEN4PET54ODY3RDMRCMMQA',
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9maXh0dXJlcy9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRVUsUUFBQSxRQUFRLEdBQUc7SUFDdEIsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQ2pHLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQztRQUM5RixNQUFNLEVBQUUsNERBQTREO1FBQ3BFLE9BQU8sRUFBRSw0REFBNEQ7UUFDckUsT0FBTyxFQUFFLDhDQUE4QztRQUN2RCxhQUFhLEVBQUUsMEZBQTBGO1FBQ3pHLFlBQVksRUFBRSw4Q0FBOEM7S0FDN0Q7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDakcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQzlGLE9BQU8sRUFBRSw0REFBNEQ7S0FDdEU7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDakcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDO1FBQzlGLE1BQU0sRUFBRSw0REFBNEQ7UUFDcEUsT0FBTyxFQUFFLDREQUE0RDtLQUN0RTtJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQztRQUNqRyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUM7UUFDOUYsTUFBTSxFQUFFLDRE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SSxFQUFFLHNEQUFzRDtDQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIHNlY3JldC9wdWJsaWMga2V5cyBhcmUgZnJvbSBSRkMgODAzMiBsaW5rIGh0dHBzOi8vd3d3LmlldGYub3JnL1xuICpcbiAqL1xuXG5leHBvcnQgY29uc3QgYWNjb3VudHMgPSB7XG4gIGFjY291bnQxOiB7XG4gICAgc2VjcmV0S2V5OiBCdWZmZXIuZnJvbSgnOWQ2MWIxOWRlZmZkNWE2MGJhODQ0YWY0OTJlYzJjYzQ0NDQ5YzU2OTdiMzI2OTE5NzAzYmFjMDMxY2FlN2Y2MCcsICdoZXgnKSxcbiAgICBwdWJLZXk6IEJ1ZmZlci5mcm9tKCdkNzVhOTgwMTgyYjEwYWI3ZDU0YmZlZDNjOTY0MDczYTBlZTE3MmYzZGFhNjIzMjVhZjAyMWE2OGY3MDc1MTFhJywgJ2hleCcpLFxuICAgIHBydktleTogJ1RWUTNESFBQN1ZOR0JPVUVKTDJKRjNCTVlSQ0VUUkxKUE1aR1NHTFFIT1dBR0hGT1A1UUVZVFpIMlEnLFxuICAgIGFkZHJlc3M6ICcyNU5KUUFNQ1dFRkxQVktMNzNKNFNaQUhISUhPQzRYVDNLVENHSk5QQUlOR1I1WUhLRU5NRUY1UVRFJyxcbiAgICB2b3RlS2V5OiAnTzBsTUtYQWFxTjRoN2pWSnI4TEhZMGh2RWJLNjJPSkxKa04xc294cDlCZz0nLFxuICAgIHN0YXRlUHJvb2ZLZXk6ICdtWVIwR1ZFT2JNVFNOZHNLTTZSd1l5d0hZUHFWRHFnM0U0SkZ6eFpPcmVIOU5VOEIrdEt6VWFueVk4QVExNDRoRVRnU01YN2ZYV3dqQmRIejZBV2s5dz09JyxcbiAgICBzZWxlY3Rpb25LZXk6ICd3WGpmekFvWmhscy96cmhnQW44emFzL1dUa3R2UnV4ZXBzNmZrdjJhdStjPScsXG4gIH0sXG4gIGFjY291bnQyOiB7XG4gICAgc2VjcmV0S2V5OiBCdWZmZXIuZnJvbSgnNGNjZDA4OWIyOGZmOTZkYTlkYjZjMzQ2ZWMxMTRlMGY1YjhhMzE5ZjM1YWJhNjI0ZGE4Y2Y2ZWQ0ZmI4YTZmYicsICdoZXgnKSxcbiAgICBwdWJLZXk6IEJ1ZmZlci5mcm9tKCczZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjJywgJ2hleCcpLFxuICAgIGFkZHJlc3M6ICdIVkFCUFE3SUlPRVZWRVZYQktUVTJHMzZYU09KUUxHUEYzQ0pOREdBWlZLN0NLWFVNWUdBNkVPRTZZJyxcbiAgfSxcbiAgYWNjb3VudDM6IHtcbiAgICBzZWNyZXRLZXk6IEJ1ZmZlci5mcm9tKCdjNWFhOGRmNDNmOWY4MzdiZWRiNzQ0MmYzMWRjYjdiMTY2ZDM4NTM1MDc2ZjA5NGI4NWNlM2EyZTBiNDQ1OGY3JywgJ2hleCcpLFxuICAgIHB1YktleTogQnVmZmVyLmZyb20oJ2ZjNTFjZDhlNjIxOGExYTM4ZGE0N2VkMDAyMzBmMDU4MDgxNmVkMTNiYTMzMDNhYzVkZWI5MTE1NDg5MDgwMjUnLCAnaGV4JyksXG4gICAgcHJ2S2V5OiAnWVdWSTM1QjdUNkJYWDNOWElRWFREWEZYV0ZUTkhCSlZBNVhRU1M0RlpZNUM0QzJFTEQzWVdZU1pMVScsXG4gICAgYWRkcmVzczogJzdSSTQzRFRDRENRMkhETkVQM0lBRU1IUUxBRUJOM0lUWElaUUhMQzU1T0lSS1NFUVFBUzUyT1lLSkUnLFxuICB9LFxuICBhY2NvdW50NDoge1xuICAgIHNlY3JldEtleTogQnVmZmVyLmZyb20oJzlhNzgwNDBmNDg4OWVhYzE4Nzg3OTM3NTdjNTRiODU3MDU2MzhmYWQ1MTk5NmRkOTEzNTY1MmZmODkwMmQ5MjQnLCAnaGV4JyksXG4gICAgcHViS2V5OiBCdWZmZXIuZnJvbSgnZTgyNDhjMGNlOWNmNDhlZjQxYjU2NDgyMjBhYzg0Y2FmN2VmNDk5ODg1MDNiMmVmMDM2ZmExNmVjYWU3ZmUxYycsICdoZXgnKSxcbiAgICBwcnZLZXk6ICdUSjRBSUQySVJIVk1EQjRIU04yWFlWRllLNENXSEQ1TktHTVczV0lUS1pKUDdDSUMzRVNLQlZHWE5BJyxcbiAgICBhZGRyZXNzOiAnNUFTSVlESEpaNUVPNlFOVk1TQkNCTEVFWkwzNjZTTVlRVUIzRjNZRE42UVc1U1hIN1lPTFVFM1pJWScsXG4gIH0sXG4gIGRlZmF1bHQ6IHtcbiAgICBzZWNyZXRLZXk6IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpLFxuICAgIHB1YktleTogQnVmZmVyLmZyb20oJzNiNmEyN2JjY2ViNmE0MmQ2MmEzYThkMDJhNmYwZDczNjUzMjE1NzcxZGUyNDNhNjNhYzA0OGExOGI1OWRhMjknLCAnaGV4JyksXG4gICAgYWRkcmVzczogJ0hOVkNQUEdPVzJTQzJZVkRWRElDVTNZTk9OU1RFRkxYRFhSRUhKUjJZQkVLREMyWjNJVVpTQzZZR0knLFxuICB9LFxufSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCByYXdUeCA9IHtcbiAgdHJhbnNmZXI6IHtcbiAgICB1bnNpZ25lZDpcbiAgICAgICc4YmEzNjE2ZDc0Y2QyNzEwYTU2MzZjNmY3MzY1YzQyMGZjNTFjZDhlNjIxOGExYTM4ZGE0N2VkMDAyMzBmMDU4MDgxNmVkMTNiYTMzMDNhYzVkZWI5MTE1NDg5MDgwMjVhMzY2NjU2NWNkNTVmMGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhNDZlNmY3NDY1YzQwNDZlNmY3NDY1YTM3MjYzNzZjNDIwM2Q0MDE3YzNlODQzODk1YTkyYjcwYWE3NGQxYjdlYmM5Yzk4MmNjZjJlYzQ5NjhjYzBjZDU1ZjEyYWY0NjYwY2EzNzM2ZTY0YzQyMGQ3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWFhNDc0Nzk3MDY1YTM3MDYxNzknLFxuICAgIHNpZ25lZDpcbiAgICAgICc4MmEzNzM2OTY3YzQ0MDcwMTQ2ZmQyYTMwZWYzMTE1M2UyMDBjNGI5ZGYyOWUwNDYwMzVmZTVhZDg5MzQxNzcwMDc0ZGQ1MzIwNjhkMDMyMzZjOTA3ZjFhMDNjZGJiODM0Y2NhM2U1MTdkODdmMTQ1NTFmNDhjMjU2OTU5MmU4YTdhMzM5YjVkMzNmZDBlYTM3NDc4NmU4YmEzNjE2ZDc0Y2QyNzEwYTU2MzZjNmY3MzY1YzQyMGZjNTFjZDhlNjIxOGExYTM4ZGE0N2VkMDAyMzBmMDU4MDgxNmVkMTNiYTMzMDNhYzVkZWI5MTE1NDg5MDgwMjVhMzY2NjU2NWNkNTVmMGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhNDZlNmY3NDY1YzQwNDZlNmY3NDY1YTM3MjYzNzZjNDIwM2Q0MDE3YzNlODQzODk1YTkyYjcwYWE3NGQxYjdlYmM5Yzk4MmNjZjJlYzQ5NjhjYzBjZDU1ZjEyYWY0NjYwY2EzNzM2ZTY0YzQyMGQ3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWFhNDc0Nzk3MDY1YTM3MDYxNzknLFxuICAgIC8vIHNpZ25lZCB3aXRoIGFjY291bnQxIG9ubHlcbiAgICBoYWxmU2lnbmVkOlxuICAgICAgJzgyYTQ2ZDczNjk2NzgzYTY3Mzc1NjI3MzY5Njc5MjgyYTI3MDZiYzQyMGQ3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWFhMTczYzQ0MGJmNTg0YjJhOWVjMjY2Yzc4MDlhYWEwZjg0ODY4N2M3OGQwMTQ1ZGM1YTg5NjdlMTQ0NTZkMTE2OTdjNzJlOGI5YWQ2YjhlZWNiZThhZWE0MWZjZjM4NGQwNWE2YWY1NGU5ZDA5MjhmYmE3ZDI5ZWRiZGYyN2Q5ZWYzYzlhNTAwODFhMjcwNmJjNDIwZmM1MWNkOGU2MjE4YTFhMzhkYTQ3ZWQwMDIzMGYwNTgwODE2ZWQxM2JhMzMwM2FjNWRlYjkxMTU0ODkwODAyNWEzNzQ2ODcyMDJhMTc2MDFhMzc0Nzg2ZTg5YTM2MTZkNzRjZDI3MTBhMzY2NjU2NWNkNTVmMGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhMzcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM3MzZlNjRjNDIwNWE4NzQ3NjJhNWU4ZjU1ZTBhMTk5OTVhZTM3ZDYwYTYzNTVhMjZiODMwMzg2ZWNhMzYzOWVjMzkyODY2MGMyY2E0NzQ3OTcwNjVhMzcwNjE3OScsXG4gICAgLy8gc2lnbmVkIHdpdGggYWNjb3VudDEgYW5kIGFjY291bnQgM1xuICAgIG11bHRpc2lnOlxuICAgICAgJzgyYTQ2ZDczNjk2NzgzYTY3Mzc1NjI3MzY5Njc5MjgyYTI3MDZiYzQyMGQ3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWFhMTczYzQ0MGJmNTg0YjJhOWVjMjY2Yzc4MDlhYWEwZjg0ODY4N2M3OGQwMTQ1ZGM1YTg5NjdlMTQ0NTZkMTE2OTdjNzJlOGI5YWQ2YjhlZWNiZThhZWE0MWZjZjM4NGQwNWE2YWY1NGU5ZDA5MjhmYmE3ZDI5ZWRiZGYyN2Q5ZWYzYzlhNTAwODJhMjcwNmJjNDIwZmM1MWNkOGU2MjE4YTFhMzhkYTQ3ZWQwMDIzMGYwNTgwODE2ZWQxM2JhMzMwM2FjNWRlYjkxMTU0ODkwODAyNWExNzNjNDQwZGU1YzIyNjY2NDEwNDEwYjc3YTM0YjJhOTE3ZmMxMDk5NjEwYTI3NzE4MThkNTFlNjQ0NmYxNWJkMDNiMmYxOWZiYzYzZDc1NTdkNmZmNGY1MWU2MTkzM2JkYzgzMzA2NGY2Yzk5OTZkNjJlNjFiOGVhNWFjNjE2YTdiNzI2MGFhMzc0Njg3MjAyYTE3NjAxYTM3NDc4NmU4OWEzNjE2ZDc0Y2QyNzEwYTM2NjY1NjVjZDU1ZjBhMjY2NzYwMWEzNjc2NTZlYWM3NDY1NzM3NDZlNjU3NDJkNzYzMTJlMzBhMjY3NjhjNDIwNDg2M2I1MThhNGIzYzg0ZWM4MTBmMjJkNGYxMDgxY2IwZjcxZjA1OWE3YWMyMGRlYzYyZjdmNzBlNTA5M2EyMmEyNmM3NjY0YTM3MjYzNzZjNDIwM2Q0MDE3YzNlODQzODk1YTkyYjcwYWE3NGQxYjdlYmM5Yzk4MmNjZjJlYzQ5NjhjYzBjZDU1ZjEyYWY0NjYwY2EzNzM2ZTY0YzQyMDVhODc0NzYyYTVlOGY1NWUwYTE5OTk1YWUzN2Q2MGE2MzU1YTI2YjgzMDM4NmVjYTM2MzllYzM5Mjg2NjBjMmNhNDc0Nzk3MDY1YTM3MDYxNzknLFxuICB9LFxuICBrZXlSZWc6IHtcbiAgICB1bnNpZ25lZDpcbiAgICAgICc4Y2EzNjY2NTY1Y2UwMDA0YTM4MGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhNjczNjU2YzZiNjU3OWM0MjBjMTc4ZGZjYzBhMTk4NjViM2ZjZWI4NjAwMjdmMzM2YWNmZDY0ZTRiNmY0NmVjNWVhNmNlOWY5MmZkOWFiYmU3YTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhNjZiNjU3OTcyNjU2N2E3NzY2Zjc0NjU2NjczNzQwMWE2NzY2Zjc0NjU2YjY0MDlhNzc2NmY3NDY1NmI2NTc5YzQyMDNiNDk0YzI5NzAxYWE4ZGUyMWVlMzU0OWFmYzJjNzYzNDg2ZjExYjJiYWQ4ZTI0YjI2NDM3NWIyOGM2OWY0MThhNzc2NmY3NDY1NmM3Mzc0NjQnLFxuICAgIHNpZ25lZDpcbiAgICAgICc4MmEzNzM2OTY3YzQ0MDgzZTBlNzBiYWU3MjZkNzM1YTJmZTMyMDYyMzc4YzUwYTViNTZmMTI1NDQ1ZDk4NTA2NjZjNWEwNGM2NzlhZjMzYWRkMjlkNjZiMzAxZTI5M2M5ZDUzMzQwNDZiYzAyYzA0YTIwOWVlZDUwZGIwNDlmMTUxOGE4YTU5MTc2ZTAzYTM3NDc4NmU4Y2EzNjY2NTY1Y2UwMDA0YTM4MGEyNjY3NjAxYTM2NzY1NmVhYzc0NjU3Mzc0NmU2NTc0MmQ3NjMxMmUzMGEyNjc2OGM0MjA0ODYzYjUxOGE0YjNjODRlYzgxMGYyMmQ0ZjEwODFjYjBmNzFmMDU5YTdhYzIwZGVjNjJmN2Y3MGU1MDkzYTIyYTI2Yzc2NjRhNjczNjU2YzZiNjU3OWM0MjBjMTc4ZGZjYzBhMTk4NjViM2ZjZWI4NjAwMjdmMzM2YWNmZDY0ZTRiNmY0NmVjNWVhNmNlOWY5MmZkOWFiYmU3YTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhNjZiNjU3OTcyNjU2N2E3NzY2Zjc0NjU2NjczNzQwMWE2NzY2Zjc0NjU2YjY0MDlhNzc2NmY3NDY1NmI2NTc5YzQyMDNiNDk0YzI5NzAxYWE4ZGUyMWVlMzU0OWFmYzJjNzYzNDg2ZjExYjJiYWQ4ZTI0YjI2NDM3NWIyOGM2OWY0MThhNzc2NmY3NDY1NmM3Mzc0NjQnLFxuICAgIG9sZFNka1Vuc2lnbmVkOlxuICAgICAgJ2k2Tm1aV1hOQStpaVpuYk9BRVA5Q2FKbmFNUWdTR08xR0tTenlFN0lFUEl0VHhDQnl3OXg4Rm1uckNEZXhpOS9jT1VKT2lLaWJIYk9BRVFBOGFaelpXeHJaWG5FSUt3TUlYNVRHMk4ySDYvN25CY3IxcnFkVGpyaTFadUpid2VRbXhJc2tpSllvM051Wk1RZ0QwdVptQzVvZXJZNjZaTEdma2UxSFFoYVM5YnB4aWsxSlRkYnI2WUFTUGlrZEhsd1phWnJaWGx5WldlbmRtOTBaV1p6ZE00QVEvMEpwblp2ZEdWclpNMG5FS2QyYjNSbGEyVjV4Q0JrTUtDVy9iNTZOcmNBQTZYakx3eGFaOUw3cU0rRzUvYzA3R3hveGlwakRhZDJiM1JsYkhOMHpnQ2Zpb2s9JyxcbiAgICBvbGRTZGtVbnNpZ25lZDI6XG4gICAgICAnZ2FOMGVHNkxvMlpsWmMwRDZLSm1kZ0dpWjJqRUlFaGp0UmlrczhoT3lCRHlMVThRZ2NzUGNmQlpwNndnM3NZdmYzRGxDVG9pb214MnpRUHBwbk5sYkd0bGVjUWdrMFk2RlRrOVdsV0JhLzhhNDl2UEdralgwTEJrbW5iRTZNZVU3bnRRUldDamMyNWt4Q0NUUmpvVk9UMWFWWUZyL3hyajI4OGFTTmZRc0dTYWRzVG94NVR1ZTFCRllLUjBlWEJscG10bGVYSmxaNmQyYjNSbFpuTjBBYVoyYjNSbGEyVE5KeENuZG05MFpXdGxlY1FnazBZNkZUazlXbFdCYS84YTQ5dlBHa2pYMExCa21uYkU2TWVVN250UVJXQ25kbTkwWld4emRNNEFXNDJCLycsXG4gICAgb2xkU2RrU2lnbmVkOlxuICAgICAgJ2dxUnRjMmxuZzZaemRXSnphV2VUZ3FKd2E4UWc2OHpiOUF4bEFCMXVpbDhDOFg1MlVoVlRlVVZscDNoZnRZMG01ZFhta2pPaGM4UkFoa0UydjR6cm5Vb0swTURNeWl2ZnJxYlJCYUZEa1JzRElmem1JSWhsMVNTNmFoM1ZXQklLSU5jZ3FiTUw5Z1RyR2VpQlZjNHBVZi9QSGVCNjJIQXBBSUdpY0d2RUlBVmlVK3NQQjlNWld0aEc0QzlqMnF6Zi94MHRabjBLWkdZNndYcHdZWTBHZ2FKd2E4UWdiK2Y2b0pGbHZ1NTJESDduUWJlTk13RkdJckJqV2hnQXlZYjlkaDhrRVIyamRHaHlBcUYyQWFOMGVHNklvMlpsWmMwRUdxSm1kczRBd0FKUW8yZGxicXgwWlhOMGJtVjBMWFl4TGpDaVoyakVJRWhqdFJpa3M4aE95QkR5TFU4UWdjc1BjZkJacDZ3ZzNzWXZmM0RsQ1RvaW9teDJ6Z0RBQmppbmJtOXVjR0Z5ZE1PamMyNWt4Q0FxWjhMRjdzL285R0RqTDAzMnBHUW9iMVF2TXBWMUhzakJzTGlqT2w5alZhUjBlWEJscG10bGVYSmxadz09JyxcbiAgfSxcbiAgYXNzZXRUcmFuc2Zlcjoge1xuICAgIHVuc2lnbmVkOlxuICAgICAgJzhhYTQ2MTYxNmQ3NGNkMDNlOGE0NjE3MjYzNzZjNDIwM2Q0MDE3YzNlODQzODk1YTkyYjcwYWE3NGQxYjdlYmM5Yzk4MmNjZjJlYzQ5NjhjYzBjZDU1ZjEyYWY0NjYwY2EzNjY2NTY1Y2QwM2U4YTI2Njc2MDFhMzY3NjU2ZWQ5MmM1MzQ3NGYzMTQ3NGI1MzdhNzk0NTM3NDk0NTUwNDk3NDU0Nzg0MzQyNzk3NzM5NzgzODQ2NmQ2ZTcyNDM0NDY1Nzg2OTM5MmY2MzRmNTU0YTRmNjk0OTNkYTI2NzY4YzQwOGI1ZWIyZDlkZWI3ZWJmNWRhMjZjNzYwYWEzNzM2ZTY0YzQyMGQ3NWE5ODAxODJiMTBhYjdkNTRiZmVkM2M5NjQwNzNhMGVlMTcyZjNkYWE2MjMyNWFmMDIxYTY4ZjcwNzUxMWFhNDc0Nzk3MDY1YTU2MTc4NjY2NTcyYTQ3ODYxNjk2NDAxJyxcbiAgICBzaWduZWQ6XG4gICAgICAnODJhMzczNjk2N2M0NDAxNzdiNmQ3ZjU0OGM4YzU3OTYxODIwMGZhZTNmNjE1NDljZGQzZmUwYWJhNWE3NGNjM2RjNzIxMTJhNWZlNGFhNDZiMjA5ZjYzYTM2NGEzMzEyNzg4NmYwNmZmY2E0NWZjYmU2NmNjYTY0Yzk5MGE2Y2JmN2U4ZmRiYWNlOTUwY2EzNzQ3ODZlOGFhNDYxNjE2ZDc0Y2Y4YWM3MjMwNDg5ZTgwMDAwYTQ2MTcyNjM3NmM0MjAzZDQwMTdjM2U4NDM4OTVhOTJiNzBhYTc0ZDFiN2ViYzljOTgyY2NmMmVjNDk2OGNjMGNkNTVmMTJhZjQ2NjBjYTM2NjY1NjVjZDAzZThhMjY2NzYwMWEzNjc2NTZlYWM3NDY1NzM3NDZlNjU3NDJkNzYzMTJlMzBhMjY3NjhjNDIwNDg2M2I1MThhNGIzYzg0ZWM4MTBmMjJkNGYxMDgxY2IwZjcxZjA1OWE3YWMyMGRlYzYyZjdmNzBlNTA5M2EyMmEyNmM3NjBhYTM3MzZlNjRjNDIwZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYWE0NzQ3OTcwNjVhNTYxNzg2NjY1NzJhNDc4NjE2OTY0MDEnLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IG5ldHdvcmtzID0ge1xuICBtYWlubmV0OiB7XG4gICAgZ2VuZXNpc0lEOiAnbWFpbm5ldC12MS4wJyxcbiAgICBnZW5lc2lzSGFzaDogJ3dHSEUyUHdkdmQ3UzEyQkw1RmFPUDIwRUdZZXNONzNrdGlDMXF6a2tpdDg9JyxcbiAgfSxcbiAgdGVzdG5ldDoge1xuICAgIGdlbmVzaXNJRDogJ3Rlc3RuZXQtdjEuMCcsXG4gICAgZ2VuZXNpc0hhc2g6ICdTR08xR0tTenlFN0lFUEl0VHhDQnl3OXg4Rm1uckNEZXhpOS9jT1VKT2lJPScsXG4gIH0sXG4gIGJldGFuZXQ6IHtcbiAgICBnZW5lc2lzSUQ6ICdiZXRhbmV0LXYxLjAnLFxuICAgIGdlbmVzaXNIYXNoOiAnbUZnYXpGKzJ1UlMxdE1pTDlkc2owMWhKR3lTRW1QTjI4Qi9Uamp2cFZXMD0nLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IHRyYW5zYWN0aW9ucyA9IHtcbiAgcGF5VHhuOiB7XG4gICAgZnJvbTogJ1lHTlVQSFhXUEhKUFVIUDVZNE41RkVLSFBSR0lHR0w3RzZEUjMzQkY2R0xNTVc1NTRENTNERUhJTkknLFxuICAgIHRvOiAnU1A3NDVKSlI0S1BSUUVYSlpIVklFTjczNkxZVEwyVDJERk1HM09JSUZKQlY2Nks3M1BITk1EQ1pWTScsXG4gICAgYW1vdW50OiA1MDAwLFxuICAgIGZpcnN0Um91bmQ6IDE2NyxcbiAgICBsYXN0Um91bmQ6IDExNjcsXG4gICAgZ2VuZXNpc0lEOiAndGVzdG5ldC12MS4wJyxcbiAgICBnZW5lc2lzSGFzaDogJ1NHTzFHS1N6eUU3SUVQSXRUeENCeXc5eDhGbW5yQ0RleGk5L2NPVUpPaUk9JyxcbiAgfSxcbiAgbm9uUGFydGljaXBhdGlvblR4bjoge1xuICAgIHR5cGU6ICdrZXlyZWcnLFxuICAgIGZyb206ICdSMjc1SE5LRVhDM0FJM0NZTDJQUE9HUDJBRkE0WENSRE8yQ0NSRUdDVkRYNk9KQVo1NE1CRDdWTFlBJyxcbiAgICBmaXJzdFJvdW5kOiAxNjcsXG4gICAgbGFzdFJvdW5kOiAxMTY3LFxuICAgIGdlbmVzaXNJRDogJ3Rlc3RuZXQtdjEuMCcsXG4gICAgZ2VuZXNpc0hhc2g6ICdTR08xR0tTenlFN0lFUEl0VHhDQnl3OXg4Rm1uckNEZXhpOS9jT1VKT2lJPScsXG4gICAgbm9uUGFydGljaXBhdGlvbjogdHJ1ZSxcbiAgfSxcbiAga2V5cmVnVHhuOiB7XG4gICAgZmVlOiAxMDAwLFxuICAgIGZpcnN0Um91bmQ6IDE2NyxcbiAgICBnZW5lc2lzSGFzaDogJ1NHTzFHS1N6eUU3SUVQSXRUeENCeXc5eDhGbW5yQ0RleGk5L2NPVUpPaUk9JyxcbiAgICBsYXN0Um91bmQ6IDExNjcsXG4gICAgc2VsZWN0aW9uS2V5OiAnUjI3NUhOS0VYQzNBSTNDWUwyUFBPR1AyQUZBNFhDUkRPMkNDUkVHQ1ZEWDZPSkFaNTRNQkQ3VkxZQScsXG4gICAgZnJvbTogJ1IyNzVITktFWEMzQUkzQ1lMMlBQT0dQMkFGQTRYQ1JETzJDQ1JFR0NWRFg2T0pBWjU0TUJEN1ZMWUEnLFxuICAgIHR5cGU6ICdrZXlyZWcnLFxuICAgIHZvdGVGaXJzdDogMSxcbiAgICB2b3RlS2V5RGlsdXRpb246IDEwMDAwLFxuICAgIHZvdGVLZXk6ICdSMjc1SE5LRVhDM0FJM0NZTDJQUE9HUDJBRkE0WENSRE8yQ0NSRUdDVkRYNk9KQVo1NE1CRDdWTFlBJyxcbiAgICB2b3RlTGFzdDogNjAwMDAwMSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBiYXNlNjRUeG4gPSB7XG4gIHZhbGlkVHhuOiB7XG4gICAgdHhuOiAnZ3FSdGMybG5nNlp6ZFdKemFXZVNncUp3YThRZy9GSE5qbUlZb2FPTnBIN1FBakR3V0FnVzdSTzZNd09zWGV1UkZVaVFnQ1doYzhSQUY0eGNnN3hlS1BRVWNuZVh1ZFc2cEZ1cTdWdlFyRVJnbDUrV1dna2tsQ0F0OEljQk5VU0lscWl2YmgrdlhlSlY4a1pZTUJrV0p0a0dORkZLNmJUQkRZS2ljR3ZFSU9na2pBenB6MGp2UWJWa2dpQ3NoTXIzNzBtWWhRT3k3d052b1c3SzUvNGNvWFBFUUYxam1SQ1hYVXJDMkh6djhEZ3VTSGNldGJNSDJwNUNnWUJxa1djZXp6VklCcU1aYWdxRkJoZ0MrMVFaS3UwZlpvSXpUL3h4bSs2Q3IweG00NTRNcGdtamRHaHlBcUYyQWFOMGVHNkpvMkZ0ZE00QVRFdEFvMlpsWmMwRDZLSm1kczRBVzQyQW8yZGxicXgwWlhOMGJtVjBMWFl4TGpDaVoyakVJRWhqdFJpa3M4aE95QkR5TFU4UWdjc1BjZkJacDZ3ZzNzWXZmM0RsQ1RvaW9teDJ6Z0Jia1dpamNtTjJ4Q0E5UUJmRDZFT0pXcEszQ3FkTkczNjhuSmdzenk3RWxvekF6Vlh4S3ZSbURLTnpibVRFSUxvaWFVVFo3ZnhLQjRPa0tRTE9JNkJ0dktxeERFY1BzZzhob01ma1h4YXRwSFI1Y0dXamNHRjUnLFxuICAgIHR4aWQ6ICdNM0RPVVRFWkk2STJZTUNYR0VTQUlHM1Y2RVdDQVJDWUVURFZHVFU2STdINUFEUkUyQ0JBJyxcbiAgfSxcbiAgaW52YWxpZFR4bjoge1xuICAgIHR4bjogJ2dxUnRjMmxuZzZaemRXSnphV2VTZ3FKd2E4UWcvRkhOam1JWW9hT05wSDdRQWpEd1dBZ1c3Uk82TXdPc1hldVJGVWlRZ0NXaGM4UkFGNHhjZzd4ZUtQUVVjbmVYdWRXNnBGdXE3VnZRckVSZ2w1K1dXZ2trbENBdDhJY0JOVVNJbHFpdmJoK3ZYZUpWOGtaWU1Ca1dKdGtHTkZGSzZiVEJEWUtpY0d2RUlPZ2tqQXpwejBqdlFiVmtnaUNzaE1yMzcwbVloUU95N3dOdm9XN0s1LzRjb1hQRVFGMWptUkNYWFVyQzJIenY4RGd1U0hjZXRiTUgycDVDZ1lCcWtXY2V6elZJQnFNWmFncUZCaGdDKzFRWkt1MGZab0l6VC94eG0rNkNyMHhtNDU0TXBnbWpkR2h5QXFGMkFhTjBlRzZKbzJGdGRNNEFURXRBbzJabFpjMEQ2S0ptZHM0QVc0MkFvMmRsYnF4MFpYTjBibVYwTFhZeExqQ2laMmpFSUVoanRSaWtzOGhPeUJEeUxVOFFnY3NQY2ZCWnA2d2czc1l2ZjNEbENUb2lvbXgyemdCYmtXaWpjbU4yeENBOVFCZkQ2RU9KV3BLM0NxZE5HMzY4bkpnc3p5N0Vsb3pBelZYeEt2Um1ES056Ym1URUlMb2lhVVRaN2Z4S0I0T2tLUUxPSTZCdHZLcXhERWNQc2c4aG9NZmtYeGF0cEhSNWNHV2pjR0YnLFxuICAgIHR4aWQ6ICcnLFxuICB9LFxuICBpbnZhbGlkVHhuMjoge1xuICAgIHR4bjogJ2dxTnphV2ZFUU15NGdYOGdKaGZ2eFVTeTlDSE8vNmhyVGV1OEEwUmVneWdSQlBSa0lEL3hlcG0yVzFkMXpxQklqbmxwQ2hZNjlFOTR0aWNTUC8wQms3dDlnb0pITXcramRIaHVpYU5oYlhUT0FFeExRS05tWldYTkEraWlabmJPQUZ1TmdLTm5aVzZzZEdWemRHNWxkQzEyTVM0d29tZG94Q0JJWTdVWXBMUElUc2dROGkxUEVJSExEM0h3V2Flc0lON0dMMzl3NVFrNklxSnNkczRBVzVGb28zSmpkc1FnUFVBWHcraERpVnFTdHdxblRSdCt2SnlZTE04dXhKYU13TTFWOFNyMFpneWpjMjVreENEWFdwZ0JnckVLdDlWTC90UEpaQWM2RHVGeTg5cW1JeVd2QWhwbzl3ZFJHcVIwZVhCbG8zQmhlUT09JyxcbiAgICB0eGlkOiAnUlNXRFZOWFdMWDdVRURWR0pSN0I3U1NDTDNRNDNVSUxQWUlFWDJBTURENzJKSUZWN1RWQScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY29uc29saWRhdGlvbiA9IHtcbiAgLy8gUmVhbCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uIGZyb20gYWNjb3VudC1jb25zb2xpZGF0aW9uLWJ1aWxkXG4gIHJvb3RBZGRyZXNzOiAnTDZPTVFHRlZYU0RPQ0VYVkIzRkZSQllVRDNGSDZVRk1UNldOVEZZREpYR0VWNlpEUTc0RVhHRjZCRScsXG4gIHJlY2VpdmVBZGRyZXNzOiAnVTNZWVBWR1M3TU9FUExBTU9FQlFZTVFMNks2T0c2VkE1Q0w0UkdNUFhRVE1XRVdIQlNOMlJZUzc3NCcsXG4gIHR4SGV4OlxuICAgICdpYU5oYlhUT0FKY0wrS05tWldYTkEraWlabmJPQTJieGJxTm5aVzZzZEdWemRHNWxkQzEyTVM0d29tZG94Q0JJWTdVWXBMUElUc2dROGkxUEVJSExEM0h3V2Flc0lON0dMMzl3NVFrNklxSnNkczREWnZWV28zSmpkc1FnWDV6SUdMVzhodUVTOVE3S1dJY1VIc3AvVUt5ZnJObVhBMDNNU3ZzamgvaWpjMjVreENDbThZZlUwdnNjUjZ3TWNRTU1NZ3Z5dk9ONm9PaVh5Sm1QdkNiTEVzY01tNlIwZVhCbG8zQmhlUT09JyxcbiAgYW1vdW50OiAnOTg5OTAwMCcsXG4gIHR4SWQ6ICdST1RGRFJTRUFXS1NZSU9CRTZQS1g1VFZaSVlLUkZXRU40UEVUNTRPRFkzUkRNUkNNTVFBJyxcbn0gYXMgY29uc3Q7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyTransaction.d.ts","sourceRoot":"","sources":["../../../test/unit/verifyTransaction.ts"],"names":[],"mappings":""}
|