@bitgo-beta/sdk-coin-near 1.3.3-alpha.430 → 1.3.3-alpha.431
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/near.d.ts +19 -2
- package/dist/src/near.d.ts.map +1 -1
- package/dist/src/near.js +15 -2
- package/dist/test/unit/near.js +82 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/dist/test/unit/near.js
CHANGED
|
@@ -162,6 +162,87 @@ describe('NEAR:', function () {
|
|
|
162
162
|
basecoin.isValidPrv(kp.prv).should.equal(true);
|
|
163
163
|
});
|
|
164
164
|
});
|
|
165
|
+
describe('Address verification', () => {
|
|
166
|
+
const addressVerificationData = {
|
|
167
|
+
commonKeychain: '43d3f6a94d7e3faf4dd390a7e26f554eaa98c8f0813e3f0ae959d61d8acd012e0504e552a5c311260f2fbaef3a817dfa5b85b984cd43b161bebad9ded25764cc',
|
|
168
|
+
rootAddress: '98908af363d3e99d87b1d6dce4f80a28bbfe64fee22dbb8a36dada25ba30d027',
|
|
169
|
+
receiveAddress: '6aa21569736f6ebaf925fef8ece219c2b703098cc358ce34a97f2c2a2e099659',
|
|
170
|
+
receiveAddressIndex: 2,
|
|
171
|
+
};
|
|
172
|
+
let keychains;
|
|
173
|
+
before(function () {
|
|
174
|
+
keychains = [
|
|
175
|
+
{ commonKeychain: addressVerificationData.commonKeychain },
|
|
176
|
+
{ commonKeychain: addressVerificationData.commonKeychain },
|
|
177
|
+
{ commonKeychain: addressVerificationData.commonKeychain },
|
|
178
|
+
];
|
|
179
|
+
});
|
|
180
|
+
it('should verify a valid TSS root address (index 0)', async function () {
|
|
181
|
+
const params = {
|
|
182
|
+
address: addressVerificationData.rootAddress,
|
|
183
|
+
rootAddress: addressVerificationData.rootAddress,
|
|
184
|
+
keychains: keychains,
|
|
185
|
+
index: 0,
|
|
186
|
+
};
|
|
187
|
+
const result = await basecoin.isWalletAddress(params);
|
|
188
|
+
result.should.equal(true);
|
|
189
|
+
});
|
|
190
|
+
it('should verify a valid TSS receive address (index > 0)', async function () {
|
|
191
|
+
const params = {
|
|
192
|
+
address: addressVerificationData.receiveAddress,
|
|
193
|
+
rootAddress: addressVerificationData.rootAddress,
|
|
194
|
+
keychains: keychains,
|
|
195
|
+
index: addressVerificationData.receiveAddressIndex,
|
|
196
|
+
};
|
|
197
|
+
const result = await basecoin.isWalletAddress(params);
|
|
198
|
+
result.should.equal(true);
|
|
199
|
+
});
|
|
200
|
+
it('should throw error for invalid address format', async function () {
|
|
201
|
+
const invalidAddress = 'invalid-address';
|
|
202
|
+
const params = {
|
|
203
|
+
address: invalidAddress,
|
|
204
|
+
keychains: keychains,
|
|
205
|
+
index: 0,
|
|
206
|
+
};
|
|
207
|
+
await basecoin.isWalletAddress(params).should.be.rejectedWith('address validation failure');
|
|
208
|
+
});
|
|
209
|
+
it('should throw error when verifying root address with wrong index', async function () {
|
|
210
|
+
const params = {
|
|
211
|
+
address: addressVerificationData.rootAddress,
|
|
212
|
+
rootAddress: addressVerificationData.rootAddress,
|
|
213
|
+
keychains: keychains,
|
|
214
|
+
index: 1,
|
|
215
|
+
};
|
|
216
|
+
await basecoin.isWalletAddress(params).should.be.rejectedWith('address validation failure');
|
|
217
|
+
});
|
|
218
|
+
it('should throw error when keychains is missing', async function () {
|
|
219
|
+
const params = {
|
|
220
|
+
address: addressVerificationData.rootAddress,
|
|
221
|
+
keychains: [],
|
|
222
|
+
index: 0,
|
|
223
|
+
};
|
|
224
|
+
await basecoin.isWalletAddress(params).should.be.rejectedWith('missing required param keychains');
|
|
225
|
+
});
|
|
226
|
+
it('should throw error for address that does not match derivation', async function () {
|
|
227
|
+
const wrongAddress = '0000000000000000000000000000000000000000000000000000000000000000';
|
|
228
|
+
const params = {
|
|
229
|
+
address: wrongAddress,
|
|
230
|
+
keychains: keychains,
|
|
231
|
+
index: 0,
|
|
232
|
+
};
|
|
233
|
+
await basecoin.isWalletAddress(params).should.be.rejectedWith('address validation failure');
|
|
234
|
+
});
|
|
235
|
+
it('should handle string index', async function () {
|
|
236
|
+
const params = {
|
|
237
|
+
address: addressVerificationData.rootAddress,
|
|
238
|
+
rootAddress: addressVerificationData.rootAddress,
|
|
239
|
+
keychains: keychains,
|
|
240
|
+
index: '0',
|
|
241
|
+
};
|
|
242
|
+
const result = await basecoin.isWalletAddress(params);
|
|
243
|
+
result.should.equal(true);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
165
246
|
describe('Verify transaction: ', () => {
|
|
166
247
|
const amount = '1000000';
|
|
167
248
|
const gas = '125000000000000';
|
|
@@ -1340,4 +1421,4 @@ describe('NEAR:', function () {
|
|
|
1340
1421
|
});
|
|
1341
1422
|
});
|
|
1342
1423
|
});
|
|
1343
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9uZWFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXFDO0FBRXJDLG9EQUE0QjtBQUM1QixvREFBdUI7QUFDdkIsa0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixvREFBNEI7QUFFNUIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCxpREFBNEM7QUFDNUMsbURBQTJFO0FBRTNFLG1DQUE4RDtBQUM5RCxnRUFBNEM7QUFDNUMsMkRBQXdEO0FBRXhELDJDQVUwQjtBQUMxQiw0REFBOEM7QUFFOUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtJQUNoQixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLFdBQVcsQ0FBQztJQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFBLHFDQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTNDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEtBQUssRUFBRSxZQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7UUFDOUIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsa0VBQWtFO2dCQUMzRSxNQUFNLEVBQUUsMkJBQTJCO2FBQ3BDO1NBQ0Y7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFD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QUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgY29tbW9uLCBUcmFuc2FjdGlvblByZWJ1aWxkLCBXYWxsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEtleVBhaXIsIE5lYXIsIFROZWFyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgbmVhclV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2dldEJ1aWxkZXJGYWN0b3J5JztcblxuaW1wb3J0IHtcbiAgcmF3VHgsXG4gIGFjY291bnRzLFxuICB2YWxpZGF0b3JDb250cmFjdEFkZHJlc3MsXG4gIGJsb2NrSGFzaCxcbiAgTmVhclJlc3BvbnNlcyxcbiAga2V5cyxcbiAgYWNjb3VudEluZm8sXG4gIG5vbmNlLFxuICBvdmNSZXNwb25zZSxcbn0gZnJvbSAnLi4vZml4dHVyZXMvbmVhcic7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvbmVhcic7XG5cbmRlc2NyaWJlKCdORUFSOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gIGxldCBuZXdUeFBhcmFtcztcbiAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KCd0bmVhcicpO1xuXG4gIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgIHR4SW5mbzoge30sXG4gIH07XG5cbiAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0bmVhcicsIE5lYXIuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignbmVhcicsIFROZWFyLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3RuZWFyJyk7XG4gICAgbmV3VHhQcmVidWlsZCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5lYXIgPSBiaXRnby5jb2luKCduZWFyJyk7XG4gICAgY29uc3QgdG5lYXIgPSBiaXRnby5jb2luKCd0bmVhcicpO1xuXG4gICAgbmVhci5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnbmVhcicpO1xuICAgIG5lYXIuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCduZWFyJyk7XG4gICAgbmVhci5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnTmVhcicpO1xuICAgIG5lYXIuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTI0KTtcblxuICAgIHRuZWFyLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0bmVhcicpO1xuICAgIHRuZWFyLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnbmVhcicpO1xuICAgIHRuZWFyLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IE5lYXInKTtcbiAgICB0bmVhci5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMjQpO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBNZXNzYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYmUgcGVyZm9ybWVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKCk7XG4gICAgICBjb25zdCBtZXNzYWdlVG9TaWduID0gQnVmZmVyLmZyb20ocmFuZG9tQnl0ZXMoMzIpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlQYWlyLmdldEtleXMoKSwgbWVzc2FnZVRvU2lnbik7XG4gICAgICBrZXlQYWlyLnZlcmlmeVNpZ25hdHVyZShtZXNzYWdlVG9TaWduLCBVaW50OEFycmF5LmZyb20oc2lnbmF0dXJlKSkuc2hvdWxkLmVxdWFscyh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIG1pc3NpbmcgcHJpdmF0ZSBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6ICc3Nzg4MzI3YzY5NWRjYTRiM2U2NDlhMGRiNDViYzNlNzAzYTJjNjc0MjhmY2UzNjBlNjE4MDBjYzQyNDhmNGY3JyxcbiAgICAgIH0pLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBCdWZmZXIuZnJvbShyYW5kb21CeXRlcygzMikpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luLnNpZ25NZXNzYWdlKGtleVBhaXIsIG1lc3NhZ2VUb1NpZ24pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQgPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgICBwdWJzOiBbYWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5XSxcbiAgICAgICAgcHJ2OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXksXG4gICAgICB9KTtcbiAgICAgIHNpZ25lZC50eEhleC5zaG91bGQuZXF1YWwocmF3VHgudHJhbnNmZXIuc2lnbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBzaWduIHRyYW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBrZXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1YnM6IFthY2NvdW50cy5hY2NvdW50Mi5wdWJsaWNLZXldLFxuICAgICAgICAgIHBydjogYWNjb3VudHMuYWNjb3VudDEuc2VjcmV0S2V5LFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGUubWVzc2FnZSwgJ1ByaXZhdGUga2V5IGNhbm5vdCBzaWduIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggbWlzc2luZyBwYXJhbXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgICAgIGtleTogYWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJ2OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXksXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzaG91bGQubm90RXF1YWwoZSwgbnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZW5lcmF0ZSB3YWxsZXQga2V5IHBhaXI6ICcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGtleSBwYWlyJywgKCkgPT4ge1xuICAgICAgY29uc3Qga3AgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa3AucHViKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGtwLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIHNlZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWVkID0gQnVmZmVyLmZyb20oJzlkNjFiMTlkZWZmZDVhNjBiYTg0NGFmNDkyZWMyY2M0NDQ0OWM1Njk3YjMyNjkxOTcwM2JhYzAzMWNhZTdmNjAnLCAnaGV4Jyk7XG4gICAgICBjb25zdCBrcCA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa3AucHViKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGtwLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IHRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAnO1xuICAgIGNvbnN0IGdhcyA9ICcxMjUwMDAwMDAwMDAwMDAnO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgZW5jb2RpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSBzaWduZWQgdHJhbnNhY3Rpb24gaW4gYmFzZTY0IGVuY29kaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCBzZWxmIHN0b3JhZ2UgZGVwb3NpdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS5yYXdUeC5zZWxmU3RvcmFnZURlcG9zaXQudW5zaWduZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6ICdlbmFibGV0b2tlbicsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0bmVhcjp0bmVwMjRkcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHNpZ25lZCBzZWxmIHN0b3JhZ2UgZGVwb3NpdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS5yYXdUeC5zZWxmU3RvcmFnZURlcG9zaXQuc2lnbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICB0eXBlOiAnZW5hYmxldG9rZW4nLFxuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogJzAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndG5lYXI6dG5lcDI0ZHAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCBzdG9yYWdlIGRlcG9zaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdGVzdERhdGEucmF3VHguc3RvcmFnZURlcG9zaXQudW5zaWduZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6ICdlbmFibGV0b2tlbicsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0bmVhcjp0bmVwMjRkcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHNpZ25lZCBzdG9yYWdlIGRlcG9zaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdGVzdERhdGEucmF3VHguc3RvcmFnZURlcG9zaXQuc2lnbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICB0eXBlOiAnZW5hYmxldG9rZW4nLFxuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogJzAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndG5lYXI6dG5lcDI0ZHAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB0cmFuc2FjdGlvbnMgd2hlbiBoYXZlIGRpZmZlcmVudCByZWNpcGllbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc5ZjdiMDY3NWRiNTlkMTliNGJkOWM4YzcyZWFhYmJhNzVhOTg2M2QwMmIzMDExNWI4YjNjM2NhNWMyMGYwMjU0JyxcbiAgICAgICAgICAgIGFtb3VudDogJzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gdG90YWwgYW1vdW50IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHggPSB7XG4gICAgICAgIGlkOiAnNWpURVB1RGNNQ2VFZ3AxaXlFYk5CS3NuaFl6NEY0YzFFUER0Um14bTN3Q3cnLFxuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXSxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnOTAwMDAnLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAnZXhwbGFpblRyYW5zYWN0aW9uJyk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBzdHViLnJldHVybnMoZXhwbGFpbmVkVHgpO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgdmVyaWZpY2F0aW9uIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCB0b3RhbCBhbW91bnQgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0b3RhbCBhbW91bnQgZmllbGQnKTtcbiAgICAgIHN0dWIucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiBpbiBoZXggZW5jb2RpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgc2VyaWFsaXplZCBoZXggc3RyaW5nIHRvIGJhc2U2NCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIHR4UHJlYnVpbGQudHhIZXggPSBCdWZmZXIuZnJvbSh0eFByZWJ1aWxkLnR4SGV4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgd2hlbiBpbnB1dCBgcmVjaXBpZW50c2AgaXMgYWJzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB3aGVuIHR4SGV4IGlzIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHt9O1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gcmVjaXBpZW50cyBoYXMgZXh0cmEgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5kYXRhID0gJ2RhdGEnO1xuXG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc2MWIxOGM2ZGMwMmRkY2FiZGVhYzU2Y2I0ZjIxYTk3MWNjNDFjYzk3NjQwZjZmODViMDczNDgwMDA4YzUzYTBkJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgc3Bvb2ZlZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHVwIHdhbGxldCBkYXRhXG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZTA0MDQxYTkwJyxcbiAgICAgICAgY29pbjogJ3RuZWFyJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogJzNhMWI3NzY1M2VhMTcwNWFkMjk3ZGI3YWJlMjU5OTUzYjRhZDVkMmVjYzViNTBiZWU5YTQ4NmY3ODVkZDkwZGInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzAzZmRmNTFhLTI4ZTEtNDI2OC1iNWJlLWE0YWZjMDMwZmY2NCcsXG4gICAgICAgIHdhbGxldElkOiAnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzQwMDAwMDAwNjU2MjM3NjQzMzYyMzMzMzMxMzE2NjYxNjI2MTY1MzMzODM5MzA2MjM2MzczMTM4MzUzNjM0MzgzODM4MzA2NjY2MzgzMTM4Mzc2NjM1MzQ2NTYyMzU2NTYyNjY2NTM0MzMzNjY0NjEzMTMxMzMzODMzMzEzMDM5NjYzODYyMzUwMGViN2QzYjMzMTFmYWJhZTM4OTBiNjcxODU2NDg4ODBmZjgxODdmNTRlYjVlYmZlNDM2ZGExMTM4MzEwOWY4YjVjOGE2ZDhhNmY4NjEwMDAwNDAwMDAwMDA2MTM5MzQ2NTMzMzkzNzMwNjE2NTYzMzQzNjYyNjI2MjMxMzUzNjM5MzMzMTYzNjEzMDM5MzA2NTY0MzczNTY2NjYzMzYxNjE2NDY1MzQzOTM3Mzk2NjY2NjU2NjM2NjQzNzM0NjMzNzMyNjQzNTYxMzIzNDM3NjM2NTM5MzQ2NmFkMTlmYTdmYWE0NTY0MzIwMGY5OWE5OTI3MTVhMDJmOTgwNmJjYmYwYzU3MzdjY2RmNWQ2MTE3MmQ2MWE0ZjkwMTAwMDAwMDAzMDAzOGJmOTRkZDE1M2Q5ZDdmYTcwMTAwMDAwMDAwMDAnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiA4NTMzMjExMTk0Nzg4NzUwMDAwMCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICc4NTMzMjExMTk0Nzg4NzUwMDM3NycsXG4gICAgICAgIH0sXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIG1pbmVyRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0bmVhcicsXG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzE5OTk5MTUwODg5ODc1MDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnYTk0ZTM5NzBhZWM0NmJiYjE1NjkzMWNhMDkwZWQ3NWZmM2FhZGU0OTc5ZmZlZjZkNzRjNzJkNWEyNDdjZTk0ZicsXG4gICAgICAgICAgICAgIHZhbHVlOiAxLjk5OTkxNTA4ODk4NzVlMjQsXG4gICAgICAgICAgICAgIHdhbGxldDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZScsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFsnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlJ10sXG4gICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MTExNzg1ZjU5NTQ4ZDAwMDdhNGQxM2MnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogWyc2MTExNzg1ZjU5NTQ4ZDAwMDdhNGQxM2MnXSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0bmVhcicsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlczogWydob3QnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IDEuOTk5OTE1MDg4OTg3NWUyNCxcbiAgICAgICAgICAgICAgYWRkcmVzczogJ2ViN2QzYjMzMTFmYWJhZTM4OTBiNjcxODU2NDg4ODBmZjgxODdmNTRlYjVlYmZlNDM2ZGExMTM4MzEwOWY4YjUnLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5OTk5MTUwODg5ODc1MDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YWU3N2VjNjIzNDZhNjlkMGFlZTVhMmRkYTY5YzhjJyxcbiAgICAgICAgY29pbjogJ3RuZWFyJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbJ21vY2snXS51cmk7XG4gICAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YyL3RuZWFyL3dhbGxldC82MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MC9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGQnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uY29uc29saWRhdGlvblR4LFxuICAgICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAgICc0MDAwMDAwMDYxMzkzNDY1MzMzOTM3MzA2MTY1NjMzNDM2NjI2MjYyMzEzNTM2MzkzMzMxNjM2MTMwMzkzMDY1NjQzNzM1NjY2NjMzNjE2MTY0NjUzNDM5MzczOTY2NjY2NTY2MzY2NDM3MzQ2MzM3MzI2NDM1NjEzMjM0Mzc2MzY1MzkzNDY2MDBhOTRlMzk3MGFlYzQ2YmJiMTU2OTMxY2EwOTBlZDc1ZmYzYWFkZTQ5NzlmZmVmNmQ3NGM3MmQ1YTI0N2NlOTRmMWYzZGVjMTU0YTU3MDAwMDQwMDAwMDAwNjYzMjYxMzczODY2MzgzMDMzMzY2NjM4NjEzNDMyNjYzODM3MzAzMTM5NjIzMTY0MzE2NDYzMzYzMzYxMzE2MjMzMzc2MjMxMzkzMzMzNjU2NTM2MzI2NDY0NjQzNTMzNjUzNzM0Mzg2MzM1MzAzMjMyNjYzMTY0MzUzNzM5NjFmYjYxMzBlNmNjMzBjOTI2ZmNjZGU4MDQzY2U0ZTQzYTgxMGVhNjNiNGQzZjkzNjIzYTU0MTc2ZmY4ZGIxY2QwMDEwMDAwMDAwMzAwMDAwMDRhNDgwMTE0MTY5NTQ1MDgwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLmdldCgnL2FwaS92Mi90bmVhci9rZXkvNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiAnZmFrZVBydicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5nZXQoJy9hcGkvdjIvdG5lYXIvd2FsbGV0LzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZTA0MDQxYTkwL2FkZHJlc3Nlcz9zb3J0PS0xJmxpbWl0PTEnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ2E5NGUzOTcwYWVjNDZiYmIxNTY5MzFjYTA5MGVkNzVmZjNhYWRlNDk3OWZmZWY2ZDc0YzcyZDVhMjQ3Y2U5NGYnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB0byB0ZXN0XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHdhbGxldE9iai5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ3R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCBhZGRyZXNzJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHZhbGlkIGEgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFNldCB1cCB3YWxsZXQgZGF0YVxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MCcsXG4gICAgICAgIGNvaW46ICd0bmVhcicsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICdhOTRlMzk3MGFlYzQ2YmJiMTU2OTMxY2EwOTBlZDc1ZmYzYWFkZTQ5NzlmZmVmNmQ3NGM3MmQ1YTI0N2NlOTRmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICcwM2ZkZjUxYS0yOGUxLTQyNjgtYjViZS1hNGFmYzAzMGZmNjQnLFxuICAgICAgICB3YWxsZXRJZDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZScsXG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICc0MDAwMDAwMDY1NjIzNzY0MzM2MjMzMzMzMTMxNjY2MTYyNjE2NTMzMzgzOTMwNjIzNjM3MzEzODM1MzYzNDM4MzgzODMwNjY2NjM4MzEzODM3NjYzNTM0NjU2MjM1NjU2MjY2NjUzNDMzMzY2NDYxMzEzMTMzMzgzMzMxMzAzOTY2Mzg2MjM1MDBlYjdkM2IzMzExZmFiYWUzODkwYjY3MTg1NjQ4ODgwZmY4MTg3ZjU0ZWI1ZWJmZTQzNmRhMTEzODMxMDlmOGI1YzhhNmQ4YTZmODYxMDAwMDQwMDAwMDAwNjEzOTM0NjUzMzM5MzczMDYxNjU2MzM0MzY2MjYyNjIzMTM1MzYzOTMzMzE2MzYxMzAzOTMwNjU2NDM3MzU2NjY2MzM2MTYxNjQ2NTM0MzkzNzM5NjY2NjY1NjYzNjY0MzczNDYzMzczMjY0MzU2MTMyMzQzNzYzNjUzOTM0NjZhZDE5ZmE3ZmFhNDU2NDMyMDBmOTlhOTkyNzE1YTAyZjk4MDZiY2JmMGM1NzM3Y2NkZjVkNjExNzJkNjFhNGY5MDEwMDAwMDAwMzAwMzhiZjk0ZGQxNTNkOWQ3ZmE3MDEwMDAwMDAwMDAwJyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogODUzMzIxMTE5NDc4ODc1MDAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnODUzMzIxMTE5NDc4ODc1MDAzNzcnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBtaW5lckZlZTogJzAnLFxuICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk5OTkxNTA4ODk4NzUwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndG5lYXInLFxuICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ2E5NGUzOTcwYWVjNDZiYmIxNTY5MzFjYTA5MGVkNzVmZjNhYWRlNDk3OWZmZWY2ZDc0YzcyZDVhMjQ3Y2U5NGYnLFxuICAgICAgICAgICAgICB2YWx1ZTogMS45OTk5MTUwODg5ODc1ZTI0LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZSddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjExMTc4NWY1OTU0OGQwMDA3YTRkMTNjJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjExMTc4NWY1OTU0OGQwMDA3YTRkMTNjJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk5OTkxNTA4ODk4NzUwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndG5lYXInLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZXM6IFsnaG90J10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiAxLjk5OTkxNTA4ODk4NzVlMjQsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdlYjdkM2IzMzExZmFiYWUzODkwYjY3MTg1NjQ4ODgwZmY4MTg3ZjU0ZWI1ZWJmZTQzNmRhMTEzODMxMDlmOGI1JyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGFlNzdlYzYyMzQ2YTY5ZDBhZWU1YTJkZGE2OWM4YycsXG4gICAgICAgIGNvaW46ICd0bmVhcicsXG4gICAgICB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgYmxvY2toYXNoOiAnJyxcbiAgICAgICAgICAgIGZlZVBheWVyOiAnJyxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IGNvbnNvbGlkYXRpb25UeCBhcyB1bmtub3duIGFzIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gICAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwMCc7XG4gICAgY29uc3QgZ2FzID0gJzEyNTAwMDAwMDAwMDAwMCc7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbJ291dHB1dEFtb3VudCcsICdjaGFuZ2VBbW91bnQnLCAnb3V0cHV0cycsICdjaGFuZ2VPdXRwdXRzJywgJ2ZlZScsICd0eXBlJ10sXG4gICAgICAgIGlkOiAnNWpURVB1RGNNQ2VFZ3AxaXlFYk5CS3NuaFl6NEY0YzFFUER0Um14bTN3Q3cnLFxuICAgICAgICB0eXBlOiAwLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzlmN2IwNjc1ZGI1OWQxOWI0YmQ5YzhjNzJlYWFiYmE3NWE5ODYzZDAyYjMwMTE1YjhiM2MzY2E1YzIwZjAyNTQnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJzVqVEVQdURjTUNlRWdwMWl5RWJOQktzbmhZejRGNGMxRVBEdFJteG0zd0N3JyxcbiAgICAgICAgdHlwZTogMCxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc5ZjdiMDY3NWRiNTlkMTliNGJkOWM4YzcyZWFhYmJhNzVhOTg2M2QwMmIzMDExNWI4YjNjM2NhNWMyMGYwMjU0JyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhY3RpdmF0ZSBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbJ291dHB1dEFtb3VudCcsICdjaGFuZ2VBbW91bnQnLCAnb3V0cHV0cycsICdjaGFuZ2VPdXRwdXRzJywgJ2ZlZScsICd0eXBlJ10sXG4gICAgICAgIGlkOiAnR3BpTExhR3MyRmsyYmQ3U1F2aGtKYVpqajc0VW5QUGRGN2NVYTlwdzE1amUnLFxuICAgICAgICB0eXBlOiAxMyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBkZWFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJ0NEeFBSUDNEZ0hOOGdZbVJEYWdrNVRSdVg3ZnNDUllIY3Vxb05VTHlRUFVXJyxcbiAgICAgICAgdHlwZTogMTcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJzUyWlg4TVV3bVljNldRNjdyaVVCcG1udGtjU3h4VDVhS2tKWXQ1Q3RDWnViJyxcbiAgICAgICAgdHlwZTogMTUsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNjFiMThjNmRjMDJkZGNhYmRlYWM1NmNiNGYyMWE5NzFjYzQxY2M5NzY0MGY2Zjg1YjA3MzQ4MDAwOGM1M2EwZCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyb3IubWVzc2FnZSwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBleHBsYWluIHRyYW5zYWN0aW9uIHdpdGggd3JvbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgICB0eEhleDogJ2ludmFsaWRUeEhleCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyb3IubWVzc2FnZSwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1BhcnNlIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3QgVEVOX01JTExJT05fTkVBUiA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gICAgY29uc3QgT05FX01JTExJT05fTkVBUiA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuICAgIGNvbnN0IGFtb3VudCA9IFRFTl9NSUxMSU9OX05FQVI7XG4gICAgY29uc3QgZ2FzID0gJzEyNTAwMDAwMDAwMDAwMCc7XG5cbiAgICBjb25zdCByZXNwb25zZTEgPSB7XG4gICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICBhbW91bnQ6IE9ORV9NSUxMSU9OX05FQVIsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlMiA9IHtcbiAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgIGFtb3VudDogVEVOX01JTExJT05fTkVBUixcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UzID0ge1xuICAgICAgYWRkcmVzczogJzYxYjE4YzZkYzAyZGRjYWJkZWFjNTZjYjRmMjFhOTcxY2M0MWNjOTc2NDBmNmY4NWIwNzM0ODAwMDhjNTNhMGQnLFxuICAgICAgYW1vdW50OiBURU5fTUlMTElPTl9ORUFSLFxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtyZXNwb25zZTFdLFxuICAgICAgICBvdXRwdXRzOiBbcmVzcG9uc2UxXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbcmVzcG9uc2UxXSxcbiAgICAgICAgb3V0cHV0czogW3Jlc3BvbnNlMV0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aGVuIGV4cGxhaW5UcmFuc2FjdGlvbiByZXNwb25zZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzdHViID0gc2lub24uc3R1YihOZWFyLnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgc3R1Yi5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW3Jlc3BvbnNlMl0sXG4gICAgICAgIG91dHB1dHM6IFtyZXNwb25zZTJdLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2Ugd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbcmVzcG9uc2UzXSxcbiAgICAgICAgb3V0cHV0czogW3Jlc3BvbnNlM10sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3RuZWFyJyk7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgICAgcHVibGljX2tleTogYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY2Vzc0tleVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudEluZm8uYWNjb3VudElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRBY2NvdW50UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2sud2l0aEFyZ3MoKS5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFByb3RvY29sQ29uZmlnUmVzcCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdnYXNfcHJpY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbYWNjb3VudEluZm8uYmxvY2tIYXNoXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRHYXNQcmljZVJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ0doZ2hqa2chNDU1NTQ0bGxsbCcsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcblxuICAgICAgY29uc3QgTm9uQml0R29UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIE5vbkJpdEdvVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHJlcy5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zaWduZXJJZCwgYWNjb3VudEluZm8uYWNjb3VudElkKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ucHVibGljS2V5LCAnZWQyNTUxOTonICsgYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldERhdGFGcm9tTm9kZSwgNCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIHVuc2lnbmVkIHN3ZWVwIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzdWx0XG4gICAgICBzaG91bGQuZXhpc3QocmVzKTtcbiAgICAgIHJlcy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhSZXF1ZXN0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHJhbnNhY3Rpb25zJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndW5zaWduZWRUeCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciB0aGUgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpLndoaWNoLmlzLmEuU3RyaW5nKCk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzY2FuSW5kZXgnLCAwKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW4nLCAndG5lYXInKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdzaWduYWJsZUhleCcsXG4gICAgICAgICdjMjdkNjg0YjZmMDljNGI2MDNkOWJmOGEwOGJhZWRmMTJiOGJiOTUxZjMxNGFjZDc0N2IxNmJiNzVjZmJmNjg3J1xuICAgICAgKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlcml2YXRpb25QYXRoJywgJ20vMCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciBwYXJzZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHBhcnNlZFR4ID0gdW5zaWduZWRUeC5wYXJzZWRUeDtcbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdpbnB1dHMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcGFyc2VkVHguaW5wdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICAgICdmMjU2MTk2ZGFlNjE3YWEzNDgxNDljMWU2MWU5OTcyNzI0OTI2NjhkNTE3NTA2ZDdhNmUyMzkyZTA2ZWE1MzJjJ1xuICAgICAgKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWVTdHJpbmcnLCAnMS45Nzg4NTUwNjA5NDg2NjI2OTY1MDAwMDAwMWUrMjYnKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWUnLCAxLjk3ODg1NTA2MDk0ODY2MjdlMjYpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3V0cHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdhZGRyZXNzJywgYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbik7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICcxLjk3ODg1NTA2MDk0ODY2MjY5NjUwMDAwMDAxZSsyNicpO1xuICAgICAgcGFyc2VkVHgub3V0cHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pbk5hbWUnLCAndG5lYXInKTtcblxuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NwZW5kQW1vdW50JywgJzEuOTc4ODU1MDYwOTQ4NjYyNjk2NTAwMDAwMDFlKzI2Jyk7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHlwZScsICcnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgZmVlIGluZm9cbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICAgIHVuc2lnbmVkVHguZmVlSW5mby5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJywgNjg2Mjg2Mzc5Njg3NTAwMDAwMDApO1xuICAgICAgdW5zaWduZWRUeC5mZWVJbmZvLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnLCAnNjg2Mjg2Mzc5Njg3NTAwMDAwMDAnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgY29pbi1zcGVjaWZpYyBkYXRhXG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIHVuc2lnbmVkVHguY29pblNwZWNpZmljLnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnY29tbW9uS2V5Y2hhaW4nLFxuICAgICAgICAnODY5OWQyZTA1ZDYwYTNmN2FiNzMzYTc0Y2NmNzA3ZjM0MDc0OTRiNjBmNDI1MzYxNjE4N2Y1MjYyZTIwNzM3NTE5YTE3NjNkZTBiY2M0ZDE2NWE3ZmEwZTRkZGU2N2ExNDI2ZWM0Y2M5ZmNkMDgyMGQ3NDllNjU4OWRjZmEwOGUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIGZvciBORUFSJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gb3ZjUmVzcG9uc2U7IC8vIE5FQVItc3BlY2lmaWMgcmVzcG9uc2UgZml4dHVyZVxuICAgICAgY29uc3QgcmVjb3ZlcnlUeG4gPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihwYXJhbXMpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgICAgcmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdRQUFBQUdJek9ETmpZV00yWmpOalpEWTBPVFZpWkRaaFlqZzNOek13TUdFNE56bGlOMlJpWXpSaE1UWmhZakJsWmpFNU56bGtaVFptTnpOa1lqQXlORGxtWVdFQXM0UEt4dlBOWkpXOWFyaDNNQXFIbTMyOFNoYXJEdkdYbmViM1BiQWtuNm9CdVpVajZhMEFBRUFBQUFCbFlXUmlNekl3T0daaU9XVTVNV1kyTUdRM05tVXpZelV4TnpFelpEQTFZMkkwWVRVNU5ERmxOV1l6TlRWbE1XWm1PVGhsTVRRd1lUY3hNak5sT0RSbDJoYkp0QzRyd0x5V0FiTXpUZ1RjUm1yNXhwV2xyWE9YYnp4TVdjUDd3d2NCQUFBQUE5QTFvVmZ2cHozbzRoY0FBQUFBQUFBQXZBSVdPajJjMVFocWJXY0NsWjhkVzdLUWNmRzlnWUZraW1iUkR5STh0OEw0VFVpVXlSWE1ZdjVVOGphRXNORld0ZUJjVUdvbEZjTFFTYmJENU1DcER3PT0nXG4gICAgICApO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgc2NhbiBpbmRleFxuICAgICAgcmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICByZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIGZvciB3YWxsZXQgd2l0aCBtdWx0aXBsZSBhZGRyZXNzZXM6JywgKCkgPT4ge1xuICAgIGNvbnN0IGRlc3RBZGRyID0gYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbjtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3RuZWFyJyk7XG4gICAgY29uc3QgYWRkcmVzczFJbmZvID0ge1xuICAgICAgYWNjb3VudElkOiAnZjY4NDJiZjRhOGU5ODA3MDRmYmQ5ZmI3OTliZmJlMGExMTZmZDVkOGQwNmY2Nzc0ZTc5MmM2OGM5MDdkOWIyMCcsXG4gICAgICBiczU4RW5jb2RlZFB1YmxpY0tleTogJ0hiSkJxeWFnQnF0U05VUjc0ZkxNUVNqUThIeVFWczY2ZnlNeVNQaFpMWHo3JyxcbiAgICAgIGJsb2NrSGFzaDogJzg0NE45YVdlZmQ0VHZKd2RpQmdYRFZQejRXOXo0MzZrb2hUaVhucDV5NGZxJyxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFkZHJlc3MxSW5mby5hY2NvdW50SWQsXG4gICAgICAgICAgICAgIHB1YmxpY19rZXk6IGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKE5lYXJSZXNwb25zZXMuZ2V0QWNjZXNzS2V5UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIGlkOiAnZG9udGNhcmUnLFxuICAgICAgICAgICAgbWV0aG9kOiAncXVlcnknLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogJ3ZpZXdfYWNjb3VudCcsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby5hY2NvdW50SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFplcm9CYWxhbmNlQWNjb3VudFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWRkcmVzczFJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKE5lYXJSZXNwb25zZXMuZ2V0QWNjb3VudFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrLndpdGhBcmdzKCkucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRQcm90b2NvbENvbmZpZ1Jlc3ApO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIGlkOiAnZG9udGNhcmUnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2FzX3ByaWNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW2FkZHJlc3MxSW5mby5ibG9ja0hhc2hdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEdhc1ByaWNlUmVzcG9uc2UpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyBhdCBhZGRyZXNzIDEgYnV0IHNlYXJjaCBmcm9tIGFkZHJlc3MgMCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiBkZXN0QWRkcixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ0doZ2hqa2chNDU1NTQ0bGxsbCcsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgcmVzLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA1KTtcblxuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmVzLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zaWduZXJJZCwgYWRkcmVzczFJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGRlc3RBZGRyLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnR2hnaGprZyE0NTU1NDRsbGxsJyxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgcmVzLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcblxuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmVzLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zaWduZXJJZCwgYWRkcmVzczFJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uIEZhaWx1cmVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGRlc3RBZGRyID0gYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbjtcbiAgICBjb25zdCBudW1JdGVyYXRpb24gPSAxMDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoTmVhci5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIE5lYXIpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHNpbm9uLm1hdGNoLmhhc05lc3RlZCgncGF5bG9hZC5tZXRob2QnLCAnRVhQRVJJTUVOVEFMX3Byb3RvY29sX2NvbmZpZycpKVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRQcm90b2NvbENvbmZpZ1Jlc3ApO1xuICAgICAgY2FsbEJhY2sucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRaZXJvQmFsYW5jZUFjY291bnRSZXNwb25zZSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciBkdWUgdG8gbm90IGZpbmRpbmcgYW4gYWRkcmVzcyB3aXRoIGZ1bmRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamtnITQ1NTU0NGxsbGwnLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGRlc3RBZGRyLFxuICAgICAgICAgIHNjYW46IG51bUl0ZXJhdGlvbixcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0RpZCBub3QgZmluZCBhbiBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICAgICAgLy8gZ2V0RGF0YUZyb21Ob2RlIHNob3VsZCBiZSBjYWxsZWQgbnVtSXRlcmF0aW9uICsgMSB0aW1lcyBzaW5jZSB3ZSBpbml0aWFsbHlcbiAgICAgIC8vIGNhbGwgZ2V0UHJvdG9jb2xDb25maWdcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXREYXRhRnJvbU5vZGUsIG51bUl0ZXJhdGlvbiArIDEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBUb2tlbiBUcmFuc2FjdGlvbnM6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgY29pbiA9IGNvaW5zLmdldCgndG5lYXI6dG5lcDI0ZHAnKTtcbiAgICBmdW5jdGlvbiBzZXRVcE1vY2sobW9ja1N0b3JhZ2VEZXBvc2l0UHJlc2VudCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgICAgcHVibGljX2tleTogYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY2Vzc0tleVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudEluZm8uYWNjb3VudElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRBY2NvdW50UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2sud2l0aEFyZ3MoKS5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFByb3RvY29sQ29uZmlnUmVzcCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAnY2FsbF9mdW5jdGlvbicsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgICAgbWV0aG9kX25hbWU6ICdmdF9iYWxhbmNlX29mJyxcbiAgICAgICAgICAgICAgYXJnc19iYXNlNjQ6IG5lYXJVdGlscy5jb252ZXJ0VG9CYXNlNjQoeyBhY2NvdW50X2lkOiBhY2NvdW50SW5mby5hY2NvdW50SWQgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY291bnRGdW5naWJsZVRva2VuQmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VEZXBvc2l0UmVzcG9uc2UgPSBtb2NrU3RvcmFnZURlcG9zaXRQcmVzZW50XG4gICAgICAgID8gTmVhclJlc3BvbnNlcy5nZXRTdG9yYWdlQmFsYW5jZVJlc3BvbnNlUHJlc2VudFxuICAgICAgICA6IE5lYXJSZXNwb25zZXMuZ2V0U3RvcmFnZUJhbGFuY2VSZXNwb25zZU5vdFByZXNlbnQ7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAnY2FsbF9mdW5jdGlvbicsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgICAgbWV0aG9kX25hbWU6ICdzdG9yYWdlX2JhbGFuY2Vfb2YnLFxuICAgICAgICAgICAgICBhcmdzX2Jhc2U2NDogbmVhclV0aWxzLmNvbnZlcnRUb0Jhc2U2NCh7IGFjY291bnRfaWQ6IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhzdG9yYWdlRGVwb3NpdFJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVhciB0b2tlbiBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgd2l0aCBzdG9yYWdlIGRlcG9zaXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRVcE1vY2soKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiBhY2NvdW50SW5mby5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnR2hnaGprZyE0NTU1NDRsbGxsJyxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFjY291bnRJbmZvLnRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG5cbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBOb25CaXRHb1R4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihyZXMuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuSnNvbiA9IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ubm9uY2UsIG5vbmNlKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uc2lnbmVySWQsIGFjY291bnRJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uYWN0aW9ucy5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5hY3Rpb25zWzBdPy5mdW5jdGlvbkNhbGw/Lm1ldGhvZE5hbWUsICdzdG9yYWdlX2RlcG9zaXQnKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uYWN0aW9uc1sxXT8uZnVuY3Rpb25DYWxsPy5tZXRob2ROYW1lLCAnZnRfdHJhbnNmZXInKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXREYXRhRnJvbU5vZGUsIDUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIG5lYXIgdG9rZW4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIHdpdGhvdXQgc3RvcmFnZSBkZXBvc2l0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0VXBNb2NrKHRydWUpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamtnITQ1NTU0NGxsbGwnLFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogYWNjb3VudEluZm8udG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcblxuICAgICAgY29uc3QgTm9uQml0R29UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIE5vbkJpdEdvVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHJlcy5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zaWduZXJJZCwgYWNjb3VudEluZm8uYWNjb3VudElkKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ucHVibGljS2V5LCAnZWQyNTUxOTonICsgYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5hY3Rpb25zLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLmFjdGlvbnNbMF0/LmZ1bmN0aW9uQ2FsbD8ubWV0aG9kTmFtZSwgJ2Z0X3RyYW5zZmVyJyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA1KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBuZWFyIHRva2VuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzIHdpdGggc3RvcmFnZSBkZXBvc2l0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0VXBNb2NrKCk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciB0aGUgc3RydWN0dXJlIG9mIHRoZSByZXN1bHRcbiAgICAgIHNob3VsZC5leGlzdChyZXMpO1xuICAgICAgcmVzLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd1bnNpZ25lZFR4Jyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHRoZSB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jykud2hpY2guaXMuYS5TdHJpbmcoKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NjYW5JbmRleCcsIDApO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pbicsICd0bmVhcjp0bmVwMjRkcCcpO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ3NpZ25hYmxlSGV4JyxcbiAgICAgICAgJ2JhOTAxYTY1NWJmZmYzNjgzYTM3YTcwYjdjYWYxYzkwYzdmOWMwMDdiMDljNmE5YmI3NDU0MGFjNjExYWVhYzAnXG4gICAgICApO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnLCAnbS8wJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHBhcnNlZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgcGFyc2VkVHggPSB1bnNpZ25lZFR4LnBhcnNlZFR4O1xuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lucHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgJ2YyNTYxOTZkYWU2MTdhYTM0ODE0OWMxZTYxZTk5NzI3MjQ5MjY2OGQ1MTc1MDZkN2E2ZTIzOTJlMDZlYTUzMmMnXG4gICAgICApO1xuICAgICAgcGFyc2VkVHguaW5wdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlJywgMy4yODk5OTM5NDdlMjQpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3V0cHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdhZGRyZXNzJywgYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbik7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luTmFtZScsICd0bmVhcjp0bmVwMjRkcCcpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3BlbmRBbW91bnQnLCAnMy4yODk5OTM5NDY5OTk5OTk5OTk5OTgxZSsyNCcpO1xuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R5cGUnLCAnJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIGZlZSBpbmZvXG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVJbmZvJyk7XG4gICAgICB1bnNpZ25lZFR4LmZlZUluZm8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZScsIDNlMjEpO1xuICAgICAgdW5zaWduZWRUeC5mZWVJbmZvLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnLCAnMzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciBjb2luLXNwZWNpZmljIGRhdGFcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgdW5zaWduZWRUeC5jb2luU3BlY2lmaWMuc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdjb21tb25LZXljaGFpbicsXG4gICAgICAgICc4Njk5ZDJlMDVkNjBhM2Y3YWI3MzNhNzRjY2Y3MDdmMzQwNzQ5NGI2MGY0MjUzNjE2MTg3ZjUyNjJlMjA3Mzc1MTlhMTc2M2RlMGJjYzRkMTY1YTdmYTBlNGRkZTY3YTE0MjZlYzRjYzlmY2QwODIwZDc0OWU2NTg5ZGNmYTA4ZSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVhciB0b2tlbiBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcmllcyB3aXRob3V0IHN0b3JhZ2UgZGVwb3NpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFVwTW9jayh0cnVlKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFjY291bnRJbmZvLnRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHJlc3VsdFxuICAgICAgc2hvdWxkLmV4aXN0KHJlcyk7XG4gICAgICByZXMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4UmVxdWVzdHMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Vuc2lnbmVkVHgnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzZXJpYWxpemVkVHgnKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2NhbkluZGV4JywgMCk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luJywgJ3RuZWFyOnRuZXAyNGRwJyk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnc2lnbmFibGVIZXgnLFxuICAgICAgICAnMmQ1ZGEzMzQwYzMwOGJkMmZjZTFlMDgwNWI4OTBkNjNkODk0NmNmZjYxODE4YzA5NjBlODcyMDM5MTlmZmZjNydcbiAgICAgICk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcsICdtLzAnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBwYXJzZWRUeCA9IHVuc2lnbmVkVHgucGFyc2VkVHg7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaW5wdXRzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICAnZjI1NjE5NmRhZTYxN2FhMzQ4MTQ5YzFlNjFlOTk3MjcyNDkyNjY4ZDUxNzUwNmQ3YTZlMjM5MmUwNmVhNTMyYydcbiAgICAgICk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlU3RyaW5nJywgJzMuMjg5OTkzOTQ2OTk5OTk5OTk5OTk4MWUrMjQnKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWUnLCAzLjI4OTk5Mzk0N2UyNCk7XG5cbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdvdXRwdXRzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FkZHJlc3MnLCBhY2NvdW50SW5mby5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlU3RyaW5nJywgJzMuMjg5OTkzOTQ2OTk5OTk5OTk5OTk4MWUrMjQnKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW5OYW1lJywgJ3RuZWFyOnRuZXAyNGRwJyk7XG5cbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcGVuZEFtb3VudCcsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHlwZScsICcnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgZmVlIGluZm9cbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICAgIHVuc2lnbmVkVHguZmVlSW5mby5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJywgM2UyMSk7XG4gICAgICB1bnNpZ25lZFR4LmZlZUluZm8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZVN0cmluZycsICczMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIGNvaW4tc3BlY2lmaWMgZGF0YVxuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pblNwZWNpZmljJyk7XG4gICAgICB1bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ2NvbW1vbktleWNoYWluJyxcbiAgICAgICAgJzg2OTlkMmUwNWQ2MGEzZjdhYjczM2E3NGNjZjcwN2YzNDA3NDk0YjYwZjQyNTM2MTYxODdmNTI2MmUyMDczNzUxOWExNzYzZGUwYmNjNGQxNjVhN2ZhMGU0ZGRlNjdhMTQyNmVjNGNjOWZjZDA4MjBkNzQ5ZTY1ODlkY2ZhMDhlJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
1424
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9uZWFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXFDO0FBRXJDLG9EQUE0QjtBQUM1QixvREFBdUI7QUFDdkIsa0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixvREFBNEI7QUFFNUIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCxpREFBNEM7QUFDNUMsbURBQTJFO0FBRTNFLG1DQUE4RDtBQUM5RCxnRUFBNEM7QUFDNUMsMkRBQXdEO0FBRXhELDJDQVUwQjtBQUMxQiw0REFBOEM7QUFFOUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtJQUNoQixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLFdBQVcsQ0FBQztJQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFBLHFDQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTNDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEtBQUssRUFBRSxZQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7UUFDOUIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsa0VBQWtFO2dCQUMzRSxNQUFNLEVBQUUsMkJBQTJCO2FBQ3BDO1NBQ0Y7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFD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VSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFdkUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1lBQzdFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFMUMsMEJBQTBCO1lBQzFCLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBRS9FLG9DQUFvQztZQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEQsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDMUMsZ0JBQWdCLEVBQ2hCLGtJQUFrSSxDQUNuSSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgY29tbW9uLCBUcmFuc2FjdGlvblByZWJ1aWxkLCBXYWxsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEtleVBhaXIsIE5lYXIsIFROZWFyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgbmVhclV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2dldEJ1aWxkZXJGYWN0b3J5JztcblxuaW1wb3J0IHtcbiAgcmF3VHgsXG4gIGFjY291bnRzLFxuICB2YWxpZGF0b3JDb250cmFjdEFkZHJlc3MsXG4gIGJsb2NrSGFzaCxcbiAgTmVhclJlc3BvbnNlcyxcbiAga2V5cyxcbiAgYWNjb3VudEluZm8sXG4gIG5vbmNlLFxuICBvdmNSZXNwb25zZSxcbn0gZnJvbSAnLi4vZml4dHVyZXMvbmVhcic7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvbmVhcic7XG5cbmRlc2NyaWJlKCdORUFSOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gIGxldCBuZXdUeFBhcmFtcztcbiAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KCd0bmVhcicpO1xuXG4gIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgIHR4SW5mbzoge30sXG4gIH07XG5cbiAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0bmVhcicsIE5lYXIuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcignbmVhcicsIFROZWFyLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3RuZWFyJyk7XG4gICAgbmV3VHhQcmVidWlsZCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5lYXIgPSBiaXRnby5jb2luKCduZWFyJyk7XG4gICAgY29uc3QgdG5lYXIgPSBiaXRnby5jb2luKCd0bmVhcicpO1xuXG4gICAgbmVhci5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnbmVhcicpO1xuICAgIG5lYXIuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCduZWFyJyk7XG4gICAgbmVhci5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnTmVhcicpO1xuICAgIG5lYXIuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTI0KTtcblxuICAgIHRuZWFyLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0bmVhcicpO1xuICAgIHRuZWFyLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnbmVhcicpO1xuICAgIHRuZWFyLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IE5lYXInKTtcbiAgICB0bmVhci5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMjQpO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBNZXNzYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYmUgcGVyZm9ybWVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKCk7XG4gICAgICBjb25zdCBtZXNzYWdlVG9TaWduID0gQnVmZmVyLmZyb20ocmFuZG9tQnl0ZXMoMzIpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlQYWlyLmdldEtleXMoKSwgbWVzc2FnZVRvU2lnbik7XG4gICAgICBrZXlQYWlyLnZlcmlmeVNpZ25hdHVyZShtZXNzYWdlVG9TaWduLCBVaW50OEFycmF5LmZyb20oc2lnbmF0dXJlKSkuc2hvdWxkLmVxdWFscyh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIG1pc3NpbmcgcHJpdmF0ZSBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6ICc3Nzg4MzI3YzY5NWRjYTRiM2U2NDlhMGRiNDViYzNlNzAzYTJjNjc0MjhmY2UzNjBlNjE4MDBjYzQyNDhmNGY3JyxcbiAgICAgIH0pLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBCdWZmZXIuZnJvbShyYW5kb21CeXRlcygzMikpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luLnNpZ25NZXNzYWdlKGtleVBhaXIsIG1lc3NhZ2VUb1NpZ24pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQgPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgICBwdWJzOiBbYWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5XSxcbiAgICAgICAgcHJ2OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXksXG4gICAgICB9KTtcbiAgICAgIHNpZ25lZC50eEhleC5zaG91bGQuZXF1YWwocmF3VHgudHJhbnNmZXIuc2lnbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBzaWduIHRyYW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBrZXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1YnM6IFthY2NvdW50cy5hY2NvdW50Mi5wdWJsaWNLZXldLFxuICAgICAgICAgIHBydjogYWNjb3VudHMuYWNjb3VudDEuc2VjcmV0S2V5LFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGUubWVzc2FnZSwgJ1ByaXZhdGUga2V5IGNhbm5vdCBzaWduIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggbWlzc2luZyBwYXJhbXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgICAgIGtleTogYWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJ2OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXksXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzaG91bGQubm90RXF1YWwoZSwgbnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZW5lcmF0ZSB3YWxsZXQga2V5IHBhaXI6ICcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGtleSBwYWlyJywgKCkgPT4ge1xuICAgICAgY29uc3Qga3AgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa3AucHViKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGtwLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIHNlZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWVkID0gQnVmZmVyLmZyb20oJzlkNjFiMTlkZWZmZDVhNjBiYTg0NGFmNDkyZWMyY2M0NDQ0OWM1Njk3YjMyNjkxOTcwM2JhYzAzMWNhZTdmNjAnLCAnaGV4Jyk7XG4gICAgICBjb25zdCBrcCA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa3AucHViKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGtwLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkcmVzcyB2ZXJpZmljYXRpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgYWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEgPSB7XG4gICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgJzQzZDNmNmE5NGQ3ZTNmYWY0ZGQzOTBhN2UyNmY1NTRlYWE5OGM4ZjA4MTNlM2YwYWU5NTlkNjFkOGFjZDAxMmUwNTA0ZTU1MmE1YzMxMTI2MGYyZmJhZWYzYTgxN2RmYTViODViOTg0Y2Q0M2IxNjFiZWJhZDlkZWQyNTc2NGNjJyxcbiAgICAgIHJvb3RBZGRyZXNzOiAnOTg5MDhhZjM2M2QzZTk5ZDg3YjFkNmRjZTRmODBhMjhiYmZlNjRmZWUyMmRiYjhhMzZkYWRhMjViYTMwZDAyNycsXG4gICAgICByZWNlaXZlQWRkcmVzczogJzZhYTIxNTY5NzM2ZjZlYmFmOTI1ZmVmOGVjZTIxOWMyYjcwMzA5OGNjMzU4Y2UzNGE5N2YyYzJhMmUwOTk2NTknLFxuICAgICAgcmVjZWl2ZUFkZHJlc3NJbmRleDogMixcbiAgICB9O1xuXG4gICAgbGV0IGtleWNoYWlucztcblxuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBrZXljaGFpbnMgPSBbXG4gICAgICAgIHsgY29tbW9uS2V5Y2hhaW46IGFkZHJlc3NWZXJpZmljYXRpb25EYXRhLmNvbW1vbktleWNoYWluIH0sXG4gICAgICAgIHsgY29tbW9uS2V5Y2hhaW46IGFkZHJlc3NWZXJpZmljYXRpb25EYXRhLmNvbW1vbktleWNoYWluIH0sXG4gICAgICAgIHsgY29tbW9uS2V5Y2hhaW46IGFkZHJlc3NWZXJpZmljYXRpb25EYXRhLmNvbW1vbktleWNoYWluIH0sXG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYSB2YWxpZCBUU1Mgcm9vdCBhZGRyZXNzIChpbmRleCAwKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgYWRkcmVzczogYWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEucm9vdEFkZHJlc3MsXG4gICAgICAgIHJvb3RBZGRyZXNzOiBhZGRyZXNzVmVyaWZpY2F0aW9uRGF0YS5yb290QWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbnMsXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgdmFsaWQgVFNTIHJlY2VpdmUgYWRkcmVzcyAoaW5kZXggPiAwKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgYWRkcmVzczogYWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEucmVjZWl2ZUFkZHJlc3MsXG4gICAgICAgIHJvb3RBZGRyZXNzOiBhZGRyZXNzVmVyaWZpY2F0aW9uRGF0YS5yb290QWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbnMsXG4gICAgICAgIGluZGV4OiBhZGRyZXNzVmVyaWZpY2F0aW9uRGF0YS5yZWNlaXZlQWRkcmVzc0luZGV4LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGludmFsaWQgYWRkcmVzcyBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9ICdpbnZhbGlkLWFkZHJlc3MnO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBhZGRyZXNzOiBpbnZhbGlkQWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbnMsXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gdmVyaWZ5aW5nIHJvb3QgYWRkcmVzcyB3aXRoIHdyb25nIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBhZGRyZXNzOiBhZGRyZXNzVmVyaWZpY2F0aW9uRGF0YS5yb290QWRkcmVzcyxcbiAgICAgICAgcm9vdEFkZHJlc3M6IGFkZHJlc3NWZXJpZmljYXRpb25EYXRhLnJvb3RBZGRyZXNzLFxuICAgICAgICBrZXljaGFpbnM6IGtleWNoYWlucyxcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICB9O1xuICAgICAgYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBrZXljaGFpbnMgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgYWRkcmVzczogYWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEucm9vdEFkZHJlc3MsXG4gICAgICAgIGtleWNoYWluczogW10sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBhZGRyZXNzIHRoYXQgZG9lcyBub3QgbWF0Y2ggZGVyaXZhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzcyA9ICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgYWRkcmVzczogd3JvbmdBZGRyZXNzLFxuICAgICAgICBrZXljaGFpbnM6IGtleWNoYWlucyxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICB9O1xuICAgICAgYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0cmluZyBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgYWRkcmVzczogYWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEucm9vdEFkZHJlc3MsXG4gICAgICAgIHJvb3RBZGRyZXNzOiBhZGRyZXNzVmVyaWZpY2F0aW9uRGF0YS5yb290QWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbnMsXG4gICAgICAgIGluZGV4OiAnMCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IHRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAnO1xuICAgIGNvbnN0IGdhcyA9ICcxMjUwMDAwMDAwMDAwMDAnO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgZW5jb2RpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSBzaWduZWQgdHJhbnNhY3Rpb24gaW4gYmFzZTY0IGVuY29kaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuXG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCBzZWxmIHN0b3JhZ2UgZGVwb3NpdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS5yYXdUeC5zZWxmU3RvcmFnZURlcG9zaXQudW5zaWduZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6ICdlbmFibGV0b2tlbicsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0bmVhcjp0bmVwMjRkcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHNpZ25lZCBzZWxmIHN0b3JhZ2UgZGVwb3NpdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0ZXN0RGF0YS5yYXdUeC5zZWxmU3RvcmFnZURlcG9zaXQuc2lnbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICB0eXBlOiAnZW5hYmxldG9rZW4nLFxuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogJzAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndG5lYXI6dG5lcDI0ZHAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB1bnNpZ25lZCBzdG9yYWdlIGRlcG9zaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdGVzdERhdGEucmF3VHguc3RvcmFnZURlcG9zaXQudW5zaWduZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6ICdlbmFibGV0b2tlbicsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0bmVhcjp0bmVwMjRkcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHNpZ25lZCBzdG9yYWdlIGRlcG9zaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdGVzdERhdGEucmF3VHguc3RvcmFnZURlcG9zaXQuc2lnbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICB0eXBlOiAnZW5hYmxldG9rZW4nLFxuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogJzAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndG5lYXI6dG5lcDI0ZHAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB2ZXJpZmljYXRpb24gfSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB0cmFuc2FjdGlvbnMgd2hlbiBoYXZlIGRpZmZlcmVudCByZWNpcGllbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc5ZjdiMDY3NWRiNTlkMTliNGJkOWM4YzcyZWFhYmJhNzVhOTg2M2QwMmIzMDExNWI4YjNjM2NhNWMyMGYwMjU0JyxcbiAgICAgICAgICAgIGFtb3VudDogJzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gdG90YWwgYW1vdW50IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHggPSB7XG4gICAgICAgIGlkOiAnNWpURVB1RGNNQ2VFZ3AxaXlFYk5CS3NuaFl6NEY0YzFFUER0Um14bTN3Q3cnLFxuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXSxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnOTAwMDAnLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAnZXhwbGFpblRyYW5zYWN0aW9uJyk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBzdHViLnJldHVybnMoZXhwbGFpbmVkVHgpO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgdmVyaWZpY2F0aW9uIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCB0b3RhbCBhbW91bnQgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0b3RhbCBhbW91bnQgZmllbGQnKTtcbiAgICAgIHN0dWIucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiBpbiBoZXggZW5jb2RpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG5cbiAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIGlzVHJhbnNhY3Rpb25WZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgc2VyaWFsaXplZCBoZXggc3RyaW5nIHRvIGJhc2U2NCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgIHR4UHJlYnVpbGQudHhIZXggPSBCdWZmZXIuZnJvbSh0eFByZWJ1aWxkLnR4SGV4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHZlcmlmaWNhdGlvbiB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgd2hlbiBpbnB1dCBgcmVjaXBpZW50c2AgaXMgYWJzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB3aGVuIHR4SGV4IGlzIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHt9O1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gcmVjaXBpZW50cyBoYXMgZXh0cmEgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5kYXRhID0gJ2RhdGEnO1xuXG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc2MWIxOGM2ZGMwMmRkY2FiZGVhYzU2Y2I0ZjIxYTk3MWNjNDFjYzk3NjQwZjZmODViMDczNDgwMDA4YzUzYTBkJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgc3Bvb2ZlZCBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHVwIHdhbGxldCBkYXRhXG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZTA0MDQxYTkwJyxcbiAgICAgICAgY29pbjogJ3RuZWFyJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogJzNhMWI3NzY1M2VhMTcwNWFkMjk3ZGI3YWJlMjU5OTUzYjRhZDVkMmVjYzViNTBiZWU5YTQ4NmY3ODVkZDkwZGInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzAzZmRmNTFhLTI4ZTEtNDI2OC1iNWJlLWE0YWZjMDMwZmY2NCcsXG4gICAgICAgIHdhbGxldElkOiAnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzQwMDAwMDAwNjU2MjM3NjQzMzYyMzMzMzMxMzE2NjYxNjI2MTY1MzMzODM5MzA2MjM2MzczMTM4MzUzNjM0MzgzODM4MzA2NjY2MzgzMTM4Mzc2NjM1MzQ2NTYyMzU2NTYyNjY2NTM0MzMzNjY0NjEzMTMxMzMzODMzMzEzMDM5NjYzODYyMzUwMGViN2QzYjMzMTFmYWJhZTM4OTBiNjcxODU2NDg4ODBmZjgxODdmNTRlYjVlYmZlNDM2ZGExMTM4MzEwOWY4YjVjOGE2ZDhhNmY4NjEwMDAwNDAwMDAwMDA2MTM5MzQ2NTMzMzkzNzMwNjE2NTYzMzQzNjYyNjI2MjMxMzUzNjM5MzMzMTYzNjEzMDM5MzA2NTY0MzczNTY2NjYzMzYxNjE2NDY1MzQzOTM3Mzk2NjY2NjU2NjM2NjQzNzM0NjMzNzMyNjQzNTYxMzIzNDM3NjM2NTM5MzQ2NmFkMTlmYTdmYWE0NTY0MzIwMGY5OWE5OTI3MTVhMDJmOTgwNmJjYmYwYzU3MzdjY2RmNWQ2MTE3MmQ2MWE0ZjkwMTAwMDAwMDAzMDAzOGJmOTRkZDE1M2Q5ZDdmYTcwMTAwMDAwMDAwMDAnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiA4NTMzMjExMTk0Nzg4NzUwMDAwMCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICc4NTMzMjExMTk0Nzg4NzUwMDM3NycsXG4gICAgICAgIH0sXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIG1pbmVyRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0bmVhcicsXG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzE5OTk5MTUwODg5ODc1MDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnYTk0ZTM5NzBhZWM0NmJiYjE1NjkzMWNhMDkwZWQ3NWZmM2FhZGU0OTc5ZmZlZjZkNzRjNzJkNWEyNDdjZTk0ZicsXG4gICAgICAgICAgICAgIHZhbHVlOiAxLjk5OTkxNTA4ODk4NzVlMjQsXG4gICAgICAgICAgICAgIHdhbGxldDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZScsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFsnNjJlMTU2ZGJkNjQxYzAwMDA3NmJiYWJlJ10sXG4gICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MTExNzg1ZjU5NTQ4ZDAwMDdhNGQxM2MnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogWyc2MTExNzg1ZjU5NTQ4ZDAwMDdhNGQxM2MnXSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0bmVhcicsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlczogWydob3QnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IDEuOTk5OTE1MDg4OTg3NWUyNCxcbiAgICAgICAgICAgICAgYWRkcmVzczogJ2ViN2QzYjMzMTFmYWJhZTM4OTBiNjcxODU2NDg4ODBmZjgxODdmNTRlYjVlYmZlNDM2ZGExMTM4MzEwOWY4YjUnLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE5OTk5MTUwODg5ODc1MDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YWU3N2VjNjIzNDZhNjlkMGFlZTVhMmRkYTY5YzhjJyxcbiAgICAgICAgY29pbjogJ3RuZWFyJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbJ21vY2snXS51cmk7XG4gICAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YyL3RuZWFyL3dhbGxldC82MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MC9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGQnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uY29uc29saWRhdGlvblR4LFxuICAgICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAgICc0MDAwMDAwMDYxMzkzNDY1MzMzOTM3MzA2MTY1NjMzNDM2NjI2MjYyMzEzNTM2MzkzMzMxNjM2MTMwMzkzMDY1NjQzNzM1NjY2NjMzNjE2MTY0NjUzNDM5MzczOTY2NjY2NTY2MzY2NDM3MzQ2MzM3MzI2NDM1NjEzMjM0Mzc2MzY1MzkzNDY2MDBhOTRlMzk3MGFlYzQ2YmJiMTU2OTMxY2EwOTBlZDc1ZmYzYWFkZTQ5NzlmZmVmNmQ3NGM3MmQ1YTI0N2NlOTRmMWYzZGVjMTU0YTU3MDAwMDQwMDAwMDAwNjYzMjYxMzczODY2MzgzMDMzMzY2NjM4NjEzNDMyNjYzODM3MzAzMTM5NjIzMTY0MzE2NDYzMzYzMzYxMzE2MjMzMzc2MjMxMzkzMzMzNjU2NTM2MzI2NDY0NjQzNTMzNjUzNzM0Mzg2MzM1MzAzMjMyNjYzMTY0MzUzNzM5NjFmYjYxMzBlNmNjMzBjOTI2ZmNjZGU4MDQzY2U0ZTQzYTgxMGVhNjNiNGQzZjkzNjIzYTU0MTc2ZmY4ZGIxY2QwMDEwMDAwMDAwMzAwMDAwMDRhNDgwMTE0MTY5NTQ1MDgwMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLmdldCgnL2FwaS92Mi90bmVhci9rZXkvNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiAnZmFrZVBydicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5nZXQoJy9hcGkvdjIvdG5lYXIvd2FsbGV0LzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZTA0MDQxYTkwL2FkZHJlc3Nlcz9zb3J0PS0xJmxpbWl0PTEnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ2E5NGUzOTcwYWVjNDZiYmIxNTY5MzFjYTA5MGVkNzVmZjNhYWRlNDk3OWZmZWY2ZDc0YzcyZDVhMjQ3Y2U5NGYnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB0byB0ZXN0XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHdhbGxldE9iai5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ3R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCBhZGRyZXNzJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHZhbGlkIGEgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFNldCB1cCB3YWxsZXQgZGF0YVxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUwNDA0MWE5MCcsXG4gICAgICAgIGNvaW46ICd0bmVhcicsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICdhOTRlMzk3MGFlYzQ2YmJiMTU2OTMxY2EwOTBlZDc1ZmYzYWFkZTQ5NzlmZmVmNmQ3NGM3MmQ1YTI0N2NlOTRmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICcwM2ZkZjUxYS0yOGUxLTQyNjgtYjViZS1hNGFmYzAzMGZmNjQnLFxuICAgICAgICB3YWxsZXRJZDogJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZScsXG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICc0MDAwMDAwMDY1NjIzNzY0MzM2MjMzMzMzMTMxNjY2MTYyNjE2NTMzMzgzOTMwNjIzNjM3MzEzODM1MzYzNDM4MzgzODMwNjY2NjM4MzEzODM3NjYzNTM0NjU2MjM1NjU2MjY2NjUzNDMzMzY2NDYxMzEzMTMzMzgzMzMxMzAzOTY2Mzg2MjM1MDBlYjdkM2IzMzExZmFiYWUzODkwYjY3MTg1NjQ4ODgwZmY4MTg3ZjU0ZWI1ZWJmZTQzNmRhMTEzODMxMDlmOGI1YzhhNmQ4YTZmODYxMDAwMDQwMDAwMDAwNjEzOTM0NjUzMzM5MzczMDYxNjU2MzM0MzY2MjYyNjIzMTM1MzYzOTMzMzE2MzYxMzAzOTMwNjU2NDM3MzU2NjY2MzM2MTYxNjQ2NTM0MzkzNzM5NjY2NjY1NjYzNjY0MzczNDYzMzczMjY0MzU2MTMyMzQzNzYzNjUzOTM0NjZhZDE5ZmE3ZmFhNDU2NDMyMDBmOTlhOTkyNzE1YTAyZjk4MDZiY2JmMGM1NzM3Y2NkZjVkNjExNzJkNjFhNGY5MDEwMDAwMDAwMzAwMzhiZjk0ZGQxNTNkOWQ3ZmE3MDEwMDAwMDAwMDAwJyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogODUzMzIxMTE5NDc4ODc1MDAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnODUzMzIxMTE5NDc4ODc1MDAzNzcnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBtaW5lckZlZTogJzAnLFxuICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTk5OTkxNTA4ODk4NzUwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndG5lYXInLFxuICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ2E5NGUzOTcwYWVjNDZiYmIxNTY5MzFjYTA5MGVkNzVmZjNhYWRlNDk3OWZmZWY2ZDc0YzcyZDVhMjQ3Y2U5NGYnLFxuICAgICAgICAgICAgICB2YWx1ZTogMS45OTk5MTUwODg5ODc1ZTI0LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2MmUxNTZkYmQ2NDFjMDAwMDc2YmJhYmUnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzYyZTE1NmRiZDY0MWMwMDAwNzZiYmFiZSddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjExMTc4NWY1OTU0OGQwMDA3YTRkMTNjJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjExMTc4NWY1OTU0OGQwMDA3YTRkMTNjJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTk5OTkxNTA4ODk4NzUwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndG5lYXInLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZXM6IFsnaG90J10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiAxLjk5OTkxNTA4ODk4NzVlMjQsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdlYjdkM2IzMzExZmFiYWUzODkwYjY3MTg1NjQ4ODgwZmY4MTg3ZjU0ZWI1ZWJmZTQzNmRhMTEzODMxMDlmOGI1JyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxOTk5OTE1MDg4OTg3NTAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGFlNzdlYzYyMzQ2YTY5ZDBhZWU1YTJkZGE2OWM4YycsXG4gICAgICAgIGNvaW46ICd0bmVhcicsXG4gICAgICB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgYmxvY2toYXNoOiAnJyxcbiAgICAgICAgICAgIGZlZVBheWVyOiAnJyxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IGNvbnNvbGlkYXRpb25UeCBhcyB1bmtub3duIGFzIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gICAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgICAgIHdhbGxldDogbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwMCc7XG4gICAgY29uc3QgZ2FzID0gJzEyNTAwMDAwMDAwMDAwMCc7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbJ291dHB1dEFtb3VudCcsICdjaGFuZ2VBbW91bnQnLCAnb3V0cHV0cycsICdjaGFuZ2VPdXRwdXRzJywgJ2ZlZScsICd0eXBlJ10sXG4gICAgICAgIGlkOiAnNWpURVB1RGNNQ2VFZ3AxaXlFYk5CS3NuaFl6NEY0YzFFUER0Um14bTN3Q3cnLFxuICAgICAgICB0eXBlOiAwLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzlmN2IwNjc1ZGI1OWQxOWI0YmQ5YzhjNzJlYWFiYmE3NWE5ODYzZDAyYjMwMTE1YjhiM2MzY2E1YzIwZjAyNTQnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJzVqVEVQdURjTUNlRWdwMWl5RWJOQktzbmhZejRGNGMxRVBEdFJteG0zd0N3JyxcbiAgICAgICAgdHlwZTogMCxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc5ZjdiMDY3NWRiNTlkMTliNGJkOWM4YzcyZWFhYmJhNzVhOTg2M2QwMmIzMDExNWI4YjNjM2NhNWMyMGYwMjU0JyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhY3RpdmF0ZSBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbJ291dHB1dEFtb3VudCcsICdjaGFuZ2VBbW91bnQnLCAnb3V0cHV0cycsICdjaGFuZ2VPdXRwdXRzJywgJ2ZlZScsICd0eXBlJ10sXG4gICAgICAgIGlkOiAnR3BpTExhR3MyRmsyYmQ3U1F2aGtKYVpqajc0VW5QUGRGN2NVYTlwdzE1amUnLFxuICAgICAgICB0eXBlOiAxMyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBkZWFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJ0NEeFBSUDNEZ0hOOGdZbVJEYWdrNVRSdVg3ZnNDUllIY3Vxb05VTHlRUFVXJyxcbiAgICAgICAgdHlwZTogMTcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddLFxuICAgICAgICBpZDogJzUyWlg4TVV3bVljNldRNjdyaVVCcG1udGtjU3h4VDVhS2tKWXQ1Q3RDWnViJyxcbiAgICAgICAgdHlwZTogMTUsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNjFiMThjNmRjMDJkZGNhYmRlYWM1NmNiNGYyMWE5NzFjYzQxY2M5NzY0MGY2Zjg1YjA3MzQ4MDAwOGM1M2EwZCcsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyb3IubWVzc2FnZSwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBleHBsYWluIHRyYW5zYWN0aW9uIHdpdGggd3JvbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgICB0eEhleDogJ2ludmFsaWRUeEhleCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyb3IubWVzc2FnZSwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1BhcnNlIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgY29uc3QgVEVOX01JTExJT05fTkVBUiA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gICAgY29uc3QgT05FX01JTExJT05fTkVBUiA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuICAgIGNvbnN0IGFtb3VudCA9IFRFTl9NSUxMSU9OX05FQVI7XG4gICAgY29uc3QgZ2FzID0gJzEyNTAwMDAwMDAwMDAwMCc7XG5cbiAgICBjb25zdCByZXNwb25zZTEgPSB7XG4gICAgICBhZGRyZXNzOiAnOWY3YjA2NzVkYjU5ZDE5YjRiZDljOGM3MmVhYWJiYTc1YTk4NjNkMDJiMzAxMTViOGIzYzNjYTVjMjBmMDI1NCcsXG4gICAgICBhbW91bnQ6IE9ORV9NSUxMSU9OX05FQVIsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlMiA9IHtcbiAgICAgIGFkZHJlc3M6ICdsYXZlbmRlcmZpdmUucG9vbC5mODYzOTczLm0wJyxcbiAgICAgIGFtb3VudDogVEVOX01JTExJT05fTkVBUixcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UzID0ge1xuICAgICAgYWRkcmVzczogJzYxYjE4YzZkYzAyZGRjYWJkZWFjNTZjYjRmMjFhOTcxY2M0MWNjOTc2NDBmNmY4NWIwNzM0ODAwMDhjNTNhMGQnLFxuICAgICAgYW1vdW50OiBURU5fTUlMTElPTl9ORUFSLFxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtyZXNwb25zZTFdLFxuICAgICAgICBvdXRwdXRzOiBbcmVzcG9uc2UxXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICB9LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbcmVzcG9uc2UxXSxcbiAgICAgICAgb3V0cHV0czogW3Jlc3BvbnNlMV0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aGVuIGV4cGxhaW5UcmFuc2FjdGlvbiByZXNwb25zZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzdHViID0gc2lub24uc3R1YihOZWFyLnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgc3R1Yi5yZXNvbHZlcyh1bmRlZmluZWQpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICBmZWU6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW3Jlc3BvbnNlMl0sXG4gICAgICAgIG91dHB1dHM6IFtyZXNwb25zZTJdLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5nYXMoZ2FzKVxuICAgICAgICAuc2VuZGVyKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIGFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSlcbiAgICAgICAgLnJlY2VpdmVySWQodmFsaWRhdG9yQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAucmVjZW50QmxvY2tIYXNoKGJsb2NrSGFzaC5ibG9jazEpXG4gICAgICAgIC5ub25jZShCaWdJbnQoMSkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGFjY291bnRzLmFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2Ugd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAuZ2FzKGdhcylcbiAgICAgICAgLnNlbmRlcihhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBhY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpXG4gICAgICAgIC5yZWNlaXZlcklkKHZhbGlkYXRvckNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgLnJlY2VudEJsb2NrSGFzaChibG9ja0hhc2guYmxvY2sxKVxuICAgICAgICAubm9uY2UoQmlnSW50KDEpKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbcmVzcG9uc2UzXSxcbiAgICAgICAgb3V0cHV0czogW3Jlc3BvbnNlM10sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3RuZWFyJyk7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgICAgcHVibGljX2tleTogYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY2Vzc0tleVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudEluZm8uYWNjb3VudElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRBY2NvdW50UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2sud2l0aEFyZ3MoKS5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFByb3RvY29sQ29uZmlnUmVzcCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdnYXNfcHJpY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbYWNjb3VudEluZm8uYmxvY2tIYXNoXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRHYXNQcmljZVJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleToga2V5cy51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ0doZ2hqa2chNDU1NTQ0bGxsbCcsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcblxuICAgICAgY29uc3QgTm9uQml0R29UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIE5vbkJpdEdvVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHJlcy5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zaWduZXJJZCwgYWNjb3VudEluZm8uYWNjb3VudElkKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ucHVibGljS2V5LCAnZWQyNTUxOTonICsgYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KGJhc2Vjb2luLmdldERhdGFGcm9tTm9kZSwgNCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIHVuc2lnbmVkIHN3ZWVwIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzdWx0XG4gICAgICBzaG91bGQuZXhpc3QocmVzKTtcbiAgICAgIHJlcy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhSZXF1ZXN0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHJhbnNhY3Rpb25zJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndW5zaWduZWRUeCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciB0aGUgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpLndoaWNoLmlzLmEuU3RyaW5nKCk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzY2FuSW5kZXgnLCAwKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW4nLCAndG5lYXInKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdzaWduYWJsZUhleCcsXG4gICAgICAgICdjMjdkNjg0YjZmMDljNGI2MDNkOWJmOGEwOGJhZWRmMTJiOGJiOTUxZjMxNGFjZDc0N2IxNmJiNzVjZmJmNjg3J1xuICAgICAgKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlcml2YXRpb25QYXRoJywgJ20vMCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciBwYXJzZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHBhcnNlZFR4ID0gdW5zaWduZWRUeC5wYXJzZWRUeDtcbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdpbnB1dHMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcGFyc2VkVHguaW5wdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICAgICdmMjU2MTk2ZGFlNjE3YWEzNDgxNDljMWU2MWU5OTcyNzI0OTI2NjhkNTE3NTA2ZDdhNmUyMzkyZTA2ZWE1MzJjJ1xuICAgICAgKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWVTdHJpbmcnLCAnMS45Nzg4NTUwNjA5NDg2NjI2OTY1MDAwMDAwMWUrMjYnKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWUnLCAxLjk3ODg1NTA2MDk0ODY2MjdlMjYpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3V0cHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdhZGRyZXNzJywgYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbik7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICcxLjk3ODg1NTA2MDk0ODY2MjY5NjUwMDAwMDAxZSsyNicpO1xuICAgICAgcGFyc2VkVHgub3V0cHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pbk5hbWUnLCAndG5lYXInKTtcblxuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NwZW5kQW1vdW50JywgJzEuOTc4ODU1MDYwOTQ4NjYyNjk2NTAwMDAwMDFlKzI2Jyk7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHlwZScsICcnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgZmVlIGluZm9cbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICAgIHVuc2lnbmVkVHguZmVlSW5mby5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJywgNjg2Mjg2Mzc5Njg3NTAwMDAwMDApO1xuICAgICAgdW5zaWduZWRUeC5mZWVJbmZvLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnLCAnNjg2Mjg2Mzc5Njg3NTAwMDAwMDAnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgY29pbi1zcGVjaWZpYyBkYXRhXG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIHVuc2lnbmVkVHguY29pblNwZWNpZmljLnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnY29tbW9uS2V5Y2hhaW4nLFxuICAgICAgICAnODY5OWQyZTA1ZDYwYTNmN2FiNzMzYTc0Y2NmNzA3ZjM0MDc0OTRiNjBmNDI1MzYxNjE4N2Y1MjYyZTIwNzM3NTE5YTE3NjNkZTBiY2M0ZDE2NWE3ZmEwZTRkZGU2N2ExNDI2ZWM0Y2M5ZmNkMDgyMGQ3NDllNjU4OWRjZmEwOGUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIGZvciBORUFSJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gb3ZjUmVzcG9uc2U7IC8vIE5FQVItc3BlY2lmaWMgcmVzcG9uc2UgZml4dHVyZVxuICAgICAgY29uc3QgcmVjb3ZlcnlUeG4gPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihwYXJhbXMpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgICAgcmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICdRQUFBQUdJek9ETmpZV00yWmpOalpEWTBPVFZpWkRaaFlqZzNOek13TUdFNE56bGlOMlJpWXpSaE1UWmhZakJsWmpFNU56bGtaVFptTnpOa1lqQXlORGxtWVdFQXM0UEt4dlBOWkpXOWFyaDNNQXFIbTMyOFNoYXJEdkdYbmViM1BiQWtuNm9CdVpVajZhMEFBRUFBQUFCbFlXUmlNekl3T0daaU9XVTVNV1kyTUdRM05tVXpZelV4TnpFelpEQTFZMkkwWVRVNU5ERmxOV1l6TlRWbE1XWm1PVGhsTVRRd1lUY3hNak5sT0RSbDJoYkp0QzRyd0x5V0FiTXpUZ1RjUm1yNXhwV2xyWE9YYnp4TVdjUDd3d2NCQUFBQUE5QTFvVmZ2cHozbzRoY0FBQUFBQUFBQXZBSVdPajJjMVFocWJXY0NsWjhkVzdLUWNmRzlnWUZraW1iUkR5STh0OEw0VFVpVXlSWE1ZdjVVOGphRXNORld0ZUJjVUdvbEZjTFFTYmJENU1DcER3PT0nXG4gICAgICApO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgc2NhbiBpbmRleFxuICAgICAgcmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICByZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIGZvciB3YWxsZXQgd2l0aCBtdWx0aXBsZSBhZGRyZXNzZXM6JywgKCkgPT4ge1xuICAgIGNvbnN0IGRlc3RBZGRyID0gYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbjtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3RuZWFyJyk7XG4gICAgY29uc3QgYWRkcmVzczFJbmZvID0ge1xuICAgICAgYWNjb3VudElkOiAnZjY4NDJiZjRhOGU5ODA3MDRmYmQ5ZmI3OTliZmJlMGExMTZmZDVkOGQwNmY2Nzc0ZTc5MmM2OGM5MDdkOWIyMCcsXG4gICAgICBiczU4RW5jb2RlZFB1YmxpY0tleTogJ0hiSkJxeWFnQnF0U05VUjc0ZkxNUVNqUThIeVFWczY2ZnlNeVNQaFpMWHo3JyxcbiAgICAgIGJsb2NrSGFzaDogJzg0NE45YVdlZmQ0VHZKd2RpQmdYRFZQejRXOXo0MzZrb2hUaVhucDV5NGZxJyxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFkZHJlc3MxSW5mby5hY2NvdW50SWQsXG4gICAgICAgICAgICAgIHB1YmxpY19rZXk6IGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKE5lYXJSZXNwb25zZXMuZ2V0QWNjZXNzS2V5UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIGlkOiAnZG9udGNhcmUnLFxuICAgICAgICAgICAgbWV0aG9kOiAncXVlcnknLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogJ3ZpZXdfYWNjb3VudCcsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby5hY2NvdW50SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFplcm9CYWxhbmNlQWNjb3VudFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWRkcmVzczFJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKE5lYXJSZXNwb25zZXMuZ2V0QWNjb3VudFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrLndpdGhBcmdzKCkucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRQcm90b2NvbENvbmZpZ1Jlc3ApO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIGlkOiAnZG9udGNhcmUnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2FzX3ByaWNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW2FkZHJlc3MxSW5mby5ibG9ja0hhc2hdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEdhc1ByaWNlUmVzcG9uc2UpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyBhdCBhZGRyZXNzIDEgYnV0IHNlYXJjaCBmcm9tIGFkZHJlc3MgMCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiBkZXN0QWRkcixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ0doZ2hqa2chNDU1NTQ0bGxsbCcsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgcmVzLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA1KTtcblxuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmVzLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zaWduZXJJZCwgYWRkcmVzczFJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIGF0IGFkZHJlc3MgMSBidXQgc2VhcmNoIGZyb20gYWRkcmVzcyAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGRlc3RBZGRyLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnR2hnaGprZyE0NTU1NDRsbGxsJyxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgcmVzLnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcblxuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmVzLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zaWduZXJJZCwgYWRkcmVzczFJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFkZHJlc3MxSW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uIEZhaWx1cmVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGRlc3RBZGRyID0gYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbjtcbiAgICBjb25zdCBudW1JdGVyYXRpb24gPSAxMDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoTmVhci5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIE5lYXIpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHNpbm9uLm1hdGNoLmhhc05lc3RlZCgncGF5bG9hZC5tZXRob2QnLCAnRVhQRVJJTUVOVEFMX3Byb3RvY29sX2NvbmZpZycpKVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRQcm90b2NvbENvbmZpZ1Jlc3ApO1xuICAgICAgY2FsbEJhY2sucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRaZXJvQmFsYW5jZUFjY291bnRSZXNwb25zZSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciBkdWUgdG8gbm90IGZpbmRpbmcgYW4gYWRkcmVzcyB3aXRoIGZ1bmRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamtnITQ1NTU0NGxsbGwnLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGRlc3RBZGRyLFxuICAgICAgICAgIHNjYW46IG51bUl0ZXJhdGlvbixcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0RpZCBub3QgZmluZCBhbiBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICAgICAgLy8gZ2V0RGF0YUZyb21Ob2RlIHNob3VsZCBiZSBjYWxsZWQgbnVtSXRlcmF0aW9uICsgMSB0aW1lcyBzaW5jZSB3ZSBpbml0aWFsbHlcbiAgICAgIC8vIGNhbGwgZ2V0UHJvdG9jb2xDb25maWdcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXREYXRhRnJvbU5vZGUsIG51bUl0ZXJhdGlvbiArIDEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBUb2tlbiBUcmFuc2FjdGlvbnM6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgY29pbiA9IGNvaW5zLmdldCgndG5lYXI6dG5lcDI0ZHAnKTtcbiAgICBmdW5jdGlvbiBzZXRVcE1vY2sobW9ja1N0b3JhZ2VEZXBvc2l0UHJlc2VudCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihOZWFyLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgTmVhcik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAndmlld19hY2Nlc3Nfa2V5JyxcbiAgICAgICAgICAgICAgZmluYWxpdHk6ICdmaW5hbCcsXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJbmZvLmFjY291bnRJZCxcbiAgICAgICAgICAgICAgcHVibGljX2tleTogYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY2Vzc0tleVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBpZDogJ2RvbnRjYXJlJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICByZXF1ZXN0X3R5cGU6ICd2aWV3X2FjY291bnQnLFxuICAgICAgICAgICAgICBmaW5hbGl0eTogJ2ZpbmFsJyxcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudEluZm8uYWNjb3VudElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoTmVhclJlc3BvbnNlcy5nZXRBY2NvdW50UmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2sud2l0aEFyZ3MoKS5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldFByb3RvY29sQ29uZmlnUmVzcCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAnY2FsbF9mdW5jdGlvbicsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgICAgbWV0aG9kX25hbWU6ICdmdF9iYWxhbmNlX29mJyxcbiAgICAgICAgICAgICAgYXJnc19iYXNlNjQ6IG5lYXJVdGlscy5jb252ZXJ0VG9CYXNlNjQoeyBhY2NvdW50X2lkOiBhY2NvdW50SW5mby5hY2NvdW50SWQgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhOZWFyUmVzcG9uc2VzLmdldEFjY291bnRGdW5naWJsZVRva2VuQmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VEZXBvc2l0UmVzcG9uc2UgPSBtb2NrU3RvcmFnZURlcG9zaXRQcmVzZW50XG4gICAgICAgID8gTmVhclJlc3BvbnNlcy5nZXRTdG9yYWdlQmFsYW5jZVJlc3BvbnNlUHJlc2VudFxuICAgICAgICA6IE5lYXJSZXNwb25zZXMuZ2V0U3RvcmFnZUJhbGFuY2VSZXNwb25zZU5vdFByZXNlbnQ7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgaWQ6ICdkb250Y2FyZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdxdWVyeScsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVxdWVzdF90eXBlOiAnY2FsbF9mdW5jdGlvbicsXG4gICAgICAgICAgICAgIGZpbmFsaXR5OiAnZmluYWwnLFxuICAgICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgICAgbWV0aG9kX25hbWU6ICdzdG9yYWdlX2JhbGFuY2Vfb2YnLFxuICAgICAgICAgICAgICBhcmdzX2Jhc2U2NDogbmVhclV0aWxzLmNvbnZlcnRUb0Jhc2U2NCh7IGFjY291bnRfaWQ6IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyhzdG9yYWdlRGVwb3NpdFJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVhciB0b2tlbiBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMgd2l0aCBzdG9yYWdlIGRlcG9zaXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRVcE1vY2soKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiBrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiBhY2NvdW50SW5mby5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnR2hnaGprZyE0NTU1NDRsbGxsJyxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFjY291bnRJbmZvLnRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG5cbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBOb25CaXRHb1R4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihyZXMuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IE5vbkJpdEdvVHhuSnNvbiA9IE5vbkJpdEdvVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ubm9uY2UsIG5vbmNlKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uc2lnbmVySWQsIGFjY291bnRJbmZvLmFjY291bnRJZCk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLnB1YmxpY0tleSwgJ2VkMjU1MTk6JyArIGFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uYWN0aW9ucy5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5hY3Rpb25zWzBdPy5mdW5jdGlvbkNhbGw/Lm1ldGhvZE5hbWUsICdzdG9yYWdlX2RlcG9zaXQnKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24uYWN0aW9uc1sxXT8uZnVuY3Rpb25DYWxsPy5tZXRob2ROYW1lLCAnZnRfdHJhbnNmZXInKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChiYXNlY29pbi5nZXREYXRhRnJvbU5vZGUsIDUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIG5lYXIgdG9rZW4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIHdpdGhvdXQgc3RvcmFnZSBkZXBvc2l0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0VXBNb2NrKHRydWUpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamtnITQ1NTU0NGxsbGwnLFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogYWNjb3VudEluZm8udG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcblxuICAgICAgY29uc3QgTm9uQml0R29UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIE5vbkJpdEdvVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHJlcy5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgTm9uQml0R29UeG5Kc29uID0gTm9uQml0R29UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5zaWduZXJJZCwgYWNjb3VudEluZm8uYWNjb3VudElkKTtcbiAgICAgIHNob3VsZC5lcXVhbChOb25CaXRHb1R4bkpzb24ucHVibGljS2V5LCAnZWQyNTUxOTonICsgYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKE5vbkJpdEdvVHhuSnNvbi5hY3Rpb25zLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwoTm9uQml0R29UeG5Kc29uLmFjdGlvbnNbMF0/LmZ1bmN0aW9uQ2FsbD8ubWV0aG9kTmFtZSwgJ2Z0X3RyYW5zZmVyJyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoYmFzZWNvaW4uZ2V0RGF0YUZyb21Ob2RlLCA1KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBuZWFyIHRva2VuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzIHdpdGggc3RvcmFnZSBkZXBvc2l0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0VXBNb2NrKCk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IGtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGFjY291bnRJbmZvLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBhY2NvdW50SW5mby50b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciB0aGUgc3RydWN0dXJlIG9mIHRoZSByZXN1bHRcbiAgICAgIHNob3VsZC5leGlzdChyZXMpO1xuICAgICAgcmVzLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd1bnNpZ25lZFR4Jyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHRoZSB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jykud2hpY2guaXMuYS5TdHJpbmcoKTtcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NjYW5JbmRleCcsIDApO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pbicsICd0bmVhcjp0bmVwMjRkcCcpO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ3NpZ25hYmxlSGV4JyxcbiAgICAgICAgJ2JhOTAxYTY1NWJmZmYzNjgzYTM3YTcwYjdjYWYxYzkwYzdmOWMwMDdiMDljNmE5YmI3NDU0MGFjNjExYWVhYzAnXG4gICAgICApO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnLCAnbS8wJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHBhcnNlZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgcGFyc2VkVHggPSB1bnNpZ25lZFR4LnBhcnNlZFR4O1xuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lucHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgJ2YyNTYxOTZkYWU2MTdhYTM0ODE0OWMxZTYxZTk5NzI3MjQ5MjY2OGQ1MTc1MDZkN2E2ZTIzOTJlMDZlYTUzMmMnXG4gICAgICApO1xuICAgICAgcGFyc2VkVHguaW5wdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlJywgMy4yODk5OTM5NDdlMjQpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3V0cHV0cycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdhZGRyZXNzJywgYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbik7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd2YWx1ZVN0cmluZycsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5vdXRwdXRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luTmFtZScsICd0bmVhcjp0bmVwMjRkcCcpO1xuXG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3BlbmRBbW91bnQnLCAnMy4yODk5OTM5NDY5OTk5OTk5OTk5OTgxZSsyNCcpO1xuICAgICAgcGFyc2VkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R5cGUnLCAnJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIGZlZSBpbmZvXG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVJbmZvJyk7XG4gICAgICB1bnNpZ25lZFR4LmZlZUluZm8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZScsIDNlMjEpO1xuICAgICAgdW5zaWduZWRUeC5mZWVJbmZvLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnLCAnMzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG4gICAgICAvLyBBc3NlcnRpb25zIGZvciBjb2luLXNwZWNpZmljIGRhdGFcbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgdW5zaWduZWRUeC5jb2luU3BlY2lmaWMuc2hvdWxkLmhhdmUucHJvcGVydHkoXG4gICAgICAgICdjb21tb25LZXljaGFpbicsXG4gICAgICAgICc4Njk5ZDJlMDVkNjBhM2Y3YWI3MzNhNzRjY2Y3MDdmMzQwNzQ5NGI2MGY0MjUzNjE2MTg3ZjUyNjJlMjA3Mzc1MTlhMTc2M2RlMGJjYzRkMTY1YTdmYTBlNGRkZTY3YTE0MjZlYzRjYzlmY2QwODIwZDc0OWU2NTg5ZGNmYTA4ZSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVhciB0b2tlbiBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcmllcyB3aXRob3V0IHN0b3JhZ2UgZGVwb3NpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFVwTW9jayh0cnVlKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogYWNjb3VudEluZm8ucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFjY291bnRJbmZvLnRva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHJlc3VsdFxuICAgICAgc2hvdWxkLmV4aXN0KHJlcyk7XG4gICAgICByZXMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4UmVxdWVzdHMnKS53aGljaC5pcy5hbi5BcnJheSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpLndoaWNoLmlzLmFuLkFycmF5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Vuc2lnbmVkVHgnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzZXJpYWxpemVkVHgnKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2NhbkluZGV4JywgMCk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2luJywgJ3RuZWFyOnRuZXAyNGRwJyk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KFxuICAgICAgICAnc2lnbmFibGVIZXgnLFxuICAgICAgICAnMmQ1ZGEzMzQwYzMwOGJkMmZjZTFlMDgwNWI4OTBkNjNkODk0NmNmZjYxODE4YzA5NjBlODcyMDM5MTlmZmZjNydcbiAgICAgICk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcsICdtLzAnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBwYXJzZWRUeCA9IHVuc2lnbmVkVHgucGFyc2VkVHg7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaW5wdXRzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICAnZjI1NjE5NmRhZTYxN2FhMzQ4MTQ5YzFlNjFlOTk3MjcyNDkyNjY4ZDUxNzUwNmQ3YTZlMjM5MmUwNmVhNTMyYydcbiAgICAgICk7XG4gICAgICBwYXJzZWRUeC5pbnB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlU3RyaW5nJywgJzMuMjg5OTkzOTQ2OTk5OTk5OTk5OTk4MWUrMjQnKTtcbiAgICAgIHBhcnNlZFR4LmlucHV0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndmFsdWUnLCAzLjI4OTk5Mzk0N2UyNCk7XG5cbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdvdXRwdXRzJykud2hpY2guaXMuYW4uQXJyYXkoKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FkZHJlc3MnLCBhY2NvdW50SW5mby5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3ZhbHVlU3RyaW5nJywgJzMuMjg5OTkzOTQ2OTk5OTk5OTk5OTk4MWUrMjQnKTtcbiAgICAgIHBhcnNlZFR4Lm91dHB1dHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvaW5OYW1lJywgJ3RuZWFyOnRuZXAyNGRwJyk7XG5cbiAgICAgIHBhcnNlZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcGVuZEFtb3VudCcsICczLjI4OTk5Mzk0Njk5OTk5OTk5OTk5ODFlKzI0Jyk7XG4gICAgICBwYXJzZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHlwZScsICcnKTtcblxuICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgZmVlIGluZm9cbiAgICAgIHVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICAgIHVuc2lnbmVkVHguZmVlSW5mby5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJywgM2UyMSk7XG4gICAgICB1bnNpZ25lZFR4LmZlZUluZm8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZVN0cmluZycsICczMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIC8vIEFzc2VydGlvbnMgZm9yIGNvaW4tc3BlY2lmaWMgZGF0YVxuICAgICAgdW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29pblNwZWNpZmljJyk7XG4gICAgICB1bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcbiAgICAgICAgJ2NvbW1vbktleWNoYWluJyxcbiAgICAgICAgJzg2OTlkMmUwNWQ2MGEzZjdhYjczM2E3NGNjZjcwN2YzNDA3NDk0YjYwZjQyNTM2MTYxODdmNTI2MmUyMDczNzUxOWExNzYzZGUwYmNjNGQxNjVhN2ZhMGU0ZGRlNjdhMTQyNmVjNGNjOWZjZDA4MjBkNzQ5ZTY1ODlkY2ZhMDhlJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|