@bitgo-beta/sdk-api 1.10.1-beta.1790 → 1.10.1-beta.1792
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/package.json +8 -8
- package/dist/src/bitgoAPI.d.ts.map +1 -1
- package/dist/src/bitgoAPI.js +5 -6
- package/dist/src/encrypt.d.ts +10 -0
- package/dist/src/encrypt.d.ts.map +1 -1
- package/dist/src/encrypt.js +12 -1
- package/dist/src/v1/wallet.d.ts.map +1 -1
- package/dist/src/v1/wallet.js +19 -10
- package/dist/test/unit/encrypt.js +55 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -155,6 +155,60 @@ describe('encryption methods tests', () => {
|
|
|
155
155
|
await assert_1.default.rejects(() => (0, src_1.decryptV2)(password, JSON.stringify(envelope)), /invalid envelope/);
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
|
+
describe('encryptAsync (v1/v2 dispatch)', () => {
|
|
159
|
+
const password = 'myPassword';
|
|
160
|
+
const plaintext = 'Hello, World!';
|
|
161
|
+
it('dispatches to v1 by default and output is decryptable via decrypt', async () => {
|
|
162
|
+
const ct = await (0, src_1.encryptAsync)(password, plaintext);
|
|
163
|
+
const envelope = JSON.parse(ct);
|
|
164
|
+
assert_1.default.notStrictEqual(envelope.v, 2, 'default should not produce v2 envelope');
|
|
165
|
+
assert_1.default.strictEqual((0, src_1.decrypt)(password, ct), plaintext);
|
|
166
|
+
});
|
|
167
|
+
it('dispatches to v2 when encryptionVersion: 2', async () => {
|
|
168
|
+
const ct = await (0, src_1.encryptAsync)(password, plaintext, { encryptionVersion: 2 });
|
|
169
|
+
const envelope = JSON.parse(ct);
|
|
170
|
+
assert_1.default.strictEqual(envelope.v, 2);
|
|
171
|
+
const result = await (0, src_1.decryptAsync)(password, ct);
|
|
172
|
+
assert_1.default.strictEqual(result, plaintext);
|
|
173
|
+
});
|
|
174
|
+
it('dispatches to v1 when encryptionVersion: 1', async () => {
|
|
175
|
+
const ct = await (0, src_1.encryptAsync)(password, plaintext, { encryptionVersion: 1 });
|
|
176
|
+
const envelope = JSON.parse(ct);
|
|
177
|
+
assert_1.default.notStrictEqual(envelope.v, 2);
|
|
178
|
+
assert_1.default.strictEqual((0, src_1.decrypt)(password, ct), plaintext);
|
|
179
|
+
});
|
|
180
|
+
it('forwards adata to v2 envelope', async () => {
|
|
181
|
+
const adata = 'txhash:m/0/1';
|
|
182
|
+
const ct = await (0, src_1.encryptAsync)(password, plaintext, { encryptionVersion: 2, adata });
|
|
183
|
+
const envelope = JSON.parse(ct);
|
|
184
|
+
assert_1.default.strictEqual(envelope.adata, adata);
|
|
185
|
+
assert_1.default.strictEqual(await (0, src_1.decryptAsync)(password, ct), plaintext);
|
|
186
|
+
});
|
|
187
|
+
it('encrypts v1 with adata', async () => {
|
|
188
|
+
const adata = 'additional data';
|
|
189
|
+
const ct = await (0, src_1.encryptAsync)(password, plaintext, { adata });
|
|
190
|
+
assert_1.default.strictEqual((0, src_1.decrypt)(password, ct), plaintext);
|
|
191
|
+
});
|
|
192
|
+
it('returns different ciphertext for the same plaintext and password', async () => {
|
|
193
|
+
const ct1 = await (0, src_1.encryptAsync)(password, plaintext);
|
|
194
|
+
const ct2 = await (0, src_1.encryptAsync)(password, plaintext);
|
|
195
|
+
assert_1.default.notStrictEqual(ct1, ct2);
|
|
196
|
+
});
|
|
197
|
+
it('forwards salt and iv options to v1 encrypt for deterministic output', async () => {
|
|
198
|
+
const salt = (0, crypto_1.randomBytes)(8);
|
|
199
|
+
const iv = (0, crypto_1.randomBytes)(16);
|
|
200
|
+
const ct1 = await (0, src_1.encryptAsync)(password, plaintext, { salt, iv });
|
|
201
|
+
const ct2 = await (0, src_1.encryptAsync)(password, plaintext, { salt, iv });
|
|
202
|
+
assert_1.default.strictEqual(ct1, ct2);
|
|
203
|
+
assert_1.default.strictEqual((0, src_1.decrypt)(password, ct1), plaintext);
|
|
204
|
+
});
|
|
205
|
+
it('throws an error if the salt length is not 8 bytes', async () => {
|
|
206
|
+
await assert_1.default.rejects(() => (0, src_1.encryptAsync)(password, plaintext, { salt: (0, crypto_1.randomBytes)(4) }), /salt must be 8 bytes/);
|
|
207
|
+
});
|
|
208
|
+
it('throws an error if the iv length is not 16 bytes', async () => {
|
|
209
|
+
await assert_1.default.rejects(() => (0, src_1.encryptAsync)(password, plaintext, { iv: (0, crypto_1.randomBytes)(4) }), /iv must be 16 bytes/);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
158
212
|
describe('decryptAsync (auto-detect v1/v2)', () => {
|
|
159
213
|
const password = 'myPassword';
|
|
160
214
|
const plaintext = 'Hello, World!';
|
|
@@ -358,4 +412,4 @@ describe('encryption methods tests', () => {
|
|
|
358
412
|
});
|
|
359
413
|
});
|
|
360
414
|
});
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9lbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUFxQztBQUVyQyxtQ0FBc0g7QUFDdEgsaURBQThDO0FBRTlDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDdkIsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVoRCxJQUFBLGdCQUFNLEVBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEdBQUcsRUFBRTtZQUM1RSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFakQsSUFBQSxnQkFBTSxFQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7WUFDM0QsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUNsQyxNQUFNLE9B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QyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUYsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEYsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDL0QsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFN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QUU7UUFDaEQsSUFBSSxLQUFlLENBQUM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztRQUVsQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsS0FBSyxHQUFHLElBQUksbUJBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBkZWNyeXB0LCBkZWNyeXB0QXN5bmMsIGRlY3J5cHRWMiwgZW5jcnlwdCwgZW5jcnlwdFYyLCBWMkVudmVsb3BlLCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJy4uLy4uL3NyYy9iaXRnb0FQSSc7XG5cbmRlc2NyaWJlKCdlbmNyeXB0aW9uIG1ldGhvZHMgdGVzdHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdlbmNyeXB0JywgKCkgPT4ge1xuICAgIGl0KCdlbmNyeXB0cyB0aGUgcGxhaW50ZXh0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcblxuICAgICAgYXNzZXJ0KGNpcGhlcnRleHQgIT09IHBsYWludGV4dCwgJ2NpcGhlcnRleHQgc2hvdWxkIG5vdCBiZSBlcXVhbCB0byBwbGFpbnRleHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGEgZGlmZmVyZW50IGNpcGhlcnRleHQgZm9yIHRoZSBzYW1lIHBsYWludGV4dCBhbmQgcGFzc3dvcmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQxID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQyID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcblxuICAgICAgYXNzZXJ0KGNpcGhlcnRleHQxICE9PSBjaXBoZXJ0ZXh0MiwgJ2NpcGhlcnRleHRzIHNob3VsZCBub3QgYmUgZXF1YWwnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHNhbHQgbGVuZ3RoIGlzIG5vdCA4IGJ5dGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBvcHRpb25zID0geyBzYWx0OiByYW5kb21CeXRlcyg0KSB9O1xuXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGVuY3J5cHQocGFzc3dvcmQsIHBsYWludGV4dCwgb3B0aW9ucyksIG5ldyBFcnJvcihgc2FsdCBtdXN0IGJlIDggYnl0ZXNgKSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGFuIGVycm9yIGlmIHRoZSBpdiBsZW5ndGggaXMgbm90IDE2IGJ5dGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBvcHRpb25zID0geyBpdjogcmFuZG9tQnl0ZXMoNCkgfTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQsIG9wdGlvbnMpLCBuZXcgRXJyb3IoYGl2IG11c3QgYmUgMTYgYnl0ZXNgKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZWNyeXB0JywgKCkgPT4ge1xuICAgIGl0KCdkZWNyeXB0cyB0aGUgY2lwaGVydGV4dCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkID0gJ215UGFzc3dvcmQnO1xuICAgICAgY29uc3QgcGxhaW50ZXh0ID0gJ0hlbGxvLCBXb3JsZCEnO1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGVuY3J5cHQocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCBkZWNyeXB0ZWQgPSBkZWNyeXB0KHBhc3N3b3JkLCBjaXBoZXJ0ZXh0KTtcblxuICAgICAgYXNzZXJ0KGRlY3J5cHRlZCA9PT0gcGxhaW50ZXh0LCAnZGVjcnlwdGVkIHNob3VsZCBiZSBlcXVhbCB0byBwbGFpbnRleHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHBhc3N3b3JkIGlzIHdyb25nJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IHdyb25nUGFzc3dvcmQgPSAnd3JvbmdQYXNzd29yZCc7XG5cbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZGVjcnlwdCh3cm9uZ1Bhc3N3b3JkLCBjaXBoZXJ0ZXh0KSwgJ3NqY2wgZXhjZXB0aW9uOiBjYzogaW52YWxpZCBhZXMga2V5Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVjcnlwdHMgdGhlIGNpcGhlcnRleHQgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgYW5kIGFkYXRhJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBhZGF0YSA9ICdhZGRpdGlvbmFsIGRhdGEnO1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGVuY3J5cHQocGFzc3dvcmQsIHBsYWludGV4dCwgeyBhZGF0YSB9KTtcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGRlY3J5cHQocGFzc3dvcmQsIGNpcGhlcnRleHQpO1xuXG4gICAgICBhc3NlcnQoZGVjcnlwdGVkID09PSBwbGFpbnRleHQsICdkZWNyeXB0ZWQgc2hvdWxkIGJlIGVxdWFsIHRvIHBsYWludGV4dCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndjIgZW5jcnlwdC9kZWNyeXB0IChBcmdvbjJpZCArIEFFUy0yNTYtR0NNKScsICgpID0+IHtcbiAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG5cbiAgICBpdCgnZW5jcnlwdHMgYW5kIGRlY3J5cHRzIHJvdW5kLXRyaXAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdFYyKHBhc3N3b3JkLCBjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0ZWQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJvZHVjZXMgYSB2YWxpZCB2MiBlbnZlbG9wZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY2lwaGVydGV4dCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudiwgMik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUubSwgNjU1MzYpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudmVsb3BlLnQsIDMpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudmVsb3BlLnAsIDQpO1xuICAgICAgYXNzZXJ0Lm9rKGVudmVsb3BlLnNhbHQsICdlbnZlbG9wZSBtdXN0IGhhdmUgc2FsdCcpO1xuICAgICAgYXNzZXJ0Lm9rKGVudmVsb3BlLml2LCAnZW52ZWxvcGUgbXVzdCBoYXZlIGl2Jyk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuY3QsICdlbnZlbG9wZSBtdXN0IGhhdmUgY3QnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGRpZmZlcmVudCBjaXBoZXJ0ZXh0IGZvciB0aGUgc2FtZSBwbGFpbnRleHQgYW5kIHBhc3N3b3JkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3QxID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3QgY3QyID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGN0MSwgY3QyKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNyeXB0cyB3aXRoIGN1c3RvbSBBcmdvbjJpZCBwYXJhbWV0ZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0LCB7XG4gICAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICAgIGl0ZXJhdGlvbnM6IDEsXG4gICAgICAgIHBhcmFsbGVsaXNtOiAxLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY2lwaGVydGV4dCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUubSwgMTAyNCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudCwgMSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUucCwgMSk7XG5cbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHRWMihwYXNzd29yZCwgY2lwaGVydGV4dCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjcnlwdGVkLCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBvbiB3cm9uZyBwYXNzd29yZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIoJ3dyb25nUGFzc3dvcmQnLCBjaXBoZXJ0ZXh0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIGludmFsaWQgSlNPTicsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgJ25vdC1qc29uJyksIC9pbnZhbGlkIEpTT04gZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgb24gd3JvbmcgZW52ZWxvcGUgdmVyc2lvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoeyB2OiA5OSB9KSksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIGludmFsaWQgc2FsdCBsZW5ndGgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCwgeyBzYWx0OiBuZXcgVWludDhBcnJheSg4KSB9KSwgL3NhbHQgbXVzdCBiZSAxNiBieXRlcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBvbiBpbnZhbGlkIGl2IGxlbmd0aCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGl2OiBuZXcgVWludDhBcnJheSg4KSB9KSwgL2l2IG11c3QgYmUgMTIgYnl0ZXMvKTtcbiAgICB9KTtcblxuICAgIGl0KCdlbmNyeXB0cyBhbmQgZGVjcnlwdHMgd2l0aCBhZGF0YSAoQUFEKScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFkYXRhID0gJ3R4aGFzaDptLzAvMSc7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIHsgYWRhdGEgfSk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY2lwaGVydGV4dCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUuYWRhdGEsIGFkYXRhKTtcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHRWMihwYXNzd29yZCwgY2lwaGVydGV4dCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjcnlwdGVkLCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkYXRhIG1pc21hdGNoIGNhdXNlcyBHQ00gZGVjcnlwdGlvbiBmYWlsdXJlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGFkYXRhOiAnY29udGV4dC1BJyB9KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICAgIGVudmVsb3BlLmFkYXRhID0gJ2NvbnRleHQtQic7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIocGFzc3dvcmQsIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSksIC9vcGVyYXRpb24tc3BlY2lmaWMgcmVhc29ufGluY29ycmVjdC9pKTtcbiAgICB9KTtcblxuICAgIGl0KCd2MSBhbmQgdjIgYXJlIGluZGVwZW5kZW50ICh2MSBkYXRhIGRvZXMgbm90IGRlY3J5cHQgd2l0aCB2MiknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MWN0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgdjFjdCksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBlbnZlbG9wZSB3aXRoIG1lbW9yeVNpemUgZXhjZWVkaW5nIG1heCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiA5OTk5OTk5OTksIHQ6IDMsIHA6IDQsIHNhbHQ6ICdBQUFBJywgaXY6ICdBQUFBJywgY3Q6ICdBQUFBJyB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCBKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpLCAvaW52YWxpZCBlbnZlbG9wZS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZW52ZWxvcGUgd2l0aCBpdGVyYXRpb25zIGV4Y2VlZGluZyBtYXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbnZlbG9wZSA9IHsgdjogMiwgbTogNjU1MzYsIHQ6IDEwMCwgcDogNCwgc2FsdDogJ0FBQUEnLCBpdjogJ0FBQUEnLCBjdDogJ0FBQUEnIH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIocGFzc3dvcmQsIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBlbnZlbG9wZSB3aXRoIHBhcmFsbGVsaXNtIGV4Y2VlZGluZyBtYXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbnZlbG9wZSA9IHsgdjogMiwgbTogNjU1MzYsIHQ6IDMsIHA6IDEwMCwgc2FsdDogJ0FBQUEnLCBpdjogJ0FBQUEnLCBjdDogJ0FBQUEnIH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIocGFzc3dvcmQsIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBlbnZlbG9wZSB3aXRoIHplcm8tdmFsdWVkIHBhcmFtZXRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbnZlbG9wZSA9IHsgdjogMiwgbTogMCwgdDogMywgcDogNCwgc2FsdDogJ0FBQUEnLCBpdjogJ0FBQUEnLCBjdDogJ0FBQUEnIH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIocGFzc3dvcmQsIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBlbnZlbG9wZSB3aXRoIG5vbi1udW1lcmljIHBhcmFtZXRlciB0eXBlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiAnNjU1MzYnLCB0OiAzLCBwOiA0LCBzYWx0OiAnQUFBQScsIGl2OiAnQUFBQScsIGN0OiAnQUFBQScgfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVudmVsb3BlIHdpdGggZW1wdHkgc2FsdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiA2NTUzNiwgdDogMywgcDogNCwgc2FsdDogJycsIGl2OiAnQUFBQScsIGN0OiAnQUFBQScgfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RlY3J5cHRBc3luYyAoYXV0by1kZXRlY3QgdjEvdjIpJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gJ215UGFzc3dvcmQnO1xuICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcblxuICAgIGl0KCdkZWNyeXB0cyB2MSBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdjFjdCA9IGVuY3J5cHQocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZWNyeXB0QXN5bmMocGFzc3dvcmQsIHYxY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNyeXB0cyB2MiBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdjJjdCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgdjJjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBvbiB3cm9uZyBwYXNzd29yZCBmb3IgdjEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MWN0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRBc3luYygnd3JvbmcnLCB2MWN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIHdyb25nIHBhc3N3b3JkIGZvciB2MicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHYyY3QgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0QXN5bmMoJ3dyb25nJywgdjJjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBvbiBpbnZhbGlkIEpTT04gaW5wdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0QXN5bmMocGFzc3dvcmQsICdub3QtanNvbicpLCAvY2lwaGVydGV4dCBpcyBub3QgdmFsaWQgSlNPTi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3dyb25nIHBhc3N3b3JkIG9uIHYyIGRhdGEgZG9lcyBub3QgZmFsbCB0aHJvdWdoIHRvIHYxIGRlY3J5cHQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MmN0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIHsgbWVtb3J5U2l6ZTogMTAyNCwgaXRlcmF0aW9uczogMSwgcGFyYWxsZWxpc206IDEgfSk7XG4gICAgICBsZXQgY2F1Z2h0RXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZGVjcnlwdEFzeW5jKCd3cm9uZycsIHYyY3QpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYXVnaHRFcnJvciA9IGUgYXMgRXJyb3I7XG4gICAgICB9XG4gICAgICBhc3NlcnQub2soY2F1Z2h0RXJyb3IsICdzaG91bGQgaGF2ZSB0aHJvd24nKTtcbiAgICAgIGFzc2VydC5vayghY2F1Z2h0RXJyb3IubWVzc2FnZT8uaW5jbHVkZXMoJ3NqY2wnKSwgJ2Vycm9yIG11c3Qgbm90IGJlIGZyb20gU0pDTCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRW5jcnlwdGlvblNlc3Npb24gKEhLREYgY2FjaGluZyknLCAoKSA9PiB7XG4gICAgY29uc3Qgb3B0cyA9IHsgbWVtb3J5U2l6ZTogMTAyNCwgaXRlcmF0aW9uczogMSwgcGFyYWxsZWxpc206IDEgfTtcbiAgICBjb25zdCBwYXNzd29yZCA9ICd0ZXN0LXBhc3N3b3JkJztcbiAgICBjb25zdCBwbGFpbnRleHQgPSAnaGVsbG8gc2Vzc2lvbic7XG5cbiAgICBpdCgnc2Vzc2lvbi1wcm9kdWNlZCBlbnZlbG9wZSBjb250YWlucyBzYWx0IGFuZCBoa2RmU2FsdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG5cbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudiwgMik7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuc2FsdCwgJ211c3QgaGF2ZSBhcmdvbjIgc2FsdCcpO1xuICAgICAgYXNzZXJ0Lm9rKGVudmVsb3BlLmhrZGZTYWx0LCAnbXVzdCBoYXZlIGhrZGYgc2FsdCcpO1xuICAgICAgYXNzZXJ0Lm9rKGVudmVsb3BlLml2LCAnbXVzdCBoYXZlIGl2Jyk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuY3QsICdtdXN0IGhhdmUgY2lwaGVydGV4dCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gcm91bmQtdHJpcCB2aWEgc2Vzc2lvbi5kZWNyeXB0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLmRlY3J5cHQoY3QpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gZW52ZWxvcGUgY2FuIGJlIGRlY3J5cHRlZCBzdGFuZGFsb25lIHZpYSBkZWNyeXB0VjInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdFYyKHBhc3N3b3JkLCBjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gZW52ZWxvcGUgY2FuIGJlIGRlY3J5cHRlZCB2aWEgZGVjcnlwdEFzeW5jJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdtdWx0aXBsZSBlbmNyeXB0cyBwcm9kdWNlIGRpZmZlcmVudCBoa2RmU2FsdCB2YWx1ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QxID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBjb25zdCBjdDIgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgZTE6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0MSk7XG4gICAgICBjb25zdCBlMjogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QyKTtcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChlMS5oa2RmU2FsdCwgZTIuaGtkZlNhbHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FsbCBzZXNzaW9uIGVuY3J5cHRzIHNoYXJlIHRoZSBzYW1lIGFyZ29uMiBzYWx0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0MSA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQpO1xuICAgICAgY29uc3QgY3QyID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGNvbnN0IGUxOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdDEpO1xuICAgICAgY29uc3QgZTI6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0Mik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZTEuc2FsdCwgZTIuc2FsdCk7XG4gICAgfSk7XG5cbiAgICBpdCgnd3JvbmcgcGFzc3dvcmQgcmVqZWN0ZWQgYnkgZGVjcnlwdFYyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMignd3JvbmctcGFzc3dvcmQnLCBjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rlc3Ryb3kgcHJldmVudHMgZnVydGhlciBlbmNyeXB0IGNhbGxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCksIC9kZXN0cm95ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXN0cm95IHByZXZlbnRzIGZ1cnRoZXIgZGVjcnlwdCBjYWxscycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uLmRlY3J5cHQoY3QpLCAvZGVzdHJveWVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiByZWplY3RzIGVudmVsb3BlcyBmcm9tIGEgZGlmZmVyZW50IHNlc3Npb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uMSA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IHNlc3Npb24yID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uMS5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uMi5kZWNyeXB0KGN0KSwgL25vdCBlbmNyeXB0ZWQgd2l0aCB0aGlzIHNlc3Npb24vKTtcbiAgICAgIHNlc3Npb24xLmRlc3Ryb3koKTtcbiAgICAgIHNlc3Npb24yLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXNzaW9uIGVuY3J5cHQgd2l0aCBhZGF0YSByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGFkYXRhID0gJ3R4aGFzaDptLzAvMTpyb3VuZDEnO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0LCBhZGF0YSk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudmVsb3BlLmFkYXRhLCBhZGF0YSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLmRlY3J5cHQoY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gZW5jcnlwdCB3aXRoIGFkYXRhIGlzIGRlY3J5cHRhYmxlIHZpYSBkZWNyeXB0VjInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0LCAnY29udGV4dC1iaW5kaW5nJyk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRWMihwYXNzd29yZCwgY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXNzaW9uIGFkYXRhIG1pc21hdGNoIGNhdXNlcyBHQ00gZmFpbHVyZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQsICdvcmlnaW5hbC1jb250ZXh0Jyk7XG4gICAgICBjb25zdCBlbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QpO1xuICAgICAgZW52ZWxvcGUuYWRhdGEgPSAndGFtcGVyZWQtY29udGV4dCc7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uLmRlY3J5cHQoSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL29wZXJhdGlvbi1zcGVjaWZpYyByZWFzb258aW5jb3JyZWN0L2kpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiByZWplY3RzIHN0YW5kYXJkIHYyIGVudmVsb3BlcyAobm8gaGtkZlNhbHQpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdjJjdCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0LCBvcHRzKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uLmRlY3J5cHQodjJjdCksIC91c2UgZGVjcnlwdFYyLyk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIGl0KCdBcmdvbjJpZCBwYXJhbXMgYXJlIHN0b3JlZCBpbiBlbnZlbG9wZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgeyBtZW1vcnlTaXplOiAyMDQ4LCBpdGVyYXRpb25zOiAyLCBwYXJhbGxlbGlzbTogMiB9KTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUubSwgMjA0OCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudCwgMik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUucCwgMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCaXRHb0FQSS5lbmNyeXB0QXN5bmMnLCAoKSA9PiB7XG4gICAgbGV0IGJpdGdvOiBCaXRHb0FQSTtcbiAgICBjb25zdCBwYXNzd29yZCA9ICd0ZXN0LXBhc3N3b3JkJztcbiAgICBjb25zdCBwbGFpbnRleHQgPSAnaGVsbG8gZW5jcnlwdEFzeW5jJztcblxuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rpc3BhdGNoZXMgdG8gdjEgYnkgZGVmYXVsdCBhbmQgb3V0cHV0IGlzIGRlY3J5cHRhYmxlIHZpYSBkZWNyeXB0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBiaXRnby5lbmNyeXB0QXN5bmMoeyBpbnB1dDogcGxhaW50ZXh0LCBwYXNzd29yZCB9KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoZW52ZWxvcGUudiwgMiwgJ2RlZmF1bHQgc2hvdWxkIG5vdCBwcm9kdWNlIHYyIGVudmVsb3BlJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjcnlwdChwYXNzd29yZCwgY3QpLCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rpc3BhdGNoZXMgdG8gdjIgd2hlbiBlbmNyeXB0aW9uVmVyc2lvbjogMiBhbmQgb3V0cHV0IGlzIGRlY3J5cHRhYmxlIHZpYSBkZWNyeXB0QXN5bmMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGJpdGdvLmVuY3J5cHRBc3luYyh7IGlucHV0OiBwbGFpbnRleHQsIHBhc3N3b3JkLCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudiwgMik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZWNyeXB0QXN5bmMocGFzc3dvcmQsIGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZm9yd2FyZHMgYWRhdGEgdG8gdjIgZW52ZWxvcGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhZGF0YSA9ICd0eGhhc2g6bS8wLzEnO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBiaXRnby5lbmNyeXB0QXN5bmMoeyBpbnB1dDogcGxhaW50ZXh0LCBwYXNzd29yZCwgZW5jcnlwdGlvblZlcnNpb246IDIsIGFkYXRhIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5hZGF0YSwgYWRhdGEpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdEFzeW5jKHBhc3N3b3JkLCBjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQml0R29BUEkuY3JlYXRlRW5jcnlwdGlvblNlc3Npb24nLCAoKSA9PiB7XG4gICAgbGV0IGJpdGdvOiBCaXRHb0FQSTtcbiAgICBjb25zdCBwYXNzd29yZCA9ICd0ZXN0LXBhc3N3b3JkJztcbiAgICBjb25zdCBwbGFpbnRleHQgPSAnaGVsbG8gc2Vzc2lvbic7XG5cbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgYml0Z28gPSBuZXcgQml0R29BUEkoeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHdvcmtpbmcgc2Vzc2lvbiAoZW5jcnlwdC9kZWNyeXB0L2Rlc3Ryb3kpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGJpdGdvLmNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLmRlY3J5cHQoY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCksIC9kZXN0cm95ZWQvKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9lbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUFxQztBQUVyQyxtQ0FTbUI7QUFDbkIsaURBQThDO0FBRTlDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDdkIsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVoRCxJQUFBLGdCQUFNLEVBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEdBQUcsRUFBRTtZQUM1RSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFakQsSUFBQSxnQkFBTSxFQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7WUFDM0QsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFBLG9CQUFXLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUV6QyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7WUFDMUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFBLG9CQUFXLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUV2QyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDdkIsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFaEQsSUFBQSxnQkFBTSxFQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7WUFDbEQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFBLGFBQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDaEQsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO1lBRXRDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsYUFBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtZQUNuRSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE1BQU0sU0FBUyxHQUFHLElBQUEsYUFBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUVoRCxJQUFBLGdCQUFNLEVBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxFQUFFO1FBQzNELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQztRQUM5QixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7UUFFbEMsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM1QyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsZUFBUyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RCxNQUFNLFFBQVEsR0FBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELGdCQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0QyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLGdCQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3BELGdCQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDaEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakQsZ0JBQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRTtnQkFDdEQsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFdBQVcsRUFBRSxDQUFDO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQWUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JDLGdCQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVsQyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsZUFBUyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEQsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0QyxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsZUFBUyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDakcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0JBQStCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0MsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ25ILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzNDLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7WUFDN0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsR0FBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELGdCQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsUUFBUSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7WUFDN0IsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLHNDQUFzQyxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUUsTUFBTSxJQUFJLEdBQUcsSUFBQSxhQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxlQUFTLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUYsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEYsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDL0QsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFN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QkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHtcbiAgZGVjcnlwdCxcbiAgZGVjcnlwdEFzeW5jLFxuICBkZWNyeXB0VjIsXG4gIGVuY3J5cHQsXG4gIGVuY3J5cHRBc3luYyxcbiAgZW5jcnlwdFYyLFxuICBWMkVudmVsb3BlLFxuICBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbixcbn0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi4vLi4vc3JjL2JpdGdvQVBJJztcblxuZGVzY3JpYmUoJ2VuY3J5cHRpb24gbWV0aG9kcyB0ZXN0cycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2VuY3J5cHQnLCAoKSA9PiB7XG4gICAgaXQoJ2VuY3J5cHRzIHRoZSBwbGFpbnRleHQgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuXG4gICAgICBhc3NlcnQoY2lwaGVydGV4dCAhPT0gcGxhaW50ZXh0LCAnY2lwaGVydGV4dCBzaG91bGQgbm90IGJlIGVxdWFsIHRvIHBsYWludGV4dCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYSBkaWZmZXJlbnQgY2lwaGVydGV4dCBmb3IgdGhlIHNhbWUgcGxhaW50ZXh0IGFuZCBwYXNzd29yZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkID0gJ215UGFzc3dvcmQnO1xuICAgICAgY29uc3QgcGxhaW50ZXh0ID0gJ0hlbGxvLCBXb3JsZCEnO1xuICAgICAgY29uc3QgY2lwaGVydGV4dDEgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3QgY2lwaGVydGV4dDIgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuXG4gICAgICBhc3NlcnQoY2lwaGVydGV4dDEgIT09IGNpcGhlcnRleHQyLCAnY2lwaGVydGV4dHMgc2hvdWxkIG5vdCBiZSBlcXVhbCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBhbiBlcnJvciBpZiB0aGUgc2FsdCBsZW5ndGggaXMgbm90IDggYnl0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHNhbHQ6IHJhbmRvbUJ5dGVzKDQpIH07XG5cbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0LCBvcHRpb25zKSwgbmV3IEVycm9yKGBzYWx0IG11c3QgYmUgOCBieXRlc2ApKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGl2IGxlbmd0aCBpcyBub3QgMTYgYnl0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGl2OiByYW5kb21CeXRlcyg0KSB9O1xuXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGVuY3J5cHQocGFzc3dvcmQsIHBsYWludGV4dCwgb3B0aW9ucyksIG5ldyBFcnJvcihgaXYgbXVzdCBiZSAxNiBieXRlc2ApKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RlY3J5cHQnLCAoKSA9PiB7XG4gICAgaXQoJ2RlY3J5cHRzIHRoZSBjaXBoZXJ0ZXh0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgICBjb25zdCBwbGFpbnRleHQgPSAnSGVsbG8sIFdvcmxkISc7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGRlY3J5cHQocGFzc3dvcmQsIGNpcGhlcnRleHQpO1xuXG4gICAgICBhc3NlcnQoZGVjcnlwdGVkID09PSBwbGFpbnRleHQsICdkZWNyeXB0ZWQgc2hvdWxkIGJlIGVxdWFsIHRvIHBsYWludGV4dCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBhbiBlcnJvciBpZiB0aGUgcGFzc3dvcmQgaXMgd3JvbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3Qgd3JvbmdQYXNzd29yZCA9ICd3cm9uZ1Bhc3N3b3JkJztcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBkZWNyeXB0KHdyb25nUGFzc3dvcmQsIGNpcGhlcnRleHQpLCAnc2pjbCBleGNlcHRpb246IGNjOiBpbnZhbGlkIGFlcyBrZXknKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNyeXB0cyB0aGUgY2lwaGVydGV4dCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCBhbmQgYWRhdGEnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9ICdteVBhc3N3b3JkJztcbiAgICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcbiAgICAgIGNvbnN0IGFkYXRhID0gJ2FkZGl0aW9uYWwgZGF0YSc7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGFkYXRhIH0pO1xuICAgICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdChwYXNzd29yZCwgY2lwaGVydGV4dCk7XG5cbiAgICAgIGFzc2VydChkZWNyeXB0ZWQgPT09IHBsYWludGV4dCwgJ2RlY3J5cHRlZCBzaG91bGQgYmUgZXF1YWwgdG8gcGxhaW50ZXh0Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2MiBlbmNyeXB0L2RlY3J5cHQgKEFyZ29uMmlkICsgQUVTLTI1Ni1HQ00pJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gJ215UGFzc3dvcmQnO1xuICAgIGNvbnN0IHBsYWludGV4dCA9ICdIZWxsbywgV29ybGQhJztcblxuICAgIGl0KCdlbmNyeXB0cyBhbmQgZGVjcnlwdHMgcm91bmQtdHJpcCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCBkZWNyeXB0VjIocGFzc3dvcmQsIGNpcGhlcnRleHQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY3J5cHRlZCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdwcm9kdWNlcyBhIHZhbGlkIHYyIGVudmVsb3BlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5tLCA2NTUzNik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUudCwgMyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUucCwgNCk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuc2FsdCwgJ2VudmVsb3BlIG11c3QgaGF2ZSBzYWx0Jyk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuaXYsICdlbnZlbG9wZSBtdXN0IGhhdmUgaXYnKTtcbiAgICAgIGFzc2VydC5vayhlbnZlbG9wZS5jdCwgJ2VudmVsb3BlIG11c3QgaGF2ZSBjdCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgZGlmZmVyZW50IGNpcGhlcnRleHQgZm9yIHRoZSBzYW1lIHBsYWludGV4dCBhbmQgcGFzc3dvcmQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdDEgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCBjdDIgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoY3QxLCBjdDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RlY3J5cHRzIHdpdGggY3VzdG9tIEFyZ29uMmlkIHBhcmFtZXRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIHtcbiAgICAgICAgbWVtb3J5U2l6ZTogMTAyNCxcbiAgICAgICAgaXRlcmF0aW9uczogMSxcbiAgICAgICAgcGFyYWxsZWxpc206IDEsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5tLCAxMDI0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS50LCAxKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5wLCAxKTtcblxuICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdFYyKHBhc3N3b3JkLCBjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0ZWQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIHdyb25nIHBhc3N3b3JkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMignd3JvbmdQYXNzd29yZCcsIGNpcGhlcnRleHQpKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgb24gaW52YWxpZCBKU09OJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCAnbm90LWpzb24nKSwgL2ludmFsaWQgSlNPTiBlbnZlbG9wZS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBvbiB3cm9uZyBlbnZlbG9wZSB2ZXJzaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCBKU09OLnN0cmluZ2lmeSh7IHY6IDk5IH0pKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgb24gaW52YWxpZCBzYWx0IGxlbmd0aCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0LCB7IHNhbHQ6IG5ldyBVaW50OEFycmF5KDgpIH0pLCAvc2FsdCBtdXN0IGJlIDE2IGJ5dGVzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIGludmFsaWQgaXYgbGVuZ3RoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIHsgaXY6IG5ldyBVaW50OEFycmF5KDgpIH0pLCAvaXYgbXVzdCBiZSAxMiBieXRlcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VuY3J5cHRzIGFuZCBkZWNyeXB0cyB3aXRoIGFkYXRhIChBQUQpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYWRhdGEgPSAndHhoYXNoOm0vMC8xJztcbiAgICAgIGNvbnN0IGNpcGhlcnRleHQgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCwgeyBhZGF0YSB9KTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5hZGF0YSwgYWRhdGEpO1xuICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdFYyKHBhc3N3b3JkLCBjaXBoZXJ0ZXh0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0ZWQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRhdGEgbWlzbWF0Y2ggY2F1c2VzIEdDTSBkZWNyeXB0aW9uIGZhaWx1cmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIHsgYWRhdGE6ICdjb250ZXh0LUEnIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKGNpcGhlcnRleHQpO1xuICAgICAgZW52ZWxvcGUuYWRhdGEgPSAnY29udGV4dC1CJztcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL29wZXJhdGlvbi1zcGVjaWZpYyByZWFzb258aW5jb3JyZWN0L2kpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3YxIGFuZCB2MiBhcmUgaW5kZXBlbmRlbnQgKHYxIGRhdGEgZG9lcyBub3QgZGVjcnlwdCB3aXRoIHYyKScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHYxY3QgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCB2MWN0KSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVudmVsb3BlIHdpdGggbWVtb3J5U2l6ZSBleGNlZWRpbmcgbWF4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSB7IHY6IDIsIG06IDk5OTk5OTk5OSwgdDogMywgcDogNCwgc2FsdDogJ0FBQUEnLCBpdjogJ0FBQUEnLCBjdDogJ0FBQUEnIH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBkZWNyeXB0VjIocGFzc3dvcmQsIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSksIC9pbnZhbGlkIGVudmVsb3BlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBlbnZlbG9wZSB3aXRoIGl0ZXJhdGlvbnMgZXhjZWVkaW5nIG1heCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiA2NTUzNiwgdDogMTAwLCBwOiA0LCBzYWx0OiAnQUFBQScsIGl2OiAnQUFBQScsIGN0OiAnQUFBQScgfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVudmVsb3BlIHdpdGggcGFyYWxsZWxpc20gZXhjZWVkaW5nIG1heCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiA2NTUzNiwgdDogMywgcDogMTAwLCBzYWx0OiAnQUFBQScsIGl2OiAnQUFBQScsIGN0OiAnQUFBQScgfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVudmVsb3BlIHdpdGggemVyby12YWx1ZWQgcGFyYW1ldGVycycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0geyB2OiAyLCBtOiAwLCB0OiAzLCBwOiA0LCBzYWx0OiAnQUFBQScsIGl2OiAnQUFBQScsIGN0OiAnQUFBQScgfTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRWMihwYXNzd29yZCwgSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpKSwgL2ludmFsaWQgZW52ZWxvcGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVudmVsb3BlIHdpdGggbm9uLW51bWVyaWMgcGFyYW1ldGVyIHR5cGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSB7IHY6IDIsIG06ICc2NTUzNicsIHQ6IDMsIHA6IDQsIHNhbHQ6ICdBQUFBJywgaXY6ICdBQUFBJywgY3Q6ICdBQUFBJyB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCBKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpLCAvaW52YWxpZCBlbnZlbG9wZS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZW52ZWxvcGUgd2l0aCBlbXB0eSBzYWx0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSB7IHY6IDIsIG06IDY1NTM2LCB0OiAzLCBwOiA0LCBzYWx0OiAnJywgaXY6ICdBQUFBJywgY3Q6ICdBQUFBJyB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKHBhc3N3b3JkLCBKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpLCAvaW52YWxpZCBlbnZlbG9wZS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZW5jcnlwdEFzeW5jICh2MS92MiBkaXNwYXRjaCknLCAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgY29uc3QgcGxhaW50ZXh0ID0gJ0hlbGxvLCBXb3JsZCEnO1xuXG4gICAgaXQoJ2Rpc3BhdGNoZXMgdG8gdjEgYnkgZGVmYXVsdCBhbmQgb3V0cHV0IGlzIGRlY3J5cHRhYmxlIHZpYSBkZWNyeXB0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBlbmNyeXB0QXN5bmMocGFzc3dvcmQsIHBsYWludGV4dCk7XG4gICAgICBjb25zdCBlbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QpO1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGVudmVsb3BlLnYsIDIsICdkZWZhdWx0IHNob3VsZCBub3QgcHJvZHVjZSB2MiBlbnZlbG9wZScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY3J5cHQocGFzc3dvcmQsIGN0KSwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdkaXNwYXRjaGVzIHRvIHYyIHdoZW4gZW5jcnlwdGlvblZlcnNpb246IDInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGVuY3J5cHRBc3luYyhwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGVuY3J5cHRpb25WZXJzaW9uOiAyIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdkaXNwYXRjaGVzIHRvIHYxIHdoZW4gZW5jcnlwdGlvblZlcnNpb246IDEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGVuY3J5cHRBc3luYyhwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGVuY3J5cHRpb25WZXJzaW9uOiAxIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0KHBhc3N3b3JkLCBjdCksIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZm9yd2FyZHMgYWRhdGEgdG8gdjIgZW52ZWxvcGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhZGF0YSA9ICd0eGhhc2g6bS8wLzEnO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBlbmNyeXB0QXN5bmMocGFzc3dvcmQsIHBsYWludGV4dCwgeyBlbmNyeXB0aW9uVmVyc2lvbjogMiwgYWRhdGEgfSk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudmVsb3BlLmFkYXRhLCBhZGF0YSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgZGVjcnlwdEFzeW5jKHBhc3N3b3JkLCBjdCksIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZW5jcnlwdHMgdjEgd2l0aCBhZGF0YScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFkYXRhID0gJ2FkZGl0aW9uYWwgZGF0YSc7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGVuY3J5cHRBc3luYyhwYXNzd29yZCwgcGxhaW50ZXh0LCB7IGFkYXRhIH0pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY3J5cHQocGFzc3dvcmQsIGN0KSwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGRpZmZlcmVudCBjaXBoZXJ0ZXh0IGZvciB0aGUgc2FtZSBwbGFpbnRleHQgYW5kIHBhc3N3b3JkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3QxID0gYXdhaXQgZW5jcnlwdEFzeW5jKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3QgY3QyID0gYXdhaXQgZW5jcnlwdEFzeW5jKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGN0MSwgY3QyKTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3J3YXJkcyBzYWx0IGFuZCBpdiBvcHRpb25zIHRvIHYxIGVuY3J5cHQgZm9yIGRldGVybWluaXN0aWMgb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2FsdCA9IHJhbmRvbUJ5dGVzKDgpO1xuICAgICAgY29uc3QgaXYgPSByYW5kb21CeXRlcygxNik7XG4gICAgICBjb25zdCBjdDEgPSBhd2FpdCBlbmNyeXB0QXN5bmMocGFzc3dvcmQsIHBsYWludGV4dCwgeyBzYWx0LCBpdiB9KTtcbiAgICAgIGNvbnN0IGN0MiA9IGF3YWl0IGVuY3J5cHRBc3luYyhwYXNzd29yZCwgcGxhaW50ZXh0LCB7IHNhbHQsIGl2IH0pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGN0MSwgY3QyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0KHBhc3N3b3JkLCBjdDEpLCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBhbiBlcnJvciBpZiB0aGUgc2FsdCBsZW5ndGggaXMgbm90IDggYnl0ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBlbmNyeXB0QXN5bmMocGFzc3dvcmQsIHBsYWludGV4dCwgeyBzYWx0OiByYW5kb21CeXRlcyg0KSB9KSwgL3NhbHQgbXVzdCBiZSA4IGJ5dGVzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGFuIGVycm9yIGlmIHRoZSBpdiBsZW5ndGggaXMgbm90IDE2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZW5jcnlwdEFzeW5jKHBhc3N3b3JkLCBwbGFpbnRleHQsIHsgaXY6IHJhbmRvbUJ5dGVzKDQpIH0pLCAvaXYgbXVzdCBiZSAxNiBieXRlcy8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVjcnlwdEFzeW5jIChhdXRvLWRldGVjdCB2MS92MiknLCAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSAnbXlQYXNzd29yZCc7XG4gICAgY29uc3QgcGxhaW50ZXh0ID0gJ0hlbGxvLCBXb3JsZCEnO1xuXG4gICAgaXQoJ2RlY3J5cHRzIHYxIGRhdGEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MWN0ID0gZW5jcnlwdChwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgdjFjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RlY3J5cHRzIHYyIGRhdGEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MmN0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdEFzeW5jKHBhc3N3b3JkLCB2MmN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIHdyb25nIHBhc3N3b3JkIGZvciB2MScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHYxY3QgPSBlbmNyeXB0KHBhc3N3b3JkLCBwbGFpbnRleHQpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdEFzeW5jKCd3cm9uZycsIHYxY3QpKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgb24gd3JvbmcgcGFzc3dvcmQgZm9yIHYyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdjJjdCA9IGF3YWl0IGVuY3J5cHRWMihwYXNzd29yZCwgcGxhaW50ZXh0KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRBc3luYygnd3JvbmcnLCB2MmN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIG9uIGludmFsaWQgSlNPTiBpbnB1dCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgJ25vdC1qc29uJyksIC9jaXBoZXJ0ZXh0IGlzIG5vdCB2YWxpZCBKU09OLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnd3JvbmcgcGFzc3dvcmQgb24gdjIgZGF0YSBkb2VzIG5vdCBmYWxsIHRocm91Z2ggdG8gdjEgZGVjcnlwdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHYyY3QgPSBhd2FpdCBlbmNyeXB0VjIocGFzc3dvcmQsIHBsYWludGV4dCwgeyBtZW1vcnlTaXplOiAxMDI0LCBpdGVyYXRpb25zOiAxLCBwYXJhbGxlbGlzbTogMSB9KTtcbiAgICAgIGxldCBjYXVnaHRFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBkZWNyeXB0QXN5bmMoJ3dyb25nJywgdjJjdCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhdWdodEVycm9yID0gZSBhcyBFcnJvcjtcbiAgICAgIH1cbiAgICAgIGFzc2VydC5vayhjYXVnaHRFcnJvciwgJ3Nob3VsZCBoYXZlIHRocm93bicpO1xuICAgICAgYXNzZXJ0Lm9rKCFjYXVnaHRFcnJvci5tZXNzYWdlPy5pbmNsdWRlcygnc2pjbCcpLCAnZXJyb3IgbXVzdCBub3QgYmUgZnJvbSBTSkNMJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFbmNyeXB0aW9uU2Vzc2lvbiAoSEtERiBjYWNoaW5nKScsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0geyBtZW1vcnlTaXplOiAxMDI0LCBpdGVyYXRpb25zOiAxLCBwYXJhbGxlbGlzbTogMSB9O1xuICAgIGNvbnN0IHBhc3N3b3JkID0gJ3Rlc3QtcGFzc3dvcmQnO1xuICAgIGNvbnN0IHBsYWludGV4dCA9ICdoZWxsbyBzZXNzaW9uJztcblxuICAgIGl0KCdzZXNzaW9uLXByb2R1Y2VkIGVudmVsb3BlIGNvbnRhaW5zIHNhbHQgYW5kIGhrZGZTYWx0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcblxuICAgICAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyKTtcbiAgICAgIGFzc2VydC5vayhlbnZlbG9wZS5zYWx0LCAnbXVzdCBoYXZlIGFyZ29uMiBzYWx0Jyk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuaGtkZlNhbHQsICdtdXN0IGhhdmUgaGtkZiBzYWx0Jyk7XG4gICAgICBhc3NlcnQub2soZW52ZWxvcGUuaXYsICdtdXN0IGhhdmUgaXYnKTtcbiAgICAgIGFzc2VydC5vayhlbnZlbG9wZS5jdCwgJ211c3QgaGF2ZSBjaXBoZXJ0ZXh0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiByb3VuZC10cmlwIHZpYSBzZXNzaW9uLmRlY3J5cHQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb24uZGVjcnlwdChjdCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiBlbnZlbG9wZSBjYW4gYmUgZGVjcnlwdGVkIHN0YW5kYWxvbmUgdmlhIGRlY3J5cHRWMicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZWNyeXB0VjIocGFzc3dvcmQsIGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiBlbnZlbG9wZSBjYW4gYmUgZGVjcnlwdGVkIHZpYSBkZWNyeXB0QXN5bmMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdEFzeW5jKHBhc3N3b3JkLCBjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ211bHRpcGxlIGVuY3J5cHRzIHByb2R1Y2UgZGlmZmVyZW50IGhrZGZTYWx0IHZhbHVlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdDEgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IGN0MiA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBjb25zdCBlMTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QxKTtcbiAgICAgIGNvbnN0IGUyOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdDIpO1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGUxLmhrZGZTYWx0LCBlMi5oa2RmU2FsdCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWxsIHNlc3Npb24gZW5jcnlwdHMgc2hhcmUgdGhlIHNhbWUgYXJnb24yIHNhbHQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QxID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBjb25zdCBjdDIgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgZTE6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0MSk7XG4gICAgICBjb25zdCBlMjogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlMS5zYWx0LCBlMi5zYWx0KTtcbiAgICB9KTtcblxuICAgIGl0KCd3cm9uZyBwYXNzd29yZCByZWplY3RlZCBieSBkZWNyeXB0VjInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoKCkgPT4gZGVjcnlwdFYyKCd3cm9uZy1wYXNzd29yZCcsIGN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVzdHJveSBwcmV2ZW50cyBmdXJ0aGVyIGVuY3J5cHQgY2FsbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KSwgL2Rlc3Ryb3llZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rlc3Ryb3kgcHJldmVudHMgZnVydGhlciBkZWNyeXB0IGNhbGxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IHNlc3Npb24uZGVjcnlwdChjdCksIC9kZXN0cm95ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXNzaW9uIHJlamVjdHMgZW52ZWxvcGVzIGZyb20gYSBkaWZmZXJlbnQgc2Vzc2lvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24xID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3Qgc2Vzc2lvbjIgPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24xLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IHNlc3Npb24yLmRlY3J5cHQoY3QpLCAvbm90IGVuY3J5cHRlZCB3aXRoIHRoaXMgc2Vzc2lvbi8pO1xuICAgICAgc2Vzc2lvbjEuZGVzdHJveSgpO1xuICAgICAgc2Vzc2lvbjIuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gZW5jcnlwdCB3aXRoIGFkYXRhIHJvdW5kLXRyaXAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQsIG9wdHMpO1xuICAgICAgY29uc3QgYWRhdGEgPSAndHhoYXNoOm0vMC8xOnJvdW5kMSc7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQsIGFkYXRhKTtcbiAgICAgIGNvbnN0IGVudmVsb3BlOiBWMkVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW52ZWxvcGUuYWRhdGEsIGFkYXRhKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb24uZGVjcnlwdChjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2Vzc2lvbiBlbmNyeXB0IHdpdGggYWRhdGEgaXMgZGVjcnlwdGFibGUgdmlhIGRlY3J5cHRWMicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCwgb3B0cyk7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IHNlc3Npb24uZW5jcnlwdChwbGFpbnRleHQsICdjb250ZXh0LWJpbmRpbmcnKTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdFYyKHBhc3N3b3JkLCBjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nlc3Npb24gYWRhdGEgbWlzbWF0Y2ggY2F1c2VzIEdDTSBmYWlsdXJlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgc2Vzc2lvbi5lbmNyeXB0KHBsYWludGV4dCwgJ29yaWdpbmFsLWNvbnRleHQnKTtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0gSlNPTi5wYXJzZShjdCk7XG4gICAgICBlbnZlbG9wZS5hZGF0YSA9ICd0YW1wZXJlZC1jb250ZXh0JztcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IHNlc3Npb24uZGVjcnlwdChKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpLCAvb3BlcmF0aW9uLXNwZWNpZmljIHJlYXNvbnxpbmNvcnJlY3QvaSk7XG4gICAgICBzZXNzaW9uLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXNzaW9uIHJlamVjdHMgc3RhbmRhcmQgdjIgZW52ZWxvcGVzIChubyBoa2RmU2FsdCknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2MmN0ID0gYXdhaXQgZW5jcnlwdFYyKHBhc3N3b3JkLCBwbGFpbnRleHQsIG9wdHMpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCBvcHRzKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IHNlc3Npb24uZGVjcnlwdCh2MmN0KSwgL3VzZSBkZWNyeXB0VjIvKTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ0FyZ29uMmlkIHBhcmFtcyBhcmUgc3RvcmVkIGluIGVudmVsb3BlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZUVuY3J5cHRpb25TZXNzaW9uKHBhc3N3b3JkLCB7IG1lbW9yeVNpemU6IDIwNDgsIGl0ZXJhdGlvbnM6IDIsIHBhcmFsbGVsaXNtOiAyIH0pO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIHNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5tLCAyMDQ4KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS50LCAyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS5wLCAyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0JpdEdvQVBJLmVuY3J5cHRBc3luYycsICgpID0+IHtcbiAgICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gJ3Rlc3QtcGFzc3dvcmQnO1xuICAgIGNvbnN0IHBsYWludGV4dCA9ICdoZWxsbyBlbmNyeXB0QXN5bmMnO1xuXG4gICAgYmVmb3JlKCgpID0+IHtcbiAgICAgIGJpdGdvID0gbmV3IEJpdEdvQVBJKHsgZW52OiAndGVzdCcgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGlzcGF0Y2hlcyB0byB2MSBieSBkZWZhdWx0IGFuZCBvdXRwdXQgaXMgZGVjcnlwdGFibGUgdmlhIGRlY3J5cHQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGJpdGdvLmVuY3J5cHRBc3luYyh7IGlucHV0OiBwbGFpbnRleHQsIHBhc3N3b3JkIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyLCAnZGVmYXVsdCBzaG91bGQgbm90IHByb2R1Y2UgdjIgZW52ZWxvcGUnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNyeXB0KHBhc3N3b3JkLCBjdCksIHBsYWludGV4dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGlzcGF0Y2hlcyB0byB2MiB3aGVuIGVuY3J5cHRpb25WZXJzaW9uOiAyIGFuZCBvdXRwdXQgaXMgZGVjcnlwdGFibGUgdmlhIGRlY3J5cHRBc3luYycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN0ID0gYXdhaXQgYml0Z28uZW5jcnlwdEFzeW5jKHsgaW5wdXQ6IHBsYWludGV4dCwgcGFzc3dvcmQsIGVuY3J5cHRpb25WZXJzaW9uOiAyIH0pO1xuICAgICAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSBKU09OLnBhcnNlKGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbnZlbG9wZS52LCAyKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRBc3luYyhwYXNzd29yZCwgY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgcGxhaW50ZXh0KTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3J3YXJkcyBhZGF0YSB0byB2MiBlbnZlbG9wZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFkYXRhID0gJ3R4aGFzaDptLzAvMSc7XG4gICAgICBjb25zdCBjdCA9IGF3YWl0IGJpdGdvLmVuY3J5cHRBc3luYyh7IGlucHV0OiBwbGFpbnRleHQsIHBhc3N3b3JkLCBlbmNyeXB0aW9uVmVyc2lvbjogMiwgYWRhdGEgfSk7XG4gICAgICBjb25zdCBlbnZlbG9wZTogVjJFbnZlbG9wZSA9IEpTT04ucGFyc2UoY3QpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudmVsb3BlLmFkYXRhLCBhZGF0YSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZWNyeXB0QXN5bmMocGFzc3dvcmQsIGN0KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHBsYWludGV4dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCaXRHb0FQSS5jcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbicsICgpID0+IHtcbiAgICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gJ3Rlc3QtcGFzc3dvcmQnO1xuICAgIGNvbnN0IHBsYWludGV4dCA9ICdoZWxsbyBzZXNzaW9uJztcblxuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgd29ya2luZyBzZXNzaW9uIChlbmNyeXB0L2RlY3J5cHQvZGVzdHJveSknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgYml0Z28uY3JlYXRlRW5jcnlwdGlvblNlc3Npb24ocGFzc3dvcmQpO1xuICAgICAgY29uc3QgY3QgPSBhd2FpdCBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb24uZGVjcnlwdChjdCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBwbGFpbnRleHQpO1xuICAgICAgc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBzZXNzaW9uLmVuY3J5cHQocGxhaW50ZXh0KSwgL2Rlc3Ryb3llZC8pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|