@bitgo/sdk-coin-avaxp 5.0.53 → 5.0.55
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/CHANGELOG.md +12 -0
- package/dist/src/avaxp.d.ts +2 -3
- package/dist/src/avaxp.d.ts.map +1 -1
- package/dist/src/avaxp.js +4 -10
- package/dist/src/lib/atomicTransactionBuilder.js +3 -5
- package/dist/src/lib/delegatorTxBuilder.js +3 -5
- package/dist/src/lib/deprecatedTransaction.js +2 -3
- package/dist/src/lib/keyPair.js +2 -3
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +10 -10
- package/dist/src/lib/transaction.js +2 -3
- package/dist/src/lib/transactionBuilderFactory.js +2 -3
- package/dist/src/lib/utils.js +2 -2
- package/dist/test/resources/avaxp.js +5 -5
- package/dist/test/unit/avaxp.js +7 -13
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +5 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -102,7 +102,7 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
102
102
|
txExplain.inputs[3].id.should.equal('22B7GH7fDarBqyw8W7atC8ED3euVnefTiEWBPBmaSXrAhAQ4Lk:2');
|
|
103
103
|
});
|
|
104
104
|
it('should explains a Signed AddPermissionlessValidatorTx from raw', async () => {
|
|
105
|
-
const oldHex = '
|
|
105
|
+
const oldHex = '0x000000000019000000050000000000000000000000000000000000000000000000000000000000000000000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa00000007000000000b9f76c00000000000000000000000020000000342e19ad9a617fb95dcf8843ade66e06e578f549a8be54f016ab748127ab1a184626cba44c748a1eeac03c0ca71a1dde84702d272fbdd086001867012000000024f194d8e066b11dfe92f593cfa5c2fa1ae450927ecd5b093952e61834f4d8aa4000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa000000050000000023a4c1800000000200000000000000014f194d8e066b11dfe92f593cfa5c2fa1ae450927ecd5b093952e61834f4d8aa4000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa000000050000000023a4c1800000000200000000000000010000000094a8b8179f0b6e7e7ce55b4d6ec5ad56dae1de9f0000000062bb03e60000000062e32556000000003b9aca0000000000000000000000000000000000000000000000000000000000000000000000001c8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e1586a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa00000007000000003b9aca000000000000000000000000020000000342e19ad9a617fb95dcf8843ade66e06e578f549a8be54f016ab748127ab1a184626cba44c748a1eeac03c0ca71a1dde84702d272fbdd0860018670120000000b0000000000000000000000020000000342e19ad9a617fb95dcf8843ade66e06e578f549a8be54f016ab748127ab1a184626cba44c748a1eeac03c0ca71a1dde84702d272fbdd0860018670120000000b0000000000000000000000020000000342e19ad9a617fb95dcf8843ade66e06e578f549a8be54f016ab748127ab1a184626cba44c748a1eeac03c0ca71a1dde84702d272fbdd08600186701200004e2000000002000000090000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008be54f016ab748127ab1a184626cba44c748a1ee000000090000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008be54f016ab748127ab1a184626cba44c748a1ee964888d4';
|
|
106
106
|
const sortedBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(oldHex);
|
|
107
107
|
const sortedTx = await sortedBuilder.build();
|
|
108
108
|
const txExplain = sortedTx.explainTransaction();
|
|
@@ -111,7 +111,7 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
111
111
|
(0, assert_1.default)(newHex === oldHex);
|
|
112
112
|
txExplain.outputAmount.should.equal(testData.ADDVALIDATOR_SAMPLES.minValidatorStake);
|
|
113
113
|
txExplain.type.should.equal(sdk_core_1.TransactionType.AddPermissionlessValidator);
|
|
114
|
-
txExplain.outputs[0].address.should.equal('NodeID-
|
|
114
|
+
txExplain.outputs[0].address.should.equal('NodeID-EZ38CcWHoSyoEfAkDN9zaieJ5Yq64YePY');
|
|
115
115
|
});
|
|
116
116
|
it('should explain AddPermissionlessValidatorTx with 1 input', async () => {
|
|
117
117
|
const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from('0x000000000019000000050000000000000000000000000000000000000000000000000000000000000000000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa00000007000000003b9aca00000000000000000000000002000000032a00839550f75ee8879cacd97ff350a51d47ae14db94335f2f668b9707c78903c3b5ac54c6f4054783c4a6ecd5b18fa07692d35ee4c3f8b74d425721000000014f194d8e066b11dfe92f593cfa5c2fa1ae450927ecd5b093952e61834f4d8aa4000000003d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa00000005000000007735940000000002000000000000000100000000e25c9a09eb9c68d4807a39f97893facd9a6a7da100000000660d750900000000660ec689000000003b9aca0000000000000000000000000000000000000000000000000000000000000000000000001c8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e1586a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98000000013d9bdac0ed1d761330cf680efdeb1a42159eb387d6d2950c96f7d28f61bbe2aa00000007000000003b9aca00000000000000000000000002000000032a00839550f75ee8879cacd97ff350a51d47ae14db94335f2f668b9707c78903c3b5ac54c6f4054783c4a6ecd5b18fa07692d35ee4c3f8b74d4257210000000b000000000000000000000002000000032a00839550f75ee8879cacd97ff350a51d47ae14db94335f2f668b9707c78903c3b5ac54c6f4054783c4a6ecd5b18fa07692d35ee4c3f8b74d4257210000000b000000000000000000000002000000032a00839550f75ee8879cacd97ff350a51d47ae14db94335f2f668b9707c78903c3b5ac54c6f4054783c4a6ecd5b18fa07692d35ee4c3f8b74d42572100030d40000000010000000900000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db94335f2f668b9707c78903c3b5ac54c6f4054700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c5543b0');
|
|
@@ -197,6 +197,7 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
197
197
|
txExplain.inputs[0].id.should.equal('WyjYJHa7Ye1KMsBZiQ8hQJzY7YYxTJTTyMkxcVrKRDiNytTY8:0');
|
|
198
198
|
txExplain.inputs[1].id.should.equal('WyjYJHa7Ye1KMsBZiQ8hQJzY7YYxTJTTyMkxcVrKRDiNytTY8:1');
|
|
199
199
|
txExplain.inputs[2].id.should.equal('s92SjoZQemgG97HocX9GgyFy6ZKmapgcgqQ3y5J2uwP3qWBUy:0');
|
|
200
|
+
txExplain.fee.fee.should.equal('1000000');
|
|
200
201
|
(0, assert_1.default)(txJson.outputs[0].value === testData.BUILD_AND_SIGN_ADD_PERMISSIONLESS_VALIDATOR_SAMPLE.stakeAmount);
|
|
201
202
|
tx.type.should.equal(sdk_core_1.TransactionType.AddPermissionlessValidator);
|
|
202
203
|
console.log(tx.toBroadcastFormat());
|
|
@@ -249,7 +250,6 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
249
250
|
console.log(fullSignedTx.toJson());
|
|
250
251
|
});
|
|
251
252
|
it('build and sign a transaction in recovery mode', async () => {
|
|
252
|
-
var _a;
|
|
253
253
|
const recoveryMode = true;
|
|
254
254
|
const txBuilder = new AvaxpLib.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
|
|
255
255
|
.getPermissionlessValidatorTxBuilder()
|
|
@@ -278,7 +278,7 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
278
278
|
prv: privateKey,
|
|
279
279
|
};
|
|
280
280
|
const halfSignedTransaction = await basecoin.signTransaction(params);
|
|
281
|
-
txHex =
|
|
281
|
+
txHex = halfSignedTransaction?.halfSigned?.txHex;
|
|
282
282
|
txHex.should.equal(testData.BUILD_AND_SIGN_ADD_PERMISSIONLESS_SAMPLE.halfSignedRawTxRecovery);
|
|
283
283
|
});
|
|
284
284
|
it('build and sign an AddPermissionlessValidator transaction and broadcast in recovery mode', async () => {
|
|
@@ -338,4 +338,4 @@ describe('AvaxP permissionlessValidatorTxBuilder', () => {
|
|
|
338
338
|
txExplain.changeAmount.should.equal('0');
|
|
339
339
|
});
|
|
340
340
|
});
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBDO0FBQzFDLDhDQUFpRztBQUNqRyw4Q0FBMEQ7QUFDMUQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixzQ0FBNkM7QUFDN0MsMkRBQTZDO0FBQzdDLDBDQUE2RDtBQUM3RCx3R0FBcUc7QUFDckcsZ0VBQWtEO0FBQ2xELGtEQUFrRDtBQUVsRCxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDVixLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFdBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sU0FBUyxH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ICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEF2YXhQLCBUYXZheFAgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgQXZheHBMaWIgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvcGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXInO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2F2YXhwJztcbi8vIGltcG9ydCB7IHB2bSB9IGZyb20gJ0BiaXRnby1mb3Jrcy9hdmFsYW5jaGVqcyc7XG5cbmRlc2NyaWJlKCdBdmF4UCBwZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcicsICgpID0+IHtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpO1xuXG4gIGJlZm9yZSgoKSA9PiB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHtcbiAgICAgIGVudjogJ21vY2snLFxuICAgIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignYXZheHAnLCBBdmF4UC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YXZheHAnLCBUYXZheFAuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndGF2YXhwJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZnJvbSBoZXgnLCAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmhhbGZTaWduZWRUeCk7XG4gICAgdHhCdWlsZGVyLnNob3VsZC5iZS5hbi5pbnN0YW5jZU9mKFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIHJlYWRhYmxlJywgKCkgPT4ge1xuICAgIGxldCB0eDogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGJlZm9yZShhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKFxuICAgICAgICB0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS5mdWxsc2lnbnR4SGV4XG4gICAgICApO1xuICAgICAgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQganNvbiBzdHJpbmdpZml5IGFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQodHlwZW9mIEpTT04uc3RyaW5naWZ5KHR4LnRvSnNvbigpKSwgJ3N0cmluZycpO1xuICAgICAgdHhKc29uLmlkLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS50eGlkKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgZ2V0IGEgdHhpZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS50eGlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBleHBsYWlucyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgU2lnbmVkIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKFxuICAgICAgICAvLyBodHRwczovL3Rlc3RuZXQuc25vd3RyYWNlLmlvL3B2bS90eC8ydHQzS0U2Z0FHN3FwTUxMNnhveW5TeWs3aHQ0ZWdRNzR3Y0Y3QXVHbTI1dlEzUU5XQj9jaGFpbklkPTQzMTEzXG4gICAgICAgICcweDAwMDAwMDAwMDAxOTAwMDAwMDA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxM2Q5YmRhYzBlZDFkNzYxMzMwY2Y2ODBlZmRlYjFhNDIxNTllYjM4N2Q2ZDI5NTBjOTZmN2QyOGY2MWJiZTJhYTAwMDAwMDA3MDAwMDAwMDAwYmFlYjkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzYWMwM2MwY2E3MWExZGRlODQ3MDJkMjcyZmJkZDA4NjAwMTg2NzAxMjQyZTE5YWQ5YTYxN2ZiOTVkY2Y4ODQzYWRlNjZlMDZlNTc4ZjU0OWE4YmU1NGYwMTZhYjc0ODEyN2FiMWExODQ2MjZjYmE0NGM3NDhhMWVlMDAwMDAwMDI0ZjE5NGQ4ZTA2NmIxMWRmZTkyZjU5M2NmYTVjMmZhMWFlNDUwOTI3ZWNkNWIwOTM5NTJlNjE4MzRmNGQ4YWE0MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDIzYTRjMTgwMDAwMDAwMDMwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDE0ZjE5NGQ4ZTA2NmIxMWRmZTkyZjU5M2NmYTVjMmZhMWFlNDUwOTI3ZWNkNWIwOTM5NTJlNjE4MzRmNGQ4YWE0MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDIzYTRjMTgwMDAwMDAwMDMwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDk0YThiODE3OWYwYjZlN2U3Y2U1NWI0ZDZlYzVhZDU2ZGFlMWRlOWYwMDAwMDAwMDYyYmIwM2U2MDAwMDAwMDA2MmUzMjU1NjAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWM4Zjk1NDIzZjcxNDJkMDBhNDhlMTAxNGEzZGU4ZDI4OTA3ZDQyMGRjMzNiMzA1MmE2ZGVlMDNhM2YyOTQxYTM5M2MyMzUxZTM1NDcwNGNhNjZhM2ZjMjk4NzAyODJlMTU4NmEzYWI0YzQ1Y2ZlMzFjYWUzNGMxZDA2ZjIxMjQzNGFjNzFiMWJlNmNmZTA0NmM4MGMxNjJlMDU3NjE0YTk0YTViYzlmMWRlZDFhNzAyOWRlYjBiYTRjYTdjOWI3MTQxMWUyOTM0Mzg2OTFiZTc5YzJkYmYxOWQxY2E3YzNlYWRiOWM3NTYyNDZmYzVkZTViN2I4OTUxMWM3ZDczMDJhZTA1MWQ5ZTAzZDc5OTExMzgyOTliNWVkNmE1NzBhOTgwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNzAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwM2FjMDNjMGNhNzFhMWRkZTg0NzAyZDI3MmZiZGQwODYwMDE4NjcwMTI0MmUxOWFkOWE2MTdmYjk1ZGNmODg0M2FkZTY2ZTA2ZTU3OGY1NDlhOGJlNTRmMDE2YWI3NDgxMjdhYjFhMTg0NjI2Y2JhNDRjNzQ4YTFlZTAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDNhYzAzYzBjYTcxYTFkZGU4NDcwMmQyNzJmYmRkMDg2MDAxODY3MDEyNDJlMTlhZDlhNjE3ZmI5NWRjZjg4NDNhZGU2NmUwNmU1NzhmNTQ5YThiZTU0ZjAxNmFiNzQ4MTI3YWIxYTE4NDYyNmNiYTQ0Yzc0OGExZWUwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzYWMwM2MwY2E3MWExZGRlODQ3MDJkMjcyZmJkZDA4NjAwMTg2NzAxMjQyZTE5YWQ5YTYxN2ZiOTVkY2Y4ODQzYWRlNjZlMDZlNTc4ZjU0OWE4YmU1NGYwMTZhYjc0ODEyN2FiMWExODQ2MjZjYmE0NGM3NDhhMWVlMDAwMzBkNDAwMDAwMDAwMjAwMDAwMDA5MDAwMDAwMDJiNjMxZTk1NTNhODcyMTk3OGJmZmVkM2U3NzhkZTdlYjkwNGUxNjc1OTljMWQyNmQ1YThkM2M0NjE1OGRmNjYxMTY0YzZjYTYwMjlmMjQ5ODgwMjBjY2ZjZDY3M2U1YzE5ODE3ZmY3NGQwMTI2NTFmMjQ1ZDAwOWE3NDk1OTExNjAxNzBlYWU3M2Q3ZTE5YjA0NTY3MWQ0MTA1MGIxMTc5MTY0MzU2N2QxYmM5Y2M1MWZhMjI2ZDJiZTk1YTY1Njg5ZjE5Y2RhMDZhMjQyYTk3NDlmNmExNTBmY2MyYTViNTBhZjEyYTFiYzM1NjRkMWI3NmFjMWUzODI2YjVlMjEzNjEwMTAwMDAwMDA5MDAwMDAwMDJiNjMxZTk1NTNhODcyMTk3OGJmZmVkM2U3NzhkZTdlYjkwNGUxNjc1OTljMWQyNmQ1YThkM2M0NjE1OGRmNjYxMTY0YzZjYTYwMjlmMjQ5ODgwMjBjY2ZjZDY3M2U1YzE5ODE3ZmY3NGQwMTI2NTFmMjQ1ZDAwOWE3NDk1OTExNjAxNzBlYWU3M2Q3ZTE5YjA0NTY3MWQ0MTA1MGIxMTc5MTY0MzU2N2QxYmM5Y2M1MWZhMjI2ZDJiZTk1YTY1Njg5ZjE5Y2RhMDZhMjQyYTk3NDlmNmExNTBmY2MyYTViNTBhZjEyYTFiYzM1NjRkMWI3NmFjMWUzODI2YjVlMjEzNjEwMSdcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5taW5WYWxpZGF0b3JTdGFrZSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm5vZGVJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgU2lnbmVkIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHggYW5kIG9yZGVyIGlucHV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgnYXZheHAnKSkuZnJvbShcbiAgICAgICAgLy8gaHR0cHM6Ly90ZXN0bmV0LnNub3d0cmFjZS5pby9wdm0vdHgvMnR0M0tFNmdBRzdxcE1MTDZ4b3luU3lrN2h0NGVnUTc0d2NGN0F1R20yNXZRM1FOV0I/Y2hhaW5JZD00MzExM1xuICAgICAgICAnMHgwMDAwMDAwMDAwMTkwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIxZTY3MzE3Y2JjNGJlMmFlYjAwNjc3YWQ2NDYyNzc4YThmNTIyNzRiOWQ2MDVkZjI1OTFiMjMwMjdhODdkZmYwMDAwMDAwNzAwMDAwMDAwNzczNTk0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzkzY2E5M2U0Y2IzYjZjMTBkMTY3ZDQxZmJhYmViOGU5NGVkMmRlYjVkYzc4NzMyM2Q3MjJmZjQwZmRmZTU2MDQwZmI5OGY3YWVlMjA3NWVmZjRkZDdhMzY4ZGRiNmVmNzEzMmJmZjY5M2NiZmQ5YmEzMGYxN2MxODAwMDAwMDA0NmY4YmRjM2M4OTNlZGQyYzdmMjRhNjE5MGQ2MjMzZmRhNWNjZjUxN2Q5NmRkNmMwOGQxMzQxNzlhYmIyZDE0ZTAwMDAwMDAwMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA1MDAwMDAwNDcwMzZhYWEwMDAwMDAwMDAyMDAwMDAwMDEwMDAwMDAwMjg2NWNjODU2OGI5YzRjN2QzNmJiOTZlMDg2NjE5ZDhjODUyMThkNjUzZmY1NmQwNTEzMzRmODM5ZTU4OTc3YzMwMDAwMDAwMjIxZTY3MzE3Y2JjNGJlMmFlYjAwNjc3YWQ2NDYyNzc4YThmNTIyNzRiOWQ2MDVkZjI1OTFiMjMwMjdhODdkZmYwMDAwMDAwNTAwMDAwMDAwNWZiNWQ1OTAwMDAwMDAwMjAwMDAwMDAxMDAwMDAwMDI4NjVjYzg1NjhiOWM0YzdkMzZiYjk2ZTA4NjYxOWQ4Yzg1MjE4ZDY1M2ZmNTZkMDUxMzM0ZjgzOWU1ODk3N2MzMDAwMDAwMDEyMWU2NzMxN2NiYzRiZTJhZWIwMDY3N2FkNjQ2Mjc3OGE4ZjUyMjc0YjlkNjA1ZGYyNTkxYjIzMDI3YTg3ZGZmMDAwMDAwMDUwMDAwMDAwN2FlNjFlMzc4MDAwMDAwMDIwMDAwMDAwMTAwMDAwMDAyODY1Y2M4NTY4YjljNGM3ZDM2YmI5NmUwODY2MTlkOGM4NTIxOGQ2NTNmZjU2ZDA1MTMzNGY4MzllNTg5NzdjMzAwMDAwMDAwMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA1MDAwMDAzZmZiNmRiM2Y2OTAwMDAwMDAyMDAwMDAwMDEwMDAwMDAwMjAwMDAwMDAwOTUzY2M5NWU4NGYyOWRjNmVlNzU4OWVmNmFjYjAxYzlkNTYxY2JhMzAwMDAwMDAwNjYxNmM2NzUwMDAwMDAwMDY2NTYwZTc1MDAwMDA0NGU1MTI4MGU3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxY2E3YTJmMjljYTU4MGM0MjU0ZTNiZWFiY2UyMDQ3ZTA0ZWE4YzNjN2M2OWE1ODE3YjU0NjFjMjIzOTU5MzU2MWEzODQzYmM3Y2IxNDU3NjM5MDM3OGIxNDUxMzUzMDE0NzhmZjhjYjVhNjUxZTNkMDgyZmQ2Y2QxZTE3NzdlZGVhYmQ1YjA5MjRjYTY0OGYzODkwZDgyZWJkNjI1OWIzY2NhMDBlMzBmYWEyNDk0ODJmZWYxMDI5M2Y0MmUyOGFmYjE1ZjBhNWRkM2YzN2U1NTI0Y2Q1ZGUzZjNjMmI5MDlkZjQ5ODczYjgxOTZhZjYwMDA0ZDNmM2E4NGJhYTQ2YmEwOGRmN2JhZjhlNDg2YjBiNzlhOWMyMDcwOTVlMWE0MzAwMDAwMDAxMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA3MDAwMDA0NGU1MTI4MGU3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzOTNjYTkzZTRjYjNiNmMxMGQxNjdkNDFmYmFiZWI4ZTk0ZWQyZGViNWRjNzg3MzIzZDcyMmZmNDBmZGZlNTYwNDBmYjk4ZjdhZWUyMDc1ZWZmNGRkN2EzNjhkZGI2ZWY3MTMyYmZmNjkzY2JmZDliYTMwZjE3YzE4MDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzkzY2E5M2U0Y2IzYjZjMTBkMTY3ZDQxZmJhYmViOGU5NGVkMmRlYjVkYzc4NzMyM2Q3MjJmZjQwZmRmZTU2MDQwZmI5OGY3YWVlMjA3NWVmZjRkZDdhMzY4ZGRiNmVmNzEzMmJmZjY5M2NiZmQ5YmEzMGYxN2MxODAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM5M2NhOTNlNGNiM2I2YzEwZDE2N2Q0MWZiYWJlYjhlOTRlZDJkZWI1ZGM3ODczMjNkNzIyZmY0MGZkZmU1NjA0MGZiOThmN2FlZTIwNzVlZmY0ZGQ3YTM2OGRkYjZlZjcxMzJiZmY2OTNjYmZkOWJhMzBmMTdjMTgwMDAwNGUyMDAwMDAwMDA0MDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMjdlZmVjMDQnXG4gICAgICApO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5pZC5zaG91bGQuZXF1YWwoJ3I4SlVVWUZ2OU5XY05lNWN4TUZkQlJqcWtMNkZaZXdEZjJHdGt0dG14V0NkZUZGTUs6MCcpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1sxXS5pZC5zaG91bGQuZXF1YWwoJzIyQjdHSDdmRGFyQnF5dzhXN2F0QzhFRDNldVZuZWZUaUVXQlBCbWFTWHJBaEFRNExrOjAnKTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHNbMl0uaWQuc2hvdWxkLmVxdWFsKCcyMkI3R0g3ZkRhckJxeXc4VzdhdEM4RUQzZXVWbmVmVGlFV0JQQm1hU1hyQWhBUTRMazoxJyk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzWzNdLmlkLnNob3VsZC5lcXVhbCgnMjJCN0dIN2ZEYXJCcXl3OFc3YXRDOEVEM2V1Vm5lZlRpRVdCUEJtYVNYckFoQVE0TGs6MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWlucyBhIFNpZ25lZCBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4IGZyb20gcmF3JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb2xkSGV4ID1cbiAgICAgICAgJzB4MDAwMDAwMDAwMDE5MDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDFjYmFiYzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM3MDg2ZmJjMzY3MTdjN2E0MDdiZGIxOThiZDc5MjUyOTY3MjdkNmI5NzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMmI0NzFkNTRlNThlNGM1ZmFkZWU2MjJhYmQ2NjNiZWJhZDNhZDYzNzIwMDAwMDAwMjY0ZDliNWVhYjhjNGExYTI1YmZhOWUzZTFhNjBkNzhmMWFlODhlNzM1MmUyMmVmOTAxMDc2NDhiNzM4YTMwZTMwMDAwMDAwMDNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNTAwMDAwMDAwM2I2ZDAzNDAwMDAwMDAwMjAwMDAwMDAxMDAwMDAwMDI2Y2NiMmE0ZmVhMjgxYTg3MzdkMzNiMjUzNWVlM2Y3MDUxOGIzNTRjOTFmMGFkY2ZhYTcwZTQ1OWM0YjE4ODFjMDAwMDAwMDAzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDFjZTg4MzQwMDAwMDAwMDIwMDAwMDAwMTAwMDAwMDAyMDAwMDAwMDAxMjlhMjcxZmY0MDdiMTEwMWYzNWFlYzgyYTJmNzE1YzUyMzliZDM5MDAwMDAwMDA2NjBmMTdkZTAwMDAwMDAwNjYxMDZiYjYwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFjYWQ5ZTk0NzZiNzAxZWRlYzg4ZTUzYjFjMzE0NDU2MDUzYjNjZjg0NmExMTkyMTE3ODcyZTQxNDU1ZjQ0MGMwNzRkNmVlODk1MzBkNDVlODhmNzlhYzBlZGEwNmYyODg3YTk0ZDYxODJlZGJkOTUzNTE2YjI2MmYxNzU2NWE2NWQ5OGY1NzQxNTQ5Y2Q3MGQyNDIzYWJmZjc1MGJiNGI4ZDk4MmQ0ODIzNzZiMTg5MTQyZmY4YWE0NzA1NjE1ZmVlMTRiZTYxNzQ2MTA4NjBlOWMwMDNhYTRhZWFhNjEzYjE3MzJhYmYzY2QwYzljNDJmYTU4NTYzNDU2NDQwNjhjMGQxZjlmYTFkOWFmMzJlMjBiMTRmY2EwMjk4MzI2MGJjMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM3MDg2ZmJjMzY3MTdjN2E0MDdiZGIxOThiZDc5MjUyOTY3MjdkNmI5NzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMmI0NzFkNTRlNThlNGM1ZmFkZWU2MjJhYmQ2NjNiZWJhZDNhZDYzNzIwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzNzA4NmZiYzM2NzE3YzdhNDA3YmRiMTk4YmQ3OTI1Mjk2NzI3ZDZiOTc1NjUyODU0MDllMjAwZmRjNjdjN2I2Mzc1OWI1YWQyOWJmMDFmYzJiNDcxZDU0ZTU4ZTRjNWZhZGVlNjIyYWJkNjYzYmViYWQzYWQ2MzcyMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzcwODZmYmMzNjcxN2M3YTQwN2JkYjE5OGJkNzkyNTI5NjcyN2Q2Yjk3NTY1Mjg1NDA5ZTIwMGZkYzY3YzdiNjM3NTliNWFkMjliZjAxZmMyYjQ3MWQ1NGU1OGU0YzVmYWRlZTYyMmFiZDY2M2JlYmFkM2FkNjM3MjAwMDA0ZTIwMDAwMDAwMDIwMDAwMDAwOTAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0N2JlY2RhOSc7XG4gICAgICBjb25zdCBzb3J0ZWRCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShvbGRIZXgpO1xuICAgICAgY29uc3Qgc29ydGVkVHggPSBhd2FpdCBzb3J0ZWRCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBzb3J0ZWRUeC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIC8vIHRoaXMgdHggaXMgc29ydGVkIGFuZCBjYW4gYmUgYnJvYWRjYXN0ZWRcbiAgICAgIGNvbnN0IG5ld0hleCA9IHNvcnRlZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBhc3NlcnQobmV3SGV4ID09PSBvbGRIZXgpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMubWluVmFsaWRhdG9yU3Rha2UpO1xuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcik7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnTm9kZUlELTJoTXFCUWRqWk1XZEh2WXU3WlBMQTJDbXJBZGJUdnBHZicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHggd2l0aCAxIGlucHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgJzB4MDAwMDAwMDAwMDE5MDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDMyYTAwODM5NTUwZjc1ZWU4ODc5Y2FjZDk3ZmYzNTBhNTFkNDdhZTE0ZGI5NDMzNWYyZjY2OGI5NzA3Yzc4OTAzYzNiNWFjNTRjNmY0MDU0NzgzYzRhNmVjZDViMThmYTA3NjkyZDM1ZWU0YzNmOGI3NGQ0MjU3MjEwMDAwMDAwMTRmMTk0ZDhlMDY2YjExZGZlOTJmNTkzY2ZhNWMyZmExYWU0NTA5MjdlY2Q1YjA5Mzk1MmU2MTgzNGY0ZDhhYTQwMDAwMDAwMDNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNTAwMDAwMDAwNzczNTk0MDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMGUyNWM5YTA5ZWI5YzY4ZDQ4MDdhMzlmOTc4OTNmYWNkOWE2YTdkYTEwMDAwMDAwMDY2MGQ3NTA5MDAwMDAwMDA2NjBlYzY4OTAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWM4Zjk1NDIzZjcxNDJkMDBhNDhlMTAxNGEzZGU4ZDI4OTA3ZDQyMGRjMzNiMzA1MmE2ZGVlMDNhM2YyOTQxYTM5M2MyMzUxZTM1NDcwNGNhNjZhM2ZjMjk4NzAyODJlMTU4NmEzYWI0YzQ1Y2ZlMzFjYWUzNGMxZDA2ZjIxMjQzNGFjNzFiMWJlNmNmZTA0NmM4MGMxNjJlMDU3NjE0YTk0YTViYzlmMWRlZDFhNzAyOWRlYjBiYTRjYTdjOWI3MTQxMWUyOTM0Mzg2OTFiZTc5YzJkYmYxOWQxY2E3YzNlYWRiOWM3NTYyNDZmYzVkZTViN2I4OTUxMWM3ZDczMDJhZTA1MWQ5ZTAzZDc5OTExMzgyOTliNWVkNmE1NzBhOTgwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNzAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzJhMDA4Mzk1NTBmNzVlZTg4NzljYWNkOTdmZjM1MGE1MWQ0N2FlMTRkYjk0MzM1ZjJmNjY4Yjk3MDdjNzg5MDNjM2I1YWM1NGM2ZjQwNTQ3ODNjNGE2ZWNkNWIxOGZhMDc2OTJkMzVlZTRjM2Y4Yjc0ZDQyNTcyMTAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDMyYTAwODM5NTUwZjc1ZWU4ODc5Y2FjZDk3ZmYzNTBhNTFkNDdhZTE0ZGI5NDMzNWYyZjY2OGI5NzA3Yzc4OTAzYzNiNWFjNTRjNmY0MDU0NzgzYzRhNmVjZDViMThmYTA3NjkyZDM1ZWU0YzNmOGI3NGQ0MjU3MjEwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzMmEwMDgzOTU1MGY3NWVlODg3OWNhY2Q5N2ZmMzUwYTUxZDQ3YWUxNGRiOTQzMzVmMmY2NjhiOTcwN2M3ODkwM2MzYjVhYzU0YzZmNDA1NDc4M2M0YTZlY2Q1YjE4ZmEwNzY5MmQzNWVlNGMzZjhiNzRkNDI1NzIxMDAwMzBkNDAwMDAwMDAwMTAwMDAwMDA5MDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkYjk0MzM1ZjJmNjY4Yjk3MDdjNzg5MDNjM2I1YWM1NGM2ZjQwNTQ3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNjNTU0M2IwJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm1pblZhbGlkYXRvclN0YWtlKTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ05vZGVJRC1NZHRlUzlVOTg3UFk3aXdBNVBjejNzS1ZwckpBYkF2RTcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbnMgYSBIYWxmIFNpZ25lZCBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgdGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMuaGFsZnNpZ250eEhleFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm1pblZhbGlkYXRvclN0YWtlKTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkVmFsaWRhdG9yKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm5vZGVJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgdW5zaWduZWQgQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20oXG4gICAgICAgIHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLnVuc2lnbmVkVHhIZXhcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5taW5WYWxpZGF0b3JTdGFrZSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcik7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5ub2RlSUQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnYnVpbGQgYW5kIHNpZ24gYW4gQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IgdHJhbnNhY3Rpb24gYW5kIGJyb2FkY2FzdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIC8qXG5cbiAgICBjb25zdCBrZXlNYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgZjQ1ZDFjOWJmNTdkM2MwMjI5OWE3MjdkNmU1ZDhkNGU3NjQ5ODg0NmIxYTI4OWI0ZTMxYTJlY2NjYmMyMTJmYjoge1xuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jb2RlZDogJ0JoakV6YVhNU0ZqNGFRQmh3MjdEc243M2I4clI5Z0NUWCcsXG4gICAgICAgIHB1YjogJzAyYWJiNDUxYzBjYzI0MGU5YTRmYjk3YTEzMDg0NmQ5MGE4NzI0NzI2NGU1NzAxNGU0MWRjMjI2ZWJmNDk2NTcyNCcsXG4gICAgICAgIHBydjogJ2Y0NWQxYzliZjU3ZDNjMDIyOTlhNzI3ZDZlNWQ4ZDRlNzY0OTg4NDZiMWEyODliNGUzMWEyZWNjY2JjMjEyZmInLFxuICAgICAgICBhZGRyZXNzOiAnUC1mdWppMXc0ampzNHFmdWdxMG0zbnUwZDNodHg2NjYyZGxxODd6cTVuejMzJyxcbiAgICAgIH0sXG4gICAgICAnMmUwZmZlNmVmYmZjYzI3ZTlhYWY0YmNlNmFmNzhkNGM2NmU4OWIwOTU1Yjg1ZjAyZDdlMTU5MTBlMTZlZDRjZCc6IHtcbiAgICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgICAgZW5jb2RlZDogJ0JGelBKTmlmcWRmNlo4SDJQNzZnVEViZDhSbUNqTVN6TCcsXG4gICAgICAgIHB1YjogJzAyNTUyM2ZhNDhhNWIwYzhlZDRhODM0NGFhYjgzOTYwNjFmYjQyY2I0ZjE2OGJhNWQzYWUxOWYwMzRjNGVhMmQ0ZCcsXG4gICAgICAgIHBydjogJzJlMGZmZTZlZmJmY2MyN2U5YWFmNGJjZTZhZjc4ZDRjNjZlODliMDk1NWI4NWYwMmQ3ZTE1OTEwZTE2ZWQ0Y2QnLFxuICAgICAgICBhZGRyZXNzOiAnUC1mdWppMXd6cjBoc204emxyNmdwYWFreHZ0NjdmOTk5bmowNDRldGUwN3V3JyxcbiAgICAgIH0sXG4gICAgICAnNWEzNjBjODQ4MDIxMDI0NTI4ZGZjMDJlNzliYTQ0MWYxNzI3Yzc2NWI0ZDBkY2VjMjg4ZmZiZDI3NzJjZDQzMic6IHtcbiAgICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAgICBlbmNvZGVkOiAnSFQ2em9TZWNZeXFKWDYzSHFhajF1c3Z5cUpicm5jOGlhJyxcbiAgICAgICAgcHViOiAnMDNkNzFjZGEzYjFjMzJlZWQwNDQ4NjZlYzk2YzJhYzU0YWY0M2U3ZWRiOGYxNTM1ZGY1MWYzNDFlNDk2NzRmZmFhJyxcbiAgICAgICAgcHJ2OiAnNWEzNjBjODQ4MDIxMDI0NTI4ZGZjMDJlNzliYTQ0MWYxNzI3Yzc2NWI0ZDBkY2VjMjg4ZmZiZDI3NzJjZDQzMicsXG4gICAgICAgIGFkZHJlc3M6ICdQLWZ1amkxazNjYTJuamN1bnpsNGhoeHkyNGF2Y2E3aHRmNjZjbWpqdWtsMG4nLFxuICAgICAgfSxcbiAgICB9O1xuICAgICAgICovXG4gICAgICBjb25zdCB1bml4Tm93ID0gQmlnSW50KE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSB1bml4Tm93ICsgQmlnSW50KDYwKTtcbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBzdGFydFRpbWUgKyBCaWdJbnQoNjAgKiA2MCAqIDI0ICsgNjAwKTsgLy8gMjQgaG91cnMgKyAxMCBtaW51dGVzXG5cbiAgICAgIC8vIGNvbnN0IEFWQVhfUFVCTElDX1VSTCA9ICdodHRwczovL2FwaS5hdmF4LXRlc3QubmV0d29yayc7XG4gICAgICAvLyBjb25zdCBwdm1hcGkgPSBuZXcgcHZtLlBWTUFwaShBVkFYX1BVQkxJQ19VUkwpO1xuICAgICAgLy8gY29uc3QgeyB1dHhvcyB9ID0gYXdhaXQgcHZtYXBpLmdldFVUWE9zKHtcbiAgICAgIC8vICAgYWRkcmVzc2VzOiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5iaXRnb0FkZHJlc3NlcyxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gY29uc29sZS5sb2codXR4b3MpO1xuXG4gICAgICBjb25zdCByZWNvdmVyeU1vZGUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUubG9ja3RpbWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZShyZWNvdmVyeU1vZGUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJpdGdvQWRkcmVzc2VzKVxuICAgICAgICAuc3RhcnRUaW1lKHN0YXJ0VGltZS50b1N0cmluZygpKVxuICAgICAgICAuZW5kVGltZShlbmRUaW1lLnRvU3RyaW5nKCkpXG4gICAgICAgIC5zdGFrZUFtb3VudCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5zdGFrZUFtb3VudClcbiAgICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLm5vZGVJZClcbiAgICAgICAgLmJsc1B1YmxpY0tleSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ibHNQdWJsaWNLZXkpXG4gICAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudXR4b3MpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQodHhFeHBsYWluLm91dHB1dEFtb3VudCA9PT0gdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuc3Rha2VBbW91bnQpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5pZC5zaG91bGQuZXF1YWwoJ1d5allKSGE3WWUxS01zQlppUThoUUp6WTdZWXhUSlRUeU1reGNWcktSRGlOeXRUWTg6MCcpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1sxXS5pZC5zaG91bGQuZXF1YWwoJ1d5allKSGE3WWUxS01zQlppUThoUUp6WTdZWXhUSlRUeU1reGNWcktSRGlOeXRUWTg6MScpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1syXS5pZC5zaG91bGQuZXF1YWwoJ3M5MlNqb1pRZW1nRzk3SG9jWDlHZ3lGeTZaS21hcGdjZ3FRM3k1SjJ1d1AzcVdCVXk6MCcpO1xuICAgICAgYXNzZXJ0KHR4SnNvbi5vdXRwdXRzWzBdLnZhbHVlID09PSB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5zdGFrZUFtb3VudCk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IpO1xuICAgICAgY29uc29sZS5sb2codHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKVxuICAgICAgICAucmVjb3Zlck1vZGUoZmFsc2UpO1xuICAgICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuICAgICAgdHgyLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcik7XG4gICAgICAvLyBUZXN0IHNpZ24gd2l0aCB1c2VyIGtleVxuICAgICAgdHhCdWlsZGVyMi5zaWduKHsga2V5OiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS51c2VyUHJpdmF0ZUtleSB9KTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWQgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkVHhIZXggPSBoYWxmU2lnbmVkLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBhc3NlcnQodHhCdWlsZGVyWydfc3Rha2VBbW91bnQnXSA9PT0gdHhCdWlsZGVyMlsnX3N0YWtlQW1vdW50J10pO1xuICAgICAgY29uc29sZS5sb2coaGFsZlNpZ25lZFR4SGV4KTtcblxuICAgICAgLy8gY29uc3QgdHhCdWlsZGVyMiA9IGZhY3RvcnkuZnJvbShoYWxmU2lnbmVkVHhIZXgpO1xuICAgICAgLy8gdHhCdWlsZGVyMi5zaWduKHsga2V5OiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5iYWNrdXBQcml2YXRlS2V5IH0pO1xuICAgICAgLy8gY29uc3QgZnVsbFNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuICAgICAgLy8gY29uc29sZS5sb2coZnVsbFNpZ25lZFR4LnRvSnNvbigpKTtcblxuICAgICAgLy8gY29uc3QgcmVzID0gYXdhaXQgcHZtYXBpLmlzc3VlVHgoeyB0eDogZnVsbFNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkgfSk7XG4gICAgICAvLyBjb25zdCB0eFNpZ25lZCA9XG4gICAgICAvLyAgICcweDAwMDAwMDAwMDAxOTAwMDAwMDA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxM2Q5YmRhYzBlZDFkNzYxMzMwY2Y2ODBlZmRlYjFhNDIxNTllYjM4N2Q2ZDI5NTBjOTZmN2QyOGY2MWJiZTJhYTAwMDAwMDA3MDAwMDAwMDAwNWM4MWE0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzNzA4NmZiYzM2NzE3YzdhNDA3YmRiMTk4YmQ3OTI1Mjk2NzI3ZDZiOTc1NjUyODU0MDllMjAwZmRjNjdjN2I2Mzc1OWI1YWQyOWJmMDFmYzJiNDcxZDU0ZTU4ZTRjNWZhZGVlNjIyYWJkNjYzYmViYWQzYWQ2MzcyMDAwMDAwMDI0NDExYWY5ZDk4NzdjNTJjMWJlM2Y3NzgyNWE3NGNhMTE4NjkxMjg0NzhjNDE0NTkxMGU5MjY5NWEyNGM3ZDgwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDIwMDAwMDAwMTAwMDAwMDAyNzFkODY0NGM5MTk5ZTMwYjlmZWY1M2FmNTZhZWYyNDNlNTQzMWM2YjFiMDlkNWYxMWE2NjIyYzg2ZGIzZjM5ZDAwMDAwMDAwM2Q5YmRhYzBlZDFkNzYxMzMwY2Y2ODBlZmRlYjFhNDIxNTllYjM4N2Q2ZDI5NTBjOTZmN2QyOGY2MWJiZTJhYTAwMDAwMDA1MDAwMDAwMDAwNWM4MWE0MDAwMDAwMDAyMDAwMDAwMDEwMDAwMDAwMjAwMDAwMDAwMTI5YTI3MWZmNDA3YjExMDFmMzVhZWM4MmEyZjcxNWM1MjM5YmQzOTAwMDAwMDAwNjYwZjRhYjUwMDAwMDAwMDY2MTA5ZThkMDAwMDAwMDAzYjlhY2EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxY2FkOWU5NDc2YjcwMWVkZWM4OGU1M2IxYzMxNDQ1NjA1M2IzY2Y4NDZhMTE5MjExNzg3MmU0MTQ1NWY0NDBjMDc0ZDZlZTg5NTMwZDQ1ZTg4Zjc5YWMwZWRhMDZmMjg4N2E5NGQ2MTgyZWRiZDk1MzUxNmIyNjJmMTc1NjVhNjVkOThmNTc0MTU0OWNkNzBkMjQyM2FiZmY3NTBiYjRiOGQ5ODJkNDgyMzc2YjE4OTE0MmZmOGFhNDcwNTYxNWZlZTE0YmU2MTc0NjEwODYwZTljMDAzYWE0YWVhYTYxM2IxNzMyYWJmM2NkMGM5YzQyZmE1ODU2MzQ1NjQ0MDY4YzBkMWY5ZmExZDlhZjMyZTIwYjE0ZmNhMDI5ODMyNjBiYzAwMDAwMDAxM2Q5YmRhYzBlZDFkNzYxMzMwY2Y2ODBlZmRlYjFhNDIxNTllYjM4N2Q2ZDI5NTBjOTZmN2QyOGY2MWJiZTJhYTAwMDAwMDA3MDAwMDAwMDAzYjlhY2EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzNzA4NmZiYzM2NzE3YzdhNDA3YmRiMTk4YmQ3OTI1Mjk2NzI3ZDZiOTc1NjUyODU0MDllMjAwZmRjNjdjN2I2Mzc1OWI1YWQyOWJmMDFmYzJiNDcxZDU0ZTU4ZTRjNWZhZGVlNjIyYWJkNjYzYmViYWQzYWQ2MzcyMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzcwODZmYmMzNjcxN2M3YTQwN2JkYjE5OGJkNzkyNTI5NjcyN2Q2Yjk3NTY1Mjg1NDA5ZTIwMGZkYzY3YzdiNjM3NTliNWFkMjliZjAxZmMyYjQ3MWQ1NGU1OGU0YzVmYWRlZTYyMmFiZDY2M2JlYmFkM2FkNjM3MjAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM3MDg2ZmJjMzY3MTdjN2E0MDdiZGIxOThiZDc5MjUyOTY3MjdkNmI5NzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMmI0NzFkNTRlNThlNGM1ZmFkZWU2MjJhYmQ2NjNiZWJhZDNhZDYzNzIwMDAzMGQ0MDAwMDAwMDAyMDAwMDAwMDkwMDAwMDAwMjI4YTU5NDIwOTcxOTUzYWE2MWI0YjRjOTBiOTM0ZWY3NmU2ZTljOGFkMjU2ZTk0MTdlOWE2YjUwMTdkODM2ODEzYjJiNWNhZDJhODkwYzY2YzgyOTVmMTA0ZDc0MTkyYzQ5NjRjZjI4OWUyYTQ1YWRiNTdhN2IwNWI1ZTk1MjllMDA0ZWMyZGFlNWM0OGJhNmZhNGQxZTBiMWM2YjlkOWJiZTc5YzQ4MWZmMTY4NDhjMWZhM2ZhM2E2ZWQ0NzQzMWExMmFmNGIyZDk3NzliYjE5MmJiM2YyNTQ0MDg3MzE3OThiNTBjOGYwM2YyNWI3ZTdkNzMxMzczODg5MmU3MWQ2NjAxMDAwMDAwMDkwMDAwMDAwMjI4YTU5NDIwOTcxOTUzYWE2MWI0YjRjOTBiOTM0ZWY3NmU2ZTljOGFkMjU2ZTk0MTdlOWE2YjUwMTdkODM2ODEzYjJiNWNhZDJhODkwYzY2YzgyOTVmMTA0ZDc0MTkyYzQ5NjRjZjI4OWUyYTQ1YWRiNTdhN2IwNWI1ZTk1MjllMDA0ZWMyZGFlNWM0OGJhNmZhNGQxZTBiMWM2YjlkOWJiZTc5YzQ4MWZmMTY4NDhjMWZhM2ZhM2E2ZWQ0NzQzMWExMmFmNGIyZDk3NzliYjE5MmJiM2YyNTQ0MDg3MzE3OThiNTBjOGYwM2YyNWI3ZTdkNzMxMzczODg5MmU3MWQ2NjAxNTFhYTI5MWYnO1xuICAgICAgLy8gY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbSh0eCk7XG4gICAgICAvLyBjb25zdCBkZWNvZGUgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGRlY29kZS50b0pzb24oKSk7XG5cbiAgICAgIC8vIGNvbnN0IHJlcyA9IGF3YWl0IHB2bWFwaS5pc3N1ZVR4KHsgdHg6IHR4U2lnbmVkIH0pO1xuICAgICAgLy8gY29uc29sZS5sb2cocmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhbmQgc2lnbiBhbiBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlY292ZXJ5TW9kZSA9IGZhbHNlO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSlcbiAgICAgICAgLmdldFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUubG9ja3RpbWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZShyZWNvdmVyeU1vZGUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYml0Z29BZGRyZXNzZXMpXG4gICAgICAgIC5zdGFydFRpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5zdGFydFRpbWUpXG4gICAgICAgIC5lbmRUaW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuZW5kVGltZSlcbiAgICAgICAgLnN0YWtlQW1vdW50KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuc3Rha2VBbW91bnQpXG4gICAgICAgIC5kZWxlZ2F0aW9uRmVlUmF0ZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUubm9kZUlkKVxuICAgICAgICAuYmxzUHVibGljS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmxzUHVibGljS2V5KVxuICAgICAgICAuYmxzU2lnbmF0dXJlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS51dHhvcyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yKTtcblxuICAgICAgLy8gVGVzdCBzaWduIHdpdGggdXNlciBrZXlcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnVzZXJQcml2YXRlS2V5IH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmFja3VwUHJpdmF0ZUtleSB9KTtcbiAgICAgIGNvbnN0IGZ1bGxTaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc29sZS5sb2coZnVsbFNpZ25lZFR4LnRvSnNvbigpKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhbmQgc2lnbiBhIHRyYW5zYWN0aW9uIGluIHJlY292ZXJ5IG1vZGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZWNvdmVyeU1vZGUgPSB0cnVlO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSlcbiAgICAgICAgLmdldFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUubG9ja3RpbWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZShyZWNvdmVyeU1vZGUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYml0Z29BZGRyZXNzZXMpXG4gICAgICAgIC5zdGFydFRpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5zdGFydFRpbWUpXG4gICAgICAgIC5lbmRUaW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuZW5kVGltZSlcbiAgICAgICAgLnN0YWtlQW1vdW50KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuc3Rha2VBbW91bnQpXG4gICAgICAgIC5kZWxlZ2F0aW9uRmVlUmF0ZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUubm9kZUlkKVxuICAgICAgICAuYmxzUHVibGljS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmxzUHVibGljS2V5KVxuICAgICAgICAuYmxzU2lnbmF0dXJlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS51dHhvcyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBsZXQgdHhIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgdHhIZXguc2hvdWxkLmVxdWFsKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUudW5zaWduZWRSYXd0eFJlY292ZXJ5KTtcblxuICAgICAgY29uc3QgcHJpdmF0ZUtleSA9IHJlY292ZXJ5TW9kZVxuICAgICAgICA/IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuYmFja3VwUHJpdmF0ZUtleVxuICAgICAgICA6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUudXNlclByaXZhdGVLZXk7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IHByaXZhdGVLZXksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBoYWxmU2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHR4SGV4ID0gKGhhbGZTaWduZWRUcmFuc2FjdGlvbiBhcyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uKT8uaGFsZlNpZ25lZD8udHhIZXg7XG4gICAgICB0eEhleC5zaG91bGQuZXF1YWwodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5oYWxmU2lnbmVkUmF3VHhSZWNvdmVyeSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYW5kIHNpZ24gYW4gQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IgdHJhbnNhY3Rpb24gYW5kIGJyb2FkY2FzdCBpbiByZWNvdmVyeSBtb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdW5peE5vdyA9IEJpZ0ludChNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkpO1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gdW5peE5vdyArIEJpZ0ludCg2MCk7XG4gICAgICBjb25zdCBlbmRUaW1lID0gc3RhcnRUaW1lICsgQmlnSW50KDYwICogNjAgKiAyNCArIDYwMCk7XG5cbiAgICAgIGNvbnN0IHJlY292ZXJ5TW9kZSA9IHRydWU7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZ2V0UGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmxvY2t0aW1lKVxuICAgICAgICAucmVjb3Zlck1vZGUocmVjb3ZlcnlNb2RlKVxuICAgICAgICAuZnJvbVB1YktleSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5iaXRnb0FkZHJlc3NlcylcbiAgICAgICAgLnN0YXJ0VGltZShzdGFydFRpbWUudG9TdHJpbmcoKSlcbiAgICAgICAgLmVuZFRpbWUoZW5kVGltZS50b1N0cmluZygpKVxuICAgICAgICAuc3Rha2VBbW91bnQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuc3Rha2VBbW91bnQpXG4gICAgICAgIC5kZWxlZ2F0aW9uRmVlUmF0ZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5kZWxlZ2F0aW9uRmVlUmF0ZSlcbiAgICAgICAgLm5vZGVJRCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ub2RlSWQpXG4gICAgICAgIC5ibHNQdWJsaWNLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzUHVibGljS2V5KVxuICAgICAgICAuYmxzU2lnbmF0dXJlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJsc1NpZ25hdHVyZSlcbiAgICAgICAgLnV0eG9zKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnV0eG9zKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IpO1xuXG4gICAgICAvLyBUZXN0IHNpZ24gd2l0aCB1c2VyIGtleVxuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJhY2t1cFByaXZhdGVLZXkgfSk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkVHhIZXggPSBoYWxmU2lnbmVkLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oaGFsZlNpZ25lZFR4SGV4KTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudXNlclByaXZhdGVLZXkgfSk7XG4gICAgICBjb25zdCBmdWxsU2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsU2lnbmVkVHgudG9Kc29uKCkpO1xuICAgIH0pO1xuICB9KTtcbiAgaXQoJ1Nob3VsZCBmYWlsIHRvIGJ1aWxkIGlmIHV0eG9zIGNoYW5nZSBvdXRwdXQgMCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1bml4Tm93ID0gQmlnSW50KE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSk7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdW5peE5vdyArIEJpZ0ludCg2MCk7XG4gICAgY29uc3QgZW5kVGltZSA9IHN0YXJ0VGltZSArIEJpZ0ludCg2MCAqIDYwICogMjQgKyA2MDApO1xuXG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSlcbiAgICAgIC5nZXRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcigpXG4gICAgICAudGhyZXNob2xkKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnRocmVzaG9sZClcbiAgICAgIC5sb2NrdGltZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5sb2NrdGltZSlcbiAgICAgIC5yZWNvdmVyTW9kZShmYWxzZSlcbiAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJpdGdvQWRkcmVzc2VzKVxuICAgICAgLnN0YXJ0VGltZShzdGFydFRpbWUudG9TdHJpbmcoKSlcbiAgICAgIC5lbmRUaW1lKGVuZFRpbWUudG9TdHJpbmcoKSlcbiAgICAgIC5zdGFrZUFtb3VudCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5zdGFrZUFtb3VudE5vT3V0cHV0KVxuICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgLm5vZGVJRCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ub2RlSWQpXG4gICAgICAuYmxzUHVibGljS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJsc1B1YmxpY0tleSlcbiAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgLnV0eG9zKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnV0eG9zKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4SnNvbi5jaGFuZ2VPdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB0eEV4cGxhaW4uY2hhbmdlQW1vdW50LnNob3VsZC5lcXVhbCgnMCcpO1xuICB9KTtcbn0pO1xuIl19
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBDO0FBQzFDLDhDQUFpRztBQUNqRyw4Q0FBMEQ7QUFDMUQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixzQ0FBNkM7QUFDN0MsMkRBQTZDO0FBQzdDLDBDQUE2RDtBQUM3RCx3R0FBcUc7QUFDckcsZ0VBQWtEO0FBQ2xELGtEQUFrRDtBQUVsRCxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDVixLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFdBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sU0FBUyxH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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEF2YXhQLCBUYXZheFAgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgQXZheHBMaWIgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvcGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXInO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2F2YXhwJztcbi8vIGltcG9ydCB7IHB2bSB9IGZyb20gJ0BiaXRnby1mb3Jrcy9hdmFsYW5jaGVqcyc7XG5cbmRlc2NyaWJlKCdBdmF4UCBwZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcicsICgpID0+IHtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpO1xuXG4gIGJlZm9yZSgoKSA9PiB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHtcbiAgICAgIGVudjogJ21vY2snLFxuICAgIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignYXZheHAnLCBBdmF4UC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YXZheHAnLCBUYXZheFAuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndGF2YXhwJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZnJvbSBoZXgnLCAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmhhbGZTaWduZWRUeCk7XG4gICAgdHhCdWlsZGVyLnNob3VsZC5iZS5hbi5pbnN0YW5jZU9mKFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIHJlYWRhYmxlJywgKCkgPT4ge1xuICAgIGxldCB0eDogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGJlZm9yZShhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKFxuICAgICAgICB0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS5mdWxsc2lnbnR4SGV4XG4gICAgICApO1xuICAgICAgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQganNvbiBzdHJpbmdpZml5IGFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQodHlwZW9mIEpTT04uc3RyaW5naWZ5KHR4LnRvSnNvbigpKSwgJ3N0cmluZycpO1xuICAgICAgdHhKc29uLmlkLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS50eGlkKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgZ2V0IGEgdHhpZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERfVkFMSURBVE9SX0lEX1NBTVBMRS50eGlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBleHBsYWlucyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgU2lnbmVkIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKFxuICAgICAgICAvLyBodHRwczovL3Rlc3RuZXQuc25vd3RyYWNlLmlvL3B2bS90eC8ydHQzS0U2Z0FHN3FwTUxMNnhveW5TeWs3aHQ0ZWdRNzR3Y0Y3QXVHbTI1dlEzUU5XQj9jaGFpbklkPTQzMTEzXG4gICAgICAgICcweDAwMDAwMDAwMDAxOTAwMDAwMDA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxM2Q5YmRhYzBlZDFkNzYxMzMwY2Y2ODBlZmRlYjFhNDIxNTllYjM4N2Q2ZDI5NTBjOTZmN2QyOGY2MWJiZTJhYTAwMDAwMDA3MDAwMDAwMDAwYmFlYjkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzYWMwM2MwY2E3MWExZGRlODQ3MDJkMjcyZmJkZDA4NjAwMTg2NzAxMjQyZTE5YWQ5YTYxN2ZiOTVkY2Y4ODQzYWRlNjZlMDZlNTc4ZjU0OWE4YmU1NGYwMTZhYjc0ODEyN2FiMWExODQ2MjZjYmE0NGM3NDhhMWVlMDAwMDAwMDI0ZjE5NGQ4ZTA2NmIxMWRmZTkyZjU5M2NmYTVjMmZhMWFlNDUwOTI3ZWNkNWIwOTM5NTJlNjE4MzRmNGQ4YWE0MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDIzYTRjMTgwMDAwMDAwMDMwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDE0ZjE5NGQ4ZTA2NmIxMWRmZTkyZjU5M2NmYTVjMmZhMWFlNDUwOTI3ZWNkNWIwOTM5NTJlNjE4MzRmNGQ4YWE0MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDIzYTRjMTgwMDAwMDAwMDMwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDk0YThiODE3OWYwYjZlN2U3Y2U1NWI0ZDZlYzVhZDU2ZGFlMWRlOWYwMDAwMDAwMDYyYmIwM2U2MDAwMDAwMDA2MmUzMjU1NjAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWM4Zjk1NDIzZjcxNDJkMDBhNDhlMTAxNGEzZGU4ZDI4OTA3ZDQyMGRjMzNiMzA1MmE2ZGVlMDNhM2YyOTQxYTM5M2MyMzUxZTM1NDcwNGNhNjZhM2ZjMjk4NzAyODJlMTU4NmEzYWI0YzQ1Y2ZlMzFjYWUzNGMxZDA2ZjIxMjQzNGFjNzFiMWJlNmNmZTA0NmM4MGMxNjJlMDU3NjE0YTk0YTViYzlmMWRlZDFhNzAyOWRlYjBiYTRjYTdjOWI3MTQxMWUyOTM0Mzg2OTFiZTc5YzJkYmYxOWQxY2E3YzNlYWRiOWM3NTYyNDZmYzVkZTViN2I4OTUxMWM3ZDczMDJhZTA1MWQ5ZTAzZDc5OTExMzgyOTliNWVkNmE1NzBhOTgwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNzAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwM2FjMDNjMGNhNzFhMWRkZTg0NzAyZDI3MmZiZGQwODYwMDE4NjcwMTI0MmUxOWFkOWE2MTdmYjk1ZGNmODg0M2FkZTY2ZTA2ZTU3OGY1NDlhOGJlNTRmMDE2YWI3NDgxMjdhYjFhMTg0NjI2Y2JhNDRjNzQ4YTFlZTAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDNhYzAzYzBjYTcxYTFkZGU4NDcwMmQyNzJmYmRkMDg2MDAxODY3MDEyNDJlMTlhZDlhNjE3ZmI5NWRjZjg4NDNhZGU2NmUwNmU1NzhmNTQ5YThiZTU0ZjAxNmFiNzQ4MTI3YWIxYTE4NDYyNmNiYTQ0Yzc0OGExZWUwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzYWMwM2MwY2E3MWExZGRlODQ3MDJkMjcyZmJkZDA4NjAwMTg2NzAxMjQyZTE5YWQ5YTYxN2ZiOTVkY2Y4ODQzYWRlNjZlMDZlNTc4ZjU0OWE4YmU1NGYwMTZhYjc0ODEyN2FiMWExODQ2MjZjYmE0NGM3NDhhMWVlMDAwMzBkNDAwMDAwMDAwMjAwMDAwMDA5MDAwMDAwMDJiNjMxZTk1NTNhODcyMTk3OGJmZmVkM2U3NzhkZTdlYjkwNGUxNjc1OTljMWQyNmQ1YThkM2M0NjE1OGRmNjYxMTY0YzZjYTYwMjlmMjQ5ODgwMjBjY2ZjZDY3M2U1YzE5ODE3ZmY3NGQwMTI2NTFmMjQ1ZDAwOWE3NDk1OTExNjAxNzBlYWU3M2Q3ZTE5YjA0NTY3MWQ0MTA1MGIxMTc5MTY0MzU2N2QxYmM5Y2M1MWZhMjI2ZDJiZTk1YTY1Njg5ZjE5Y2RhMDZhMjQyYTk3NDlmNmExNTBmY2MyYTViNTBhZjEyYTFiYzM1NjRkMWI3NmFjMWUzODI2YjVlMjEzNjEwMTAwMDAwMDA5MDAwMDAwMDJiNjMxZTk1NTNhODcyMTk3OGJmZmVkM2U3NzhkZTdlYjkwNGUxNjc1OTljMWQyNmQ1YThkM2M0NjE1OGRmNjYxMTY0YzZjYTYwMjlmMjQ5ODgwMjBjY2ZjZDY3M2U1YzE5ODE3ZmY3NGQwMTI2NTFmMjQ1ZDAwOWE3NDk1OTExNjAxNzBlYWU3M2Q3ZTE5YjA0NTY3MWQ0MTA1MGIxMTc5MTY0MzU2N2QxYmM5Y2M1MWZhMjI2ZDJiZTk1YTY1Njg5ZjE5Y2RhMDZhMjQyYTk3NDlmNmExNTBmY2MyYTViNTBhZjEyYTFiYzM1NjRkMWI3NmFjMWUzODI2YjVlMjEzNjEwMSdcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5taW5WYWxpZGF0b3JTdGFrZSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm5vZGVJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgU2lnbmVkIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHggYW5kIG9yZGVyIGlucHV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgnYXZheHAnKSkuZnJvbShcbiAgICAgICAgLy8gaHR0cHM6Ly90ZXN0bmV0LnNub3d0cmFjZS5pby9wdm0vdHgvMnR0M0tFNmdBRzdxcE1MTDZ4b3luU3lrN2h0NGVnUTc0d2NGN0F1R20yNXZRM1FOV0I/Y2hhaW5JZD00MzExM1xuICAgICAgICAnMHgwMDAwMDAwMDAwMTkwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIxZTY3MzE3Y2JjNGJlMmFlYjAwNjc3YWQ2NDYyNzc4YThmNTIyNzRiOWQ2MDVkZjI1OTFiMjMwMjdhODdkZmYwMDAwMDAwNzAwMDAwMDAwNzczNTk0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzkzY2E5M2U0Y2IzYjZjMTBkMTY3ZDQxZmJhYmViOGU5NGVkMmRlYjVkYzc4NzMyM2Q3MjJmZjQwZmRmZTU2MDQwZmI5OGY3YWVlMjA3NWVmZjRkZDdhMzY4ZGRiNmVmNzEzMmJmZjY5M2NiZmQ5YmEzMGYxN2MxODAwMDAwMDA0NmY4YmRjM2M4OTNlZGQyYzdmMjRhNjE5MGQ2MjMzZmRhNWNjZjUxN2Q5NmRkNmMwOGQxMzQxNzlhYmIyZDE0ZTAwMDAwMDAwMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA1MDAwMDAwNDcwMzZhYWEwMDAwMDAwMDAyMDAwMDAwMDEwMDAwMDAwMjg2NWNjODU2OGI5YzRjN2QzNmJiOTZlMDg2NjE5ZDhjODUyMThkNjUzZmY1NmQwNTEzMzRmODM5ZTU4OTc3YzMwMDAwMDAwMjIxZTY3MzE3Y2JjNGJlMmFlYjAwNjc3YWQ2NDYyNzc4YThmNTIyNzRiOWQ2MDVkZjI1OTFiMjMwMjdhODdkZmYwMDAwMDAwNTAwMDAwMDAwNWZiNWQ1OTAwMDAwMDAwMjAwMDAwMDAxMDAwMDAwMDI4NjVjYzg1NjhiOWM0YzdkMzZiYjk2ZTA4NjYxOWQ4Yzg1MjE4ZDY1M2ZmNTZkMDUxMzM0ZjgzOWU1ODk3N2MzMDAwMDAwMDEyMWU2NzMxN2NiYzRiZTJhZWIwMDY3N2FkNjQ2Mjc3OGE4ZjUyMjc0YjlkNjA1ZGYyNTkxYjIzMDI3YTg3ZGZmMDAwMDAwMDUwMDAwMDAwN2FlNjFlMzc4MDAwMDAwMDIwMDAwMDAwMTAwMDAwMDAyODY1Y2M4NTY4YjljNGM3ZDM2YmI5NmUwODY2MTlkOGM4NTIxOGQ2NTNmZjU2ZDA1MTMzNGY4MzllNTg5NzdjMzAwMDAwMDAwMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA1MDAwMDAzZmZiNmRiM2Y2OTAwMDAwMDAyMDAwMDAwMDEwMDAwMDAwMjAwMDAwMDAwOTUzY2M5NWU4NGYyOWRjNmVlNzU4OWVmNmFjYjAxYzlkNTYxY2JhMzAwMDAwMDAwNjYxNmM2NzUwMDAwMDAwMDY2NTYwZTc1MDAwMDA0NGU1MTI4MGU3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxY2E3YTJmMjljYTU4MGM0MjU0ZTNiZWFiY2UyMDQ3ZTA0ZWE4YzNjN2M2OWE1ODE3YjU0NjFjMjIzOTU5MzU2MWEzODQzYmM3Y2IxNDU3NjM5MDM3OGIxNDUxMzUzMDE0NzhmZjhjYjVhNjUxZTNkMDgyZmQ2Y2QxZTE3NzdlZGVhYmQ1YjA5MjRjYTY0OGYzODkwZDgyZWJkNjI1OWIzY2NhMDBlMzBmYWEyNDk0ODJmZWYxMDI5M2Y0MmUyOGFmYjE1ZjBhNWRkM2YzN2U1NTI0Y2Q1ZGUzZjNjMmI5MDlkZjQ5ODczYjgxOTZhZjYwMDA0ZDNmM2E4NGJhYTQ2YmEwOGRmN2JhZjhlNDg2YjBiNzlhOWMyMDcwOTVlMWE0MzAwMDAwMDAxMjFlNjczMTdjYmM0YmUyYWViMDA2NzdhZDY0NjI3NzhhOGY1MjI3NGI5ZDYwNWRmMjU5MWIyMzAyN2E4N2RmZjAwMDAwMDA3MDAwMDA0NGU1MTI4MGU3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzOTNjYTkzZTRjYjNiNmMxMGQxNjdkNDFmYmFiZWI4ZTk0ZWQyZGViNWRjNzg3MzIzZDcyMmZmNDBmZGZlNTYwNDBmYjk4ZjdhZWUyMDc1ZWZmNGRkN2EzNjhkZGI2ZWY3MTMyYmZmNjkzY2JmZDliYTMwZjE3YzE4MDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzkzY2E5M2U0Y2IzYjZjMTBkMTY3ZDQxZmJhYmViOGU5NGVkMmRlYjVkYzc4NzMyM2Q3MjJmZjQwZmRmZTU2MDQwZmI5OGY3YWVlMjA3NWVmZjRkZDdhMzY4ZGRiNmVmNzEzMmJmZjY5M2NiZmQ5YmEzMGYxN2MxODAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM5M2NhOTNlNGNiM2I2YzEwZDE2N2Q0MWZiYWJlYjhlOTRlZDJkZWI1ZGM3ODczMjNkNzIyZmY0MGZkZmU1NjA0MGZiOThmN2FlZTIwNzVlZmY0ZGQ3YTM2OGRkYjZlZjcxMzJiZmY2OTNjYmZkOWJhMzBmMTdjMTgwMDAwNGUyMDAwMDAwMDA0MDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMDAwMDAwMDkwMDAwMDAwMjA4MzA0ZTg4NDFhYjk2MTY5ZWEyYjI4ZGMzNThkZjM1OTQ1MjNiM2NlODc1OTNmMWY1NzliNTFiN2JmYjg0NGQ0OWQ2OTBmNzFlZGI0ZTY1MzBiODgwMDQzNmE0ZWY3MzU3MDQ2YTIxNTVjNWI1MmMxNTQxNGFlNzZjYTk1NmM4MDA3YmJkOGRiZWE5MDcxYzFiZjE3ODhmODUzNDcyZTA4MzYyYjFhZmFkYzlkMGE0NDEyYjEzYjBlYTQzYjcwM2UwMTBkZjEyMDRkODhjNmZlMDQ4NDE0MGIxYmI5MWZkYmY3YTAzMmQyNjI0NzVhNDE5ZjgwODI5NDExYTA0MTE0MDAxMjdlZmVjMDQnXG4gICAgICApO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5pZC5zaG91bGQuZXF1YWwoJ3I4SlVVWUZ2OU5XY05lNWN4TUZkQlJqcWtMNkZaZXdEZjJHdGt0dG14V0NkZUZGTUs6MCcpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1sxXS5pZC5zaG91bGQuZXF1YWwoJzIyQjdHSDdmRGFyQnF5dzhXN2F0QzhFRDNldVZuZWZUaUVXQlBCbWFTWHJBaEFRNExrOjAnKTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHNbMl0uaWQuc2hvdWxkLmVxdWFsKCcyMkI3R0g3ZkRhckJxeXc4VzdhdEM4RUQzZXVWbmVmVGlFV0JQQm1hU1hyQWhBUTRMazoxJyk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzWzNdLmlkLnNob3VsZC5lcXVhbCgnMjJCN0dIN2ZEYXJCcXl3OFc3YXRDOEVEM2V1Vm5lZlRpRVdCUEJtYVNYckFoQVE0TGs6MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWlucyBhIFNpZ25lZCBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4IGZyb20gcmF3JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb2xkSGV4ID1cbiAgICAgICAgJzB4MDAwMDAwMDAwMDE5MDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDBiOWY3NmMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM0MmUxOWFkOWE2MTdmYjk1ZGNmODg0M2FkZTY2ZTA2ZTU3OGY1NDlhOGJlNTRmMDE2YWI3NDgxMjdhYjFhMTg0NjI2Y2JhNDRjNzQ4YTFlZWFjMDNjMGNhNzFhMWRkZTg0NzAyZDI3MmZiZGQwODYwMDE4NjcwMTIwMDAwMDAwMjRmMTk0ZDhlMDY2YjExZGZlOTJmNTkzY2ZhNWMyZmExYWU0NTA5MjdlY2Q1YjA5Mzk1MmU2MTgzNGY0ZDhhYTQwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNTAwMDAwMDAwMjNhNGMxODAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDE0ZjE5NGQ4ZTA2NmIxMWRmZTkyZjU5M2NmYTVjMmZhMWFlNDUwOTI3ZWNkNWIwOTM5NTJlNjE4MzRmNGQ4YWE0MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDIzYTRjMTgwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDA5NGE4YjgxNzlmMGI2ZTdlN2NlNTViNGQ2ZWM1YWQ1NmRhZTFkZTlmMDAwMDAwMDA2MmJiMDNlNjAwMDAwMDAwNjJlMzI1NTYwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFjOGY5NTQyM2Y3MTQyZDAwYTQ4ZTEwMTRhM2RlOGQyODkwN2Q0MjBkYzMzYjMwNTJhNmRlZTAzYTNmMjk0MWEzOTNjMjM1MWUzNTQ3MDRjYTY2YTNmYzI5ODcwMjgyZTE1ODZhM2FiNGM0NWNmZTMxY2FlMzRjMWQwNmYyMTI0MzRhYzcxYjFiZTZjZmUwNDZjODBjMTYyZTA1NzYxNGE5NGE1YmM5ZjFkZWQxYTcwMjlkZWIwYmE0Y2E3YzliNzE0MTFlMjkzNDM4NjkxYmU3OWMyZGJmMTlkMWNhN2MzZWFkYjljNzU2MjQ2ZmM1ZGU1YjdiODk1MTFjN2Q3MzAyYWUwNTFkOWUwM2Q3OTkxMTM4Mjk5YjVlZDZhNTcwYTk4MDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM0MmUxOWFkOWE2MTdmYjk1ZGNmODg0M2FkZTY2ZTA2ZTU3OGY1NDlhOGJlNTRmMDE2YWI3NDgxMjdhYjFhMTg0NjI2Y2JhNDRjNzQ4YTFlZWFjMDNjMGNhNzFhMWRkZTg0NzAyZDI3MmZiZGQwODYwMDE4NjcwMTIwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzNDJlMTlhZDlhNjE3ZmI5NWRjZjg4NDNhZGU2NmUwNmU1NzhmNTQ5YThiZTU0ZjAxNmFiNzQ4MTI3YWIxYTE4NDYyNmNiYTQ0Yzc0OGExZWVhYzAzYzBjYTcxYTFkZGU4NDcwMmQyNzJmYmRkMDg2MDAxODY3MDEyMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzQyZTE5YWQ5YTYxN2ZiOTVkY2Y4ODQzYWRlNjZlMDZlNTc4ZjU0OWE4YmU1NGYwMTZhYjc0ODEyN2FiMWExODQ2MjZjYmE0NGM3NDhhMWVlYWMwM2MwY2E3MWExZGRlODQ3MDJkMjcyZmJkZDA4NjAwMTg2NzAxMjAwMDA0ZTIwMDAwMDAwMDIwMDAwMDAwOTAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhiZTU0ZjAxNmFiNzQ4MTI3YWIxYTE4NDYyNmNiYTQ0Yzc0OGExZWUwMDAwMDAwOTAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhiZTU0ZjAxNmFiNzQ4MTI3YWIxYTE4NDYyNmNiYTQ0Yzc0OGExZWU5NjQ4ODhkNCc7XG4gICAgICBjb25zdCBzb3J0ZWRCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShvbGRIZXgpO1xuICAgICAgY29uc3Qgc29ydGVkVHggPSBhd2FpdCBzb3J0ZWRCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBzb3J0ZWRUeC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIC8vIHRoaXMgdHggaXMgc29ydGVkIGFuZCBjYW4gYmUgYnJvYWRjYXN0ZWRcbiAgICAgIGNvbnN0IG5ld0hleCA9IHNvcnRlZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBhc3NlcnQobmV3SGV4ID09PSBvbGRIZXgpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMubWluVmFsaWRhdG9yU3Rha2UpO1xuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcik7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnTm9kZUlELUVaMzhDY1dIb1N5b0VmQWtETjl6YWllSjVZcTY0WWVQWScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHggd2l0aCAxIGlucHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgJzB4MDAwMDAwMDAwMDE5MDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDMyYTAwODM5NTUwZjc1ZWU4ODc5Y2FjZDk3ZmYzNTBhNTFkNDdhZTE0ZGI5NDMzNWYyZjY2OGI5NzA3Yzc4OTAzYzNiNWFjNTRjNmY0MDU0NzgzYzRhNmVjZDViMThmYTA3NjkyZDM1ZWU0YzNmOGI3NGQ0MjU3MjEwMDAwMDAwMTRmMTk0ZDhlMDY2YjExZGZlOTJmNTkzY2ZhNWMyZmExYWU0NTA5MjdlY2Q1YjA5Mzk1MmU2MTgzNGY0ZDhhYTQwMDAwMDAwMDNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNTAwMDAwMDAwNzczNTk0MDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMGUyNWM5YTA5ZWI5YzY4ZDQ4MDdhMzlmOTc4OTNmYWNkOWE2YTdkYTEwMDAwMDAwMDY2MGQ3NTA5MDAwMDAwMDA2NjBlYzY4OTAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWM4Zjk1NDIzZjcxNDJkMDBhNDhlMTAxNGEzZGU4ZDI4OTA3ZDQyMGRjMzNiMzA1MmE2ZGVlMDNhM2YyOTQxYTM5M2MyMzUxZTM1NDcwNGNhNjZhM2ZjMjk4NzAyODJlMTU4NmEzYWI0YzQ1Y2ZlMzFjYWUzNGMxZDA2ZjIxMjQzNGFjNzFiMWJlNmNmZTA0NmM4MGMxNjJlMDU3NjE0YTk0YTViYzlmMWRlZDFhNzAyOWRlYjBiYTRjYTdjOWI3MTQxMWUyOTM0Mzg2OTFiZTc5YzJkYmYxOWQxY2E3YzNlYWRiOWM3NTYyNDZmYzVkZTViN2I4OTUxMWM3ZDczMDJhZTA1MWQ5ZTAzZDc5OTExMzgyOTliNWVkNmE1NzBhOTgwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNzAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzJhMDA4Mzk1NTBmNzVlZTg4NzljYWNkOTdmZjM1MGE1MWQ0N2FlMTRkYjk0MzM1ZjJmNjY4Yjk3MDdjNzg5MDNjM2I1YWM1NGM2ZjQwNTQ3ODNjNGE2ZWNkNWIxOGZhMDc2OTJkMzVlZTRjM2Y4Yjc0ZDQyNTcyMTAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDMyYTAwODM5NTUwZjc1ZWU4ODc5Y2FjZDk3ZmYzNTBhNTFkNDdhZTE0ZGI5NDMzNWYyZjY2OGI5NzA3Yzc4OTAzYzNiNWFjNTRjNmY0MDU0NzgzYzRhNmVjZDViMThmYTA3NjkyZDM1ZWU0YzNmOGI3NGQ0MjU3MjEwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzMmEwMDgzOTU1MGY3NWVlODg3OWNhY2Q5N2ZmMzUwYTUxZDQ3YWUxNGRiOTQzMzVmMmY2NjhiOTcwN2M3ODkwM2MzYjVhYzU0YzZmNDA1NDc4M2M0YTZlY2Q1YjE4ZmEwNzY5MmQzNWVlNGMzZjhiNzRkNDI1NzIxMDAwMzBkNDAwMDAwMDAwMTAwMDAwMDA5MDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkYjk0MzM1ZjJmNjY4Yjk3MDdjNzg5MDNjM2I1YWM1NGM2ZjQwNTQ3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNjNTU0M2IwJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm1pblZhbGlkYXRvclN0YWtlKTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ05vZGVJRC1NZHRlUzlVOTg3UFk3aXdBNVBjejNzS1ZwckpBYkF2RTcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbnMgYSBIYWxmIFNpZ25lZCBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgdGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMuaGFsZnNpZ250eEhleFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm1pblZhbGlkYXRvclN0YWtlKTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkVmFsaWRhdG9yKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm5vZGVJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgdW5zaWduZWQgQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20oXG4gICAgICAgIHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLnVuc2lnbmVkVHhIZXhcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5taW5WYWxpZGF0b3JTdGFrZSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcik7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5ub2RlSUQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnYnVpbGQgYW5kIHNpZ24gYW4gQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IgdHJhbnNhY3Rpb24gYW5kIGJyb2FkY2FzdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIC8qXG5cbiAgICBjb25zdCBrZXlNYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgZjQ1ZDFjOWJmNTdkM2MwMjI5OWE3MjdkNmU1ZDhkNGU3NjQ5ODg0NmIxYTI4OWI0ZTMxYTJlY2NjYmMyMTJmYjoge1xuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jb2RlZDogJ0JoakV6YVhNU0ZqNGFRQmh3MjdEc243M2I4clI5Z0NUWCcsXG4gICAgICAgIHB1YjogJzAyYWJiNDUxYzBjYzI0MGU5YTRmYjk3YTEzMDg0NmQ5MGE4NzI0NzI2NGU1NzAxNGU0MWRjMjI2ZWJmNDk2NTcyNCcsXG4gICAgICAgIHBydjogJ2Y0NWQxYzliZjU3ZDNjMDIyOTlhNzI3ZDZlNWQ4ZDRlNzY0OTg4NDZiMWEyODliNGUzMWEyZWNjY2JjMjEyZmInLFxuICAgICAgICBhZGRyZXNzOiAnUC1mdWppMXc0ampzNHFmdWdxMG0zbnUwZDNodHg2NjYyZGxxODd6cTVuejMzJyxcbiAgICAgIH0sXG4gICAgICAnMmUwZmZlNmVmYmZjYzI3ZTlhYWY0YmNlNmFmNzhkNGM2NmU4OWIwOTU1Yjg1ZjAyZDdlMTU5MTBlMTZlZDRjZCc6IHtcbiAgICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgICAgZW5jb2RlZDogJ0JGelBKTmlmcWRmNlo4SDJQNzZnVEViZDhSbUNqTVN6TCcsXG4gICAgICAgIHB1YjogJzAyNTUyM2ZhNDhhNWIwYzhlZDRhODM0NGFhYjgzOTYwNjFmYjQyY2I0ZjE2OGJhNWQzYWUxOWYwMzRjNGVhMmQ0ZCcsXG4gICAgICAgIHBydjogJzJlMGZmZTZlZmJmY2MyN2U5YWFmNGJjZTZhZjc4ZDRjNjZlODliMDk1NWI4NWYwMmQ3ZTE1OTEwZTE2ZWQ0Y2QnLFxuICAgICAgICBhZGRyZXNzOiAnUC1mdWppMXd6cjBoc204emxyNmdwYWFreHZ0NjdmOTk5bmowNDRldGUwN3V3JyxcbiAgICAgIH0sXG4gICAgICAnNWEzNjBjODQ4MDIxMDI0NTI4ZGZjMDJlNzliYTQ0MWYxNzI3Yzc2NWI0ZDBkY2VjMjg4ZmZiZDI3NzJjZDQzMic6IHtcbiAgICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAgICBlbmNvZGVkOiAnSFQ2em9TZWNZeXFKWDYzSHFhajF1c3Z5cUpicm5jOGlhJyxcbiAgICAgICAgcHViOiAnMDNkNzFjZGEzYjFjMzJlZWQwNDQ4NjZlYzk2YzJhYzU0YWY0M2U3ZWRiOGYxNTM1ZGY1MWYzNDFlNDk2NzRmZmFhJyxcbiAgICAgICAgcHJ2OiAnNWEzNjBjODQ4MDIxMDI0NTI4ZGZjMDJlNzliYTQ0MWYxNzI3Yzc2NWI0ZDBkY2VjMjg4ZmZiZDI3NzJjZDQzMicsXG4gICAgICAgIGFkZHJlc3M6ICdQLWZ1amkxazNjYTJuamN1bnpsNGhoeHkyNGF2Y2E3aHRmNjZjbWpqdWtsMG4nLFxuICAgICAgfSxcbiAgICB9O1xuICAgICAgICovXG4gICAgICBjb25zdCB1bml4Tm93ID0gQmlnSW50KE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSB1bml4Tm93ICsgQmlnSW50KDYwKTtcbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBzdGFydFRpbWUgKyBCaWdJbnQoNjAgKiA2MCAqIDI0ICsgNjAwKTsgLy8gMjQgaG91cnMgKyAxMCBtaW51dGVzXG5cbiAgICAgIC8vIGNvbnN0IEFWQVhfUFVCTElDX1VSTCA9ICdodHRwczovL2FwaS5hdmF4LXRlc3QubmV0d29yayc7XG4gICAgICAvLyBjb25zdCBwdm1hcGkgPSBuZXcgcHZtLlBWTUFwaShBVkFYX1BVQkxJQ19VUkwpO1xuICAgICAgLy8gY29uc3QgeyB1dHhvcyB9ID0gYXdhaXQgcHZtYXBpLmdldFVUWE9zKHtcbiAgICAgIC8vICAgYWRkcmVzc2VzOiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5iaXRnb0FkZHJlc3NlcyxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gY29uc29sZS5sb2codXR4b3MpO1xuXG4gICAgICBjb25zdCByZWNvdmVyeU1vZGUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUubG9ja3RpbWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZShyZWNvdmVyeU1vZGUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJpdGdvQWRkcmVzc2VzKVxuICAgICAgICAuc3RhcnRUaW1lKHN0YXJ0VGltZS50b1N0cmluZygpKVxuICAgICAgICAuZW5kVGltZShlbmRUaW1lLnRvU3RyaW5nKCkpXG4gICAgICAgIC5zdGFrZUFtb3VudCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5zdGFrZUFtb3VudClcbiAgICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLm5vZGVJZClcbiAgICAgICAgLmJsc1B1YmxpY0tleSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ibHNQdWJsaWNLZXkpXG4gICAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudXR4b3MpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQodHhFeHBsYWluLm91dHB1dEFtb3VudCA9PT0gdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuc3Rha2VBbW91bnQpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1swXS5pZC5zaG91bGQuZXF1YWwoJ1d5allKSGE3WWUxS01zQlppUThoUUp6WTdZWXhUSlRUeU1reGNWcktSRGlOeXRUWTg6MCcpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1sxXS5pZC5zaG91bGQuZXF1YWwoJ1d5allKSGE3WWUxS01zQlppUThoUUp6WTdZWXhUSlRUeU1reGNWcktSRGlOeXRUWTg6MScpO1xuICAgICAgdHhFeHBsYWluLmlucHV0c1syXS5pZC5zaG91bGQuZXF1YWwoJ3M5MlNqb1pRZW1nRzk3SG9jWDlHZ3lGeTZaS21hcGdjZ3FRM3k1SjJ1d1AzcVdCVXk6MCcpO1xuICAgICAgdHhFeHBsYWluLmZlZS5mZWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBhc3NlcnQodHhKc29uLm91dHB1dHNbMF0udmFsdWUgPT09IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnN0YWtlQW1vdW50KTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcik7XG4gICAgICBjb25zb2xlLmxvZyh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpXG4gICAgICAgIC5yZWNvdmVyTW9kZShmYWxzZSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICB0eDIudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yKTtcbiAgICAgIC8vIFRlc3Qgc2lnbiB3aXRoIHVzZXIga2V5XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnVzZXJQcml2YXRlS2V5IH0pO1xuICAgICAgY29uc3QgaGFsZlNpZ25lZCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWRUeEhleCA9IGhhbGZTaWduZWQudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGFzc2VydCh0eEJ1aWxkZXJbJ19zdGFrZUFtb3VudCddID09PSB0eEJ1aWxkZXIyWydfc3Rha2VBbW91bnQnXSk7XG4gICAgICBjb25zb2xlLmxvZyhoYWxmU2lnbmVkVHhIZXgpO1xuXG4gICAgICAvLyBjb25zdCB0eEJ1aWxkZXIyID0gZmFjdG9yeS5mcm9tKGhhbGZTaWduZWRUeEhleCk7XG4gICAgICAvLyB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJhY2t1cFByaXZhdGVLZXkgfSk7XG4gICAgICAvLyBjb25zdCBmdWxsU2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICAvLyBjb25zb2xlLmxvZyhmdWxsU2lnbmVkVHgudG9Kc29uKCkpO1xuXG4gICAgICAvLyBjb25zdCByZXMgPSBhd2FpdCBwdm1hcGkuaXNzdWVUeCh7IHR4OiBmdWxsU2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKSB9KTtcbiAgICAgIC8vIGNvbnN0IHR4U2lnbmVkID1cbiAgICAgIC8vICAgJzB4MDAwMDAwMDAwMDE5MDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDA1YzgxYTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM3MDg2ZmJjMzY3MTdjN2E0MDdiZGIxOThiZDc5MjUyOTY3MjdkNmI5NzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMmI0NzFkNTRlNThlNGM1ZmFkZWU2MjJhYmQ2NjNiZWJhZDNhZDYzNzIwMDAwMDAwMjQ0MTFhZjlkOTg3N2M1MmMxYmUzZjc3ODI1YTc0Y2ExMTg2OTEyODQ3OGM0MTQ1OTEwZTkyNjk1YTI0YzdkODAwMDAwMDAwMTNkOWJkYWMwZWQxZDc2MTMzMGNmNjgwZWZkZWIxYTQyMTU5ZWIzODdkNmQyOTUwYzk2ZjdkMjhmNjFiYmUyYWEwMDAwMDAwNTAwMDAwMDAwM2I5YWNhMDAwMDAwMDAwMjAwMDAwMDAxMDAwMDAwMDI3MWQ4NjQ0YzkxOTllMzBiOWZlZjUzYWY1NmFlZjI0M2U1NDMxYzZiMWIwOWQ1ZjExYTY2MjJjODZkYjNmMzlkMDAwMDAwMDAzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDUwMDAwMDAwMDA1YzgxYTQwMDAwMDAwMDIwMDAwMDAwMTAwMDAwMDAyMDAwMDAwMDAxMjlhMjcxZmY0MDdiMTEwMWYzNWFlYzgyYTJmNzE1YzUyMzliZDM5MDAwMDAwMDA2NjBmNGFiNTAwMDAwMDAwNjYxMDllOGQwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFjYWQ5ZTk0NzZiNzAxZWRlYzg4ZTUzYjFjMzE0NDU2MDUzYjNjZjg0NmExMTkyMTE3ODcyZTQxNDU1ZjQ0MGMwNzRkNmVlODk1MzBkNDVlODhmNzlhYzBlZGEwNmYyODg3YTk0ZDYxODJlZGJkOTUzNTE2YjI2MmYxNzU2NWE2NWQ5OGY1NzQxNTQ5Y2Q3MGQyNDIzYWJmZjc1MGJiNGI4ZDk4MmQ0ODIzNzZiMTg5MTQyZmY4YWE0NzA1NjE1ZmVlMTRiZTYxNzQ2MTA4NjBlOWMwMDNhYTRhZWFhNjEzYjE3MzJhYmYzY2QwYzljNDJmYTU4NTYzNDU2NDQwNjhjMGQxZjlmYTFkOWFmMzJlMjBiMTRmY2EwMjk4MzI2MGJjMDAwMDAwMDEzZDliZGFjMGVkMWQ3NjEzMzBjZjY4MGVmZGViMWE0MjE1OWViMzg3ZDZkMjk1MGM5NmY3ZDI4ZjYxYmJlMmFhMDAwMDAwMDcwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDM3MDg2ZmJjMzY3MTdjN2E0MDdiZGIxOThiZDc5MjUyOTY3MjdkNmI5NzU2NTI4NTQwOWUyMDBmZGM2N2M3YjYzNzU5YjVhZDI5YmYwMWZjMmI0NzFkNTRlNThlNGM1ZmFkZWU2MjJhYmQ2NjNiZWJhZDNhZDYzNzIwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAzNzA4NmZiYzM2NzE3YzdhNDA3YmRiMTk4YmQ3OTI1Mjk2NzI3ZDZiOTc1NjUyODU0MDllMjAwZmRjNjdjN2I2Mzc1OWI1YWQyOWJmMDFmYzJiNDcxZDU0ZTU4ZTRjNWZhZGVlNjIyYWJkNjYzYmViYWQzYWQ2MzcyMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMzcwODZmYmMzNjcxN2M3YTQwN2JkYjE5OGJkNzkyNTI5NjcyN2Q2Yjk3NTY1Mjg1NDA5ZTIwMGZkYzY3YzdiNjM3NTliNWFkMjliZjAxZmMyYjQ3MWQ1NGU1OGU0YzVmYWRlZTYyMmFiZDY2M2JlYmFkM2FkNjM3MjAwMDMwZDQwMDAwMDAwMDIwMDAwMDAwOTAwMDAwMDAyMjhhNTk0MjA5NzE5NTNhYTYxYjRiNGM5MGI5MzRlZjc2ZTZlOWM4YWQyNTZlOTQxN2U5YTZiNTAxN2Q4MzY4MTNiMmI1Y2FkMmE4OTBjNjZjODI5NWYxMDRkNzQxOTJjNDk2NGNmMjg5ZTJhNDVhZGI1N2E3YjA1YjVlOTUyOWUwMDRlYzJkYWU1YzQ4YmE2ZmE0ZDFlMGIxYzZiOWQ5YmJlNzljNDgxZmYxNjg0OGMxZmEzZmEzYTZlZDQ3NDMxYTEyYWY0YjJkOTc3OWJiMTkyYmIzZjI1NDQwODczMTc5OGI1MGM4ZjAzZjI1YjdlN2Q3MzEzNzM4ODkyZTcxZDY2MDEwMDAwMDAwOTAwMDAwMDAyMjhhNTk0MjA5NzE5NTNhYTYxYjRiNGM5MGI5MzRlZjc2ZTZlOWM4YWQyNTZlOTQxN2U5YTZiNTAxN2Q4MzY4MTNiMmI1Y2FkMmE4OTBjNjZjODI5NWYxMDRkNzQxOTJjNDk2NGNmMjg5ZTJhNDVhZGI1N2E3YjA1YjVlOTUyOWUwMDRlYzJkYWU1YzQ4YmE2ZmE0ZDFlMGIxYzZiOWQ5YmJlNzljNDgxZmYxNjg0OGMxZmEzZmEzYTZlZDQ3NDMxYTEyYWY0YjJkOTc3OWJiMTkyYmIzZjI1NDQwODczMTc5OGI1MGM4ZjAzZjI1YjdlN2Q3MzEzNzM4ODkyZTcxZDY2MDE1MWFhMjkxZic7XG4gICAgICAvLyBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKHR4KTtcbiAgICAgIC8vIGNvbnN0IGRlY29kZSA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgLy8gY29uc29sZS5sb2coZGVjb2RlLnRvSnNvbigpKTtcblxuICAgICAgLy8gY29uc3QgcmVzID0gYXdhaXQgcHZtYXBpLmlzc3VlVHgoeyB0eDogdHhTaWduZWQgfSk7XG4gICAgICAvLyBjb25zb2xlLmxvZyhyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGFuZCBzaWduIGFuIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjb3ZlcnlNb2RlID0gZmFsc2U7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZ2V0UGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5sb2NrdGltZSlcbiAgICAgICAgLnJlY292ZXJNb2RlKHJlY292ZXJ5TW9kZSlcbiAgICAgICAgLmZyb21QdWJLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5iaXRnb0FkZHJlc3NlcylcbiAgICAgICAgLnN0YXJ0VGltZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnN0YXJ0VGltZSlcbiAgICAgICAgLmVuZFRpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5lbmRUaW1lKVxuICAgICAgICAuc3Rha2VBbW91bnQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5zdGFrZUFtb3VudClcbiAgICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuZGVsZWdhdGlvbkZlZVJhdGUpXG4gICAgICAgIC5ub2RlSUQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ub2RlSWQpXG4gICAgICAgIC5ibHNQdWJsaWNLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ibHNQdWJsaWNLZXkpXG4gICAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ibHNTaWduYXR1cmUpXG4gICAgICAgIC51dHhvcyh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnV0eG9zKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IpO1xuXG4gICAgICAvLyBUZXN0IHNpZ24gd2l0aCB1c2VyIGtleVxuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUudXNlclByaXZhdGVLZXkgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5iYWNrdXBQcml2YXRlS2V5IH0pO1xuICAgICAgY29uc3QgZnVsbFNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsU2lnbmVkVHgudG9Kc29uKCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGFuZCBzaWduIGEgdHJhbnNhY3Rpb24gaW4gcmVjb3ZlcnkgbW9kZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlY292ZXJ5TW9kZSA9IHRydWU7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZ2V0UGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5sb2NrdGltZSlcbiAgICAgICAgLnJlY292ZXJNb2RlKHJlY292ZXJ5TW9kZSlcbiAgICAgICAgLmZyb21QdWJLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5iaXRnb0FkZHJlc3NlcylcbiAgICAgICAgLnN0YXJ0VGltZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnN0YXJ0VGltZSlcbiAgICAgICAgLmVuZFRpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5lbmRUaW1lKVxuICAgICAgICAuc3Rha2VBbW91bnQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5zdGFrZUFtb3VudClcbiAgICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19TQU1QTEUuZGVsZWdhdGlvbkZlZVJhdGUpXG4gICAgICAgIC5ub2RlSUQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ub2RlSWQpXG4gICAgICAgIC5ibHNQdWJsaWNLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ibHNQdWJsaWNLZXkpXG4gICAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5ibHNTaWduYXR1cmUpXG4gICAgICAgIC51dHhvcyh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLnV0eG9zKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGxldCB0eEhleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICB0eEhleC5zaG91bGQuZXF1YWwodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS51bnNpZ25lZFJhd3R4UmVjb3ZlcnkpO1xuXG4gICAgICBjb25zdCBwcml2YXRlS2V5ID0gcmVjb3ZlcnlNb2RlXG4gICAgICAgID8gdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS5iYWNrdXBQcml2YXRlS2V5XG4gICAgICAgIDogdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1NBTVBMRS51c2VyUHJpdmF0ZUtleTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIH0sXG4gICAgICAgIHBydjogcHJpdmF0ZUtleSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGhhbGZTaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgdHhIZXggPSAoaGFsZlNpZ25lZFRyYW5zYWN0aW9uIGFzIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24pPy5oYWxmU2lnbmVkPy50eEhleDtcbiAgICAgIHR4SGV4LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfU0FNUExFLmhhbGZTaWduZWRSYXdUeFJlY292ZXJ5KTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhbmQgc2lnbiBhbiBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvciB0cmFuc2FjdGlvbiBhbmQgYnJvYWRjYXN0IGluIHJlY292ZXJ5IG1vZGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1bml4Tm93ID0gQmlnSW50KE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSB1bml4Tm93ICsgQmlnSW50KDYwKTtcbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBzdGFydFRpbWUgKyBCaWdJbnQoNjAgKiA2MCAqIDI0ICsgNjAwKTtcblxuICAgICAgY29uc3QgcmVjb3ZlcnlNb2RlID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUubG9ja3RpbWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZShyZWNvdmVyeU1vZGUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmJpdGdvQWRkcmVzc2VzKVxuICAgICAgICAuc3RhcnRUaW1lKHN0YXJ0VGltZS50b1N0cmluZygpKVxuICAgICAgICAuZW5kVGltZShlbmRUaW1lLnRvU3RyaW5nKCkpXG4gICAgICAgIC5zdGFrZUFtb3VudCh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5zdGFrZUFtb3VudClcbiAgICAgICAgLmRlbGVnYXRpb25GZWVSYXRlKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmRlbGVnYXRpb25GZWVSYXRlKVxuICAgICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLm5vZGVJZClcbiAgICAgICAgLmJsc1B1YmxpY0tleSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ibHNQdWJsaWNLZXkpXG4gICAgICAgIC5ibHNTaWduYXR1cmUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzU2lnbmF0dXJlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudXR4b3MpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcik7XG5cbiAgICAgIC8vIFRlc3Qgc2lnbiB3aXRoIHVzZXIga2V5XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmFja3VwUHJpdmF0ZUtleSB9KTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWRUeEhleCA9IGhhbGZTaWduZWQudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGZhY3RvcnkuZnJvbShoYWxmU2lnbmVkVHhIZXgpO1xuICAgICAgdHhCdWlsZGVyMi5zaWduKHsga2V5OiB0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS51c2VyUHJpdmF0ZUtleSB9KTtcbiAgICAgIGNvbnN0IGZ1bGxTaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxTaWduZWRUeC50b0pzb24oKSk7XG4gICAgfSk7XG4gIH0pO1xuICBpdCgnU2hvdWxkIGZhaWwgdG8gYnVpbGQgaWYgdXR4b3MgY2hhbmdlIG91dHB1dCAwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVuaXhOb3cgPSBCaWdJbnQoTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApKTtcbiAgICBjb25zdCBzdGFydFRpbWUgPSB1bml4Tm93ICsgQmlnSW50KDYwKTtcbiAgICBjb25zdCBlbmRUaW1lID0gc3RhcnRUaW1lICsgQmlnSW50KDYwICogNjAgKiAyNCArIDYwMCk7XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgLmdldFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyKClcbiAgICAgIC50aHJlc2hvbGQodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudGhyZXNob2xkKVxuICAgICAgLmxvY2t0aW1lKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLmxvY2t0aW1lKVxuICAgICAgLnJlY292ZXJNb2RlKGZhbHNlKVxuICAgICAgLmZyb21QdWJLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYml0Z29BZGRyZXNzZXMpXG4gICAgICAuc3RhcnRUaW1lKHN0YXJ0VGltZS50b1N0cmluZygpKVxuICAgICAgLmVuZFRpbWUoZW5kVGltZS50b1N0cmluZygpKVxuICAgICAgLnN0YWtlQW1vdW50KHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLnN0YWtlQW1vdW50Tm9PdXRwdXQpXG4gICAgICAuZGVsZWdhdGlvbkZlZVJhdGUodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuZGVsZWdhdGlvbkZlZVJhdGUpXG4gICAgICAubm9kZUlEKHRlc3REYXRhLkJVSUxEX0FORF9TSUdOX0FERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfU0FNUExFLm5vZGVJZClcbiAgICAgIC5ibHNQdWJsaWNLZXkodGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUuYmxzUHVibGljS2V5KVxuICAgICAgLmJsc1NpZ25hdHVyZSh0ZXN0RGF0YS5CVUlMRF9BTkRfU0lHTl9BRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1NBTVBMRS5ibHNTaWduYXR1cmUpXG4gICAgICAudXR4b3ModGVzdERhdGEuQlVJTERfQU5EX1NJR05fQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9TQU1QTEUudXR4b3MpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgdHhKc29uLmNoYW5nZU91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB0eEV4cGxhaW4uY2hhbmdlT3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIHR4RXhwbGFpbi5jaGFuZ2VBbW91bnQuc2hvdWxkLmVxdWFsKCcwJyk7XG4gIH0pO1xufSk7XG4iXX0=
|