@bitgo/sdk-coin-canton 1.23.3 → 1.25.0
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/canton.d.ts +2 -0
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +5 -1
- package/dist/src/lib/cantonCommandBuilder.d.ts +9 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -1
- package/dist/src/lib/cantonCommandBuilder.js +20 -2
- package/dist/src/lib/clearSigning.d.ts +58 -0
- package/dist/src/lib/clearSigning.d.ts.map +1 -0
- package/dist/src/lib/clearSigning.js +66 -0
- package/dist/src/lib/iface.d.ts +1 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +2 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +6 -1
- package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
- package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +5 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +21 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +25 -7
- package/dist/test/resources.d.ts +7 -0
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +9 -2
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +45 -1
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +30 -1
- package/dist/test/unit/canton.js +17 -1
- package/dist/test/unit/index.d.ts +4 -0
- package/dist/test/unit/index.d.ts.map +1 -1
- package/dist/test/unit/index.js +5 -1
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
- package/dist/test/unit/messages/clearSigning.d.ts +2 -0
- package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
- package/dist/test/unit/messages/clearSigning.js +72 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/utils.js +50 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -122,6 +122,34 @@ describe('CantonCommandBuilder', () => {
|
|
|
122
122
|
assert_1.default.throws(() => builder.command(null), /command must be a plain object/);
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
|
+
describe('token()', () => {
|
|
126
|
+
it('should set the token', function () {
|
|
127
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
128
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
129
|
+
builder.initBuilder(tx);
|
|
130
|
+
builder.commandId('cmd-tok-1').actAs([PARTY_A]).command(sampleExerciseCommand).token('tcanton:testtoken');
|
|
131
|
+
assert_1.default.equal(builder.toRequestObject().token, 'tcanton:testtoken');
|
|
132
|
+
});
|
|
133
|
+
it('should trim whitespace', function () {
|
|
134
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
135
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
136
|
+
builder.initBuilder(tx);
|
|
137
|
+
builder.commandId('cmd-tok-2').actAs([PARTY_A]).command(sampleExerciseCommand).token(' tcanton:testtoken ');
|
|
138
|
+
assert_1.default.equal(builder.toRequestObject().token, 'tcanton:testtoken');
|
|
139
|
+
});
|
|
140
|
+
it('should throw on empty string', function () {
|
|
141
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
142
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
143
|
+
builder.initBuilder(tx);
|
|
144
|
+
assert_1.default.throws(() => builder.token(''), /token must be a non-empty string/);
|
|
145
|
+
});
|
|
146
|
+
it('should throw on whitespace-only string', function () {
|
|
147
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
148
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
149
|
+
builder.initBuilder(tx);
|
|
150
|
+
assert_1.default.throws(() => builder.token(' '), /token must be a non-empty string/);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
125
153
|
describe('resolveContracts()', () => {
|
|
126
154
|
it('should set the spec array', function () {
|
|
127
155
|
const spec = [{ templateId: TEMPLATE_ID, actAs: [PARTY_A], injectAs: 'command.ExerciseCommand.contractId' }];
|
|
@@ -184,6 +212,22 @@ describe('CantonCommandBuilder', () => {
|
|
|
184
212
|
const req = builder.toRequestObject();
|
|
185
213
|
assert_1.default.deepEqual(req.resolveContracts, []);
|
|
186
214
|
});
|
|
215
|
+
it('should include token when set', function () {
|
|
216
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
217
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
218
|
+
builder.initBuilder(tx);
|
|
219
|
+
builder.commandId('cmd-003').actAs([PARTY_A]).command(sampleExerciseCommand).token('tcanton:testtoken');
|
|
220
|
+
const req = builder.toRequestObject();
|
|
221
|
+
assert_1.default.equal(req.token, 'tcanton:testtoken');
|
|
222
|
+
});
|
|
223
|
+
it('should not include token key when not set', function () {
|
|
224
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
225
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
226
|
+
builder.initBuilder(tx);
|
|
227
|
+
builder.commandId('cmd-004').actAs([PARTY_A]).command(sampleExerciseCommand);
|
|
228
|
+
const req = builder.toRequestObject();
|
|
229
|
+
assert_1.default.ok(!('token' in req));
|
|
230
|
+
});
|
|
187
231
|
});
|
|
188
232
|
describe('initBuilder()', () => {
|
|
189
233
|
it('should correctly initialize from existing transaction with cantonCommandActAsParties', function () {
|
|
@@ -293,4 +337,4 @@ describe('Transaction toJson and explainTransaction - CantonCommand', () => {
|
|
|
293
337
|
});
|
|
294
338
|
});
|
|
295
339
|
});
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uQ29tbWFuZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jYW50b25Db21tYW5kL2NhbnRvbkNvbW1hbmRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw4Q0FBOEY7QUFDOUYsNENBQXVDO0FBRXZDLG1GQUFnRjtBQUNoRiw2RkFBMEY7QUFDMUYsNkVBQTBFO0FBRTFFLGtEQUEwRTtBQUUxRSxNQUFNLE9BQU8sR0FBRyxvRkFBb0YsQ0FBQztBQUNyRyxNQUFNLE9BQU8sR0FBRyxtRkFBbUYsQ0FBQztBQUNwRyxNQUFNLFdBQVcsR0FDZixzSUFBc0ksQ0FBQztBQUN6SSxNQUFNLFdBQVcsR0FDZiw0SUFBNEksQ0FBQztBQUUvSSxNQUFNLHFCQUFxQixHQUEwQjtJQUNuRCxlQUFlLEVBQUU7UUFDZixVQUFVLEVBQUUsV0FBVztRQUN2QixVQUFVLEVBQUUsV0FBVztRQUN2QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDLGNBQWMsRUFBRTtZQUNkLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1NBQy9HO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBd0I7SUFDL0MsYUFBYSxFQUFFO1FBQ2IsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7S0FDOUU7Q0FDRixDQUFDO0FBRUYsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcs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LFVBQVUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNyRCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IENhbnRvbkNyZWF0ZUNvbW1hbmQsIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBDYW50b25Db21tYW5kQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvY2FudG9uQ29tbWFuZEJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uQ29tbWFuZFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7IENhbnRvbkV4ZXJjaXNlQ29tbWFuZFByZXBhcmVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmNvbnN0IFBBUlRZX0EgPSAnUmVnUmVnaXN0cmFyOjoxMjIwNTA4ZTU0ZmI3MDlkY2IxYTliNDA5NjQwOGFkNDE1ZDIyMTdkODg4MWFkOTAzNGE5ODUwNzUyOTMzYmE4OGFkNSc7XG5jb25zdCBQQVJUWV9CID0gJ1JlZ1Byb3ZpZGVyOjoxMjIwNTA4ZTU0ZmI3MDlkY2IxYTliNDA5NjQwOGFkNDE1ZDIyMTdkODg4MWFkOTAzNGE5ODUwNzUyOTMzYmE4OGFkNSc7XG5jb25zdCBURU1QTEFURV9JRCA9XG4gICc3YTc1ZWY2ZTY5ZjY5Mzk1YTRlNjA5MTllMjI4NTI4YmI4ZjM4ODExNTBjY2ZkZTNmMzFiY2M3Mzg2NGIxOGFiOlV0aWxpdHkuUmVnaXN0cnkuQXBwLlYwLlNlcnZpY2UuQWxsb2NhdGlvbkZhY3Rvcnk6QWxsb2NhdGlvbkZhY3RvcnknO1xuY29uc3QgQ09OVFJBQ1RfSUQgPVxuICAnMDBmM2FmZGNlODQ2YTQwYzZmM2Y2MThjNGI1ODRiMDIyYTAxOTcwMTAwNTdlY2Q1OTQ1ODIwMDE4M2FiMjdkZTBhY2ExMjEyMjA0YWVmN2VkZTM3YTVmNDFiNjc0YTFkOTU0NDZkNDJhNDA0NDYxYzU1NThjNGU2ZDE4NjBiNjU1NjAxMjBlZjE4JztcblxuY29uc3Qgc2FtcGxlRXhlcmNpc2VDb21tYW5kOiBDYW50b25FeGVyY2lzZUNvbW1hbmQgPSB7XG4gIEV4ZXJjaXNlQ29tbWFuZDoge1xuICAgIHRlbXBsYXRlSWQ6IFRFTVBMQVRFX0lELFxuICAgIGNvbnRyYWN0SWQ6IENPTlRSQUNUX0lELFxuICAgIGNob2ljZTogJ0FsbG9jYXRpb25GYWN0b3J5X09mZmVyTWludCcsXG4gICAgY2hvaWNlQXJndW1lbnQ6IHtcbiAgICAgIGV4cGVjdGVkQWRtaW46IFBBUlRZX0EsXG4gICAgICBtaW50OiB7IGluc3RydW1lbnRJZDogeyBhZG1pbjogUEFSVFlfQSwgaWQ6ICdURVNUVE9LRU4nIH0sIGFtb3VudDogJzEwMCcsIGhvbGRlcjogUEFSVFlfQSwgcmVmZXJlbmNlOiAndGVzdCcgfSxcbiAgICB9LFxuICB9LFxufTtcblxuY29uc3Qgc2FtcGxlQ3JlYXRlQ29tbWFuZDogQ2FudG9uQ3JlYXRlQ29tbWFuZCA9IHtcbiAgQ3JlYXRlQ29tbWFuZDoge1xuICAgIHRlbXBsYXRlSWQ6IFRFTVBMQVRFX0lELFxuICAgIGNyZWF0ZUFyZ3VtZW50czogeyBwcm92aWRlcjogUEFSVFlfQiwgcmVnaXN0cmFyOiBQQVJUWV9BLCBvcGVyYXRvcjogUEFSVFlfQiB9LFxuICB9LFxufTtcblxuZGVzY3JpYmUoJ0NhbnRvbkNvbW1hbmRCdWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY29tbWFuZElkKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIGNvbW1hbmQgSUQgYW5kIHRyYW5zYWN0aW9uIElEJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCd0ZXN0LWNtZC1pZC0xMjMnKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyWydfY29tbWFuZElkJ10sICd0ZXN0LWNtZC1pZC0xMjMnKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyWyd0cmFuc2FjdGlvbiddLmlkLCAndGVzdC1jbWQtaWQtMTIzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuY29tbWFuZElkKCcnKSwgL2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb21tYW5kSWQoJyAgICcpLCAvY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhY3RBcygpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IGFjdGluZyBwYXJ0aWVzIGFuZCB1cGRhdGUgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5hY3RBcyhbUEFSVFlfQV0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfYWN0QXMnXSwgW1BBUlRZX0FdKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsndHJhbnNhY3Rpb24nXS5jYW50b25Db21tYW5kQWN0QXNQYXJ0aWVzLCBbUEFSVFlfQV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBlbXB0eSBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuYWN0QXMoW10pLCAvYWN0QXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBhcnJheSB3aXRoIGVtcHR5IHN0cmluZ3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLmFjdEFzKFsnJ10pLCAvYWN0QXMgcGFydGllcyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWFkQXMoKScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCByZWFkLW9ubHkgcGFydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLnJlYWRBcyhbUEFSVFlfQl0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfcmVhZEFzJ10sIFtQQVJUWV9CXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlZmF1bHQgdG8gZW1wdHkgYXJyYXkgd2hlbiBwYXNzZWQgdW5kZWZpbmVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIucmVhZEFzKHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZWFkQXMnXSwgW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZWZhdWx0IHRvIGVtcHR5IGFycmF5IHdoZW4gcGFzc2VkIG51bGwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5yZWFkQXMobnVsbCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZWFkQXMnXSwgW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tbWFuZCgpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IGFuIEV4ZXJjaXNlQ29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2NvbW1hbmQnXSwgc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IGEgQ3JlYXRlQ29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmQoc2FtcGxlQ3JlYXRlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19jb21tYW5kJ10sIHNhbXBsZUNyZWF0ZUNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBub24tb2JqZWN0IGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb21tYW5kKG51bGwgYXMgdW5rbm93biBhcyBDYW50b25FeGVyY2lzZUNvbW1hbmQpLCAvY29tbWFuZCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0Lyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlQ29udHJhY3RzKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHNwZWMgYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzcGVjID0gW3sgdGVtcGxhdGVJZDogVEVNUExBVEVfSUQsIGFjdEFzOiBbUEFSVFlfQV0sIGluamVjdEFzOiAnY29tbWFuZC5FeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcgfV07XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5yZXNvbHZlQ29udHJhY3RzKHNwZWMpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfcmVzb2x2ZUNvbnRyYWN0cyddLCBzcGVjKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RvUmVxdWVzdE9iamVjdCgpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3Qgb2JqZWN0IHdpdGggYWxsIHJlcXVpcmVkIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMScpLmFjdEFzKFtQQVJUWV9BXSkucmVhZEFzKFtQQVJUWV9CXSkuY29tbWFuZChzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgICAgY29uc3QgcmVxOiBDYW50b25Db21tYW5kUmVxdWVzdCA9IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgICBzaG91bGQuZXhpc3QocmVxKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXEuY29tbWFuZElkLCAnY21kLTAwMScpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXEuYWN0QXMsIFtQQVJUWV9BXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5yZWFkQXMsIFtQQVJUWV9CXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5jb21tYW5kLCBzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGNvbW1hbmRJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kSWQgaXMgbWlzc2luZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFjdEFzIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5jb21tYW5kSWQoJ2NtZC0wMDEnKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hY3RBcyBpcyBtaXNzaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbWFuZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtMDAxJykuYWN0QXMoW1BBUlRZX0FdKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbW1hbmQgaXMgbWlzc2luZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGNvbW1hbmQgY29udGFpbnMgaW52YWxpZCBrZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAuY29tbWFuZElkKCdjbWQtMDAxJylcbiAgICAgICAgLmFjdEFzKFtQQVJUWV9BXSlcbiAgICAgICAgLmNvbW1hbmQoeyBVbmtub3duQ29tbWFuZDoge30gfSBhcyB1bmtub3duIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGVtcHR5IHJlc29sdmVDb250cmFjdHMgYnkgZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMicpLmFjdEFzKFtQQVJUWV9BXSkuY29tbWFuZChzYW1wbGVDcmVhdGVDb21tYW5kKTtcbiAgICAgIGNvbnN0IHJlcSA9IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5yZXNvbHZlQ29udHJhY3RzLCBbXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0QnVpbGRlcigpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGluaXRpYWxpemUgZnJvbSBleGlzdGluZyB0cmFuc2FjdGlvbiB3aXRoIGNhbnRvbkNvbW1hbmRBY3RBc1BhcnRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICB0eC50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDtcbiAgICAgIHR4LmNhbnRvbkNvbW1hbmRBY3RBcyA9IFtQQVJUWV9BXTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19hY3RBcyddLCBbUEFSVFlfQV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBsZWF2ZSBfYWN0QXMgYXMgZW1wdHkgYXJyYXkgd2hlbiB0cmFuc2FjdGlvbiBoYXMgbm8gcGFydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2FjdEFzJ10sIFtdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RyYW5zYWN0aW9uVHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBDYW50b25Db21tYW5kIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSAtIENhbnRvbkNvbW1hbmQnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgcmV0dXJuIGEgQ2FudG9uQ29tbWFuZEJ1aWxkZXIgZnJvbSBnZXRDYW50b25Db21tYW5kQnVpbGRlcigpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2FudG9uQ29tbWFuZEJ1aWxkZXIoKTtcbiAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBDYW50b25Db21tYW5kQnVpbGRlcik7XG4gICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGEgQ2FudG9uQ29tbWFuZEJ1aWxkZXIgZnJvbSBmcm9tKCkgd2l0aCBDYW50b25Db21tYW5kIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eC50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDtcbiAgICB0eC5pZCA9ICd0ZXN0LWNtZC0wMDEnO1xuICAgIHR4LnByZXBhcmVDb21tYW5kID0gQ2FudG9uRXhlcmNpc2VDb21tYW5kUHJlcGFyZVJlc3BvbnNlO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4KTtcbiAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBDYW50b25Db21tYW5kQnVpbGRlcik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdUcmFuc2FjdGlvbiB0b0pzb24gYW5kIGV4cGxhaW5UcmFuc2FjdGlvbiAtIENhbnRvbkNvbW1hbmQnLCAoKSA9PiB7XG4gIGxldCB0eDogVHJhbnNhY3Rpb247XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgIHR4LmlkID0gJ3Rlc3QtY21kLTAwMSc7XG4gICAgdHgucHJlcGFyZUNvbW1hbmQgPSBDYW50b25FeGVyY2lzZUNvbW1hbmRQcmVwYXJlUmVzcG9uc2U7XG4gICAgdHguY2FudG9uQ29tbWFuZEFjdEFzID0gW1BBUlRZX0FdO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9Kc29uKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY2FudG9uQ29tbWFuZCBzdW1tYXJ5IGZvciBDYW50b25Db21tYW5kIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uLmNhbnRvbkNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGtpbmQsIHRlbXBsYXRlSWQsIGFuZCBhY3RBcyBpbiBzdW1tYXJ5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgY29uc3QgY2MgPSBqc29uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgYXNzZXJ0Lm9rKFsnRXhlcmNpc2VDb21tYW5kJywgJ0NyZWF0ZUNvbW1hbmQnXS5pbmNsdWRlcyhjYy5raW5kKSk7XG4gICAgICBhc3NlcnQub2soY2MudGVtcGxhdGVJZC5pbmNsdWRlcygnOicpKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2MuYWN0QXMsIFtQQVJUWV9BXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgY2hvaWNlIGZvciBFeGVyY2lzZUNvbW1hbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCBjYyA9IGpzb24uY2FudG9uQ29tbWFuZCE7XG4gICAgICBpZiAoY2Mua2luZCA9PT0gJ0V4ZXJjaXNlQ29tbWFuZCcpIHtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGNjLmNob2ljZSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChjYy5jaG9pY2UsICdBbGxvY2F0aW9uRmFjdG9yeV9PZmZlck1pbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBjb250cmFjdElkIGZvciBFeGVyY2lzZUNvbW1hbmQgd2hlbiBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgY29uc3QgY2MgPSBqc29uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgaWYgKGNjLmtpbmQgPT09ICdFeGVyY2lzZUNvbW1hbmQnKSB7XG4gICAgICAgIHNob3VsZC5leGlzdChjYy5jb250cmFjdElkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2V4cGxhaW5UcmFuc2FjdGlvbigpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGV4cGxhbmF0aW9uIHdpdGggY2FudG9uQ29tbWFuZCBmaWVsZCBmb3IgQ2FudG9uQ29tbWFuZCB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChleHBsYW5hdGlvbik7XG4gICAgICBzaG91bGQuZXhpc3QoZXhwbGFuYXRpb24uY2FudG9uQ29tbWFuZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgY29ycmVjdCBzdHJ1Y3R1cmUgKGlkLCBkaXNwbGF5T3JkZXIsIG91dHB1dHMsIGlucHV0cywgZmVlLCB0eXBlKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhbmF0aW9uID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBhc3NlcnQub2soJ2lkJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ2Rpc3BsYXlPcmRlcicgaW4gZXhwbGFuYXRpb24pO1xuICAgICAgYXNzZXJ0Lm9rKCdvdXRwdXRzJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ2lucHV0cycgaW4gZXhwbGFuYXRpb24pO1xuICAgICAgYXNzZXJ0Lm9rKCdmZWUnIGluIGV4cGxhbmF0aW9uKTtcbiAgICAgIGFzc2VydC5vaygndHlwZScgaW4gZXhwbGFuYXRpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGNvcnJlY3QgY2FudG9uQ29tbWFuZCBzdW1tYXJ5IGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhbmF0aW9uID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBjb25zdCBjYyA9IGV4cGxhbmF0aW9uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgYXNzZXJ0LmVxdWFsKGNjLmtpbmQsICdFeGVyY2lzZUNvbW1hbmQnKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgY2MudGVtcGxhdGVJZCxcbiAgICAgICAgJzdhNzVlZjZlNjlmNjkzOTVhNGU2MDkxOWUyMjg1MjhiYjhmMzg4MTE1MGNjZmRlM2YzMWJjYzczODY0YjE4YWI6VXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeTpBbGxvY2F0aW9uRmFjdG9yeSdcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwoY2MuY2hvaWNlLCAnQWxsb2NhdGlvbkZhY3RvcnlfT2ZmZXJNaW50Jyk7XG4gICAgICBhc3NlcnQub2soY2MuY29udHJhY3RJZCAmJiBjYy5jb250cmFjdElkLmxlbmd0aCA+IDApO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYy5hY3RBcywgW1BBUlRZX0FdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uQ29tbWFuZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jYW50b25Db21tYW5kL2NhbnRvbkNvbW1hbmRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw4Q0FBOEY7QUFDOUYsNENBQXVDO0FBRXZDLG1GQUFnRjtBQUNoRiw2RkFBMEY7QUFDMUYsNkVBQTBFO0FBRTFFLGtEQUEwRTtBQUUxRSxNQUFNLE9BQU8sR0FBRyxvRkFBb0YsQ0FBQztBQUNyRyxNQUFNLE9BQU8sR0FBRyxtRkFBbUYsQ0FBQztBQUNwRyxNQUFNLFdBQVcsR0FDZixzSUFBc0ksQ0FBQztBQUN6SSxNQUFNLFdBQVcsR0FDZiw0SUFBNEksQ0FBQztBQUUvSSxNQUFNLHFCQUFxQixHQUEwQjtJQUNuRCxlQUFlLEVBQUU7UUFDZixVQUFVLEVBQUUsV0FBVztRQUN2QixVQUFVLEVBQUUsV0FBVztRQUN2QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDLGNBQWMsRUFBRTtZQUNkLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1NBQy9HO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBd0I7SUFDL0MsYUFBYSxFQUFFO1FBQ2IsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7S0FDOUU7Q0FDRixDQUFDO0FBRUYsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcs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Q0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgQ2FudG9uQ3JlYXRlQ29tbWFuZCwgQ2FudG9uRXhlcmNpc2VDb21tYW5kLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmltcG9ydCB7IENhbnRvbkNvbW1hbmRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9jYW50b25Db21tYW5kQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDYW50b25Db21tYW5kUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgQ2FudG9uRXhlcmNpc2VDb21tYW5kUHJlcGFyZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzJztcblxuY29uc3QgUEFSVFlfQSA9ICdSZWdSZWdpc3RyYXI6OjEyMjA1MDhlNTRmYjcwOWRjYjFhOWI0MDk2NDA4YWQ0MTVkMjIxN2Q4ODgxYWQ5MDM0YTk4NTA3NTI5MzNiYTg4YWQ1JztcbmNvbnN0IFBBUlRZX0IgPSAnUmVnUHJvdmlkZXI6OjEyMjA1MDhlNTRmYjcwOWRjYjFhOWI0MDk2NDA4YWQ0MTVkMjIxN2Q4ODgxYWQ5MDM0YTk4NTA3NTI5MzNiYTg4YWQ1JztcbmNvbnN0IFRFTVBMQVRFX0lEID1cbiAgJzdhNzVlZjZlNjlmNjkzOTVhNGU2MDkxOWUyMjg1MjhiYjhmMzg4MTE1MGNjZmRlM2YzMWJjYzczODY0YjE4YWI6VXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeTpBbGxvY2F0aW9uRmFjdG9yeSc7XG5jb25zdCBDT05UUkFDVF9JRCA9XG4gICcwMGYzYWZkY2U4NDZhNDBjNmYzZjYxOGM0YjU4NGIwMjJhMDE5NzAxMDA1N2VjZDU5NDU4MjAwMTgzYWIyN2RlMGFjYTEyMTIyMDRhZWY3ZWRlMzdhNWY0MWI2NzRhMWQ5NTQ0NmQ0MmE0MDQ0NjFjNTU1OGM0ZTZkMTg2MGI2NTU2MDEyMGVmMTgnO1xuXG5jb25zdCBzYW1wbGVFeGVyY2lzZUNvbW1hbmQ6IENhbnRvbkV4ZXJjaXNlQ29tbWFuZCA9IHtcbiAgRXhlcmNpc2VDb21tYW5kOiB7XG4gICAgdGVtcGxhdGVJZDogVEVNUExBVEVfSUQsXG4gICAgY29udHJhY3RJZDogQ09OVFJBQ1RfSUQsXG4gICAgY2hvaWNlOiAnQWxsb2NhdGlvbkZhY3RvcnlfT2ZmZXJNaW50JyxcbiAgICBjaG9pY2VBcmd1bWVudDoge1xuICAgICAgZXhwZWN0ZWRBZG1pbjogUEFSVFlfQSxcbiAgICAgIG1pbnQ6IHsgaW5zdHJ1bWVudElkOiB7IGFkbWluOiBQQVJUWV9BLCBpZDogJ1RFU1RUT0tFTicgfSwgYW1vdW50OiAnMTAwJywgaG9sZGVyOiBQQVJUWV9BLCByZWZlcmVuY2U6ICd0ZXN0JyB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5jb25zdCBzYW1wbGVDcmVhdGVDb21tYW5kOiBDYW50b25DcmVhdGVDb21tYW5kID0ge1xuICBDcmVhdGVDb21tYW5kOiB7XG4gICAgdGVtcGxhdGVJZDogVEVNUExBVEVfSUQsXG4gICAgY3JlYXRlQXJndW1lbnRzOiB7IHByb3ZpZGVyOiBQQVJUWV9CLCByZWdpc3RyYXI6IFBBUlRZX0EsIG9wZXJhdG9yOiBQQVJUWV9CIH0sXG4gIH0sXG59O1xuXG5kZXNjcmliZSgnQ2FudG9uQ29tbWFuZEJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdjb21tYW5kSWQoKScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCB0aGUgY29tbWFuZCBJRCBhbmQgdHJhbnNhY3Rpb24gSUQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5jb21tYW5kSWQoJ3Rlc3QtY21kLWlkLTEyMycpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXJbJ19jb21tYW5kSWQnXSwgJ3Rlc3QtY21kLWlkLTEyMycpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXJbJ3RyYW5zYWN0aW9uJ10uaWQsICd0ZXN0LWNtZC1pZC0xMjMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb21tYW5kSWQoJycpLCAvY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIHdoaXRlc3BhY2Utb25seSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLmNvbW1hbmRJZCgnICAgJyksIC9jb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FjdEFzKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgYWN0aW5nIHBhcnRpZXMgYW5kIHVwZGF0ZSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmFjdEFzKFtQQVJUWV9BXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19hY3RBcyddLCBbUEFSVFlfQV0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWyd0cmFuc2FjdGlvbiddLmNhbnRvbkNvbW1hbmRBY3RBc1BhcnRpZXMsIFtQQVJUWV9BXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGVtcHR5IGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5hY3RBcyhbXSksIC9hY3RBcyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGFycmF5IHdpdGggZW1wdHkgc3RyaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuYWN0QXMoWycnXSksIC9hY3RBcyBwYXJ0aWVzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3MvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlYWRBcygpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IHJlYWQtb25seSBwYXJ0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIucmVhZEFzKFtQQVJUWV9CXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZWFkQXMnXSwgW1BBUlRZX0JdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVmYXVsdCB0byBlbXB0eSBhcnJheSB3aGVuIHBhc3NlZCB1bmRlZmluZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5yZWFkQXModW5kZWZpbmVkKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX3JlYWRBcyddLCBbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlZmF1bHQgdG8gZW1wdHkgYXJyYXkgd2hlbiBwYXNzZWQgbnVsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLnJlYWRBcyhudWxsKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX3JlYWRBcyddLCBbXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb21tYW5kKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgYW4gRXhlcmNpc2VDb21tYW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZChzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfY29tbWFuZCddLCBzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXQgYSBDcmVhdGVDb21tYW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZChzYW1wbGVDcmVhdGVDb21tYW5kKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2NvbW1hbmQnXSwgc2FtcGxlQ3JlYXRlQ29tbWFuZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIG5vbi1vYmplY3QgaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLmNvbW1hbmQobnVsbCBhcyB1bmtub3duIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCksIC9jb21tYW5kIG11c3QgYmUgYSBwbGFpbiBvYmplY3QvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Rva2VuKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHRva2VuJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtdG9rLTEnKS5hY3RBcyhbUEFSVFlfQV0pLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKS50b2tlbigndGNhbnRvbjp0ZXN0dG9rZW4nKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLnRva2VuLCAndGNhbnRvbjp0ZXN0dG9rZW4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdHJpbSB3aGl0ZXNwYWNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtdG9rLTInKS5hY3RBcyhbUEFSVFlfQV0pLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKS50b2tlbignICB0Y2FudG9uOnRlc3R0b2tlbiAgJyk7XG4gICAgICBhc3NlcnQuZXF1YWwoYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKS50b2tlbiwgJ3RjYW50b246dGVzdHRva2VuJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9rZW4oJycpLCAvdG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gd2hpdGVzcGFjZS1vbmx5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9rZW4oJyAgICcpLCAvdG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVDb250cmFjdHMoKScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCB0aGUgc3BlYyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNwZWMgPSBbeyB0ZW1wbGF0ZUlkOiBURU1QTEFURV9JRCwgYWN0QXM6IFtQQVJUWV9BXSwgaW5qZWN0QXM6ICdjb21tYW5kLkV4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJyB9XTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLnJlc29sdmVDb250cmFjdHMoc3BlYyk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZXNvbHZlQ29udHJhY3RzJ10sIHNwZWMpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9SZXF1ZXN0T2JqZWN0KCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY29ycmVjdCBvYmplY3Qgd2l0aCBhbGwgcmVxdWlyZWQgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtMDAxJykuYWN0QXMoW1BBUlRZX0FdKS5yZWFkQXMoW1BBUlRZX0JdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBjb25zdCByZXE6IENhbnRvbkNvbW1hbmRSZXF1ZXN0ID0gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICAgIHNob3VsZC5leGlzdChyZXEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlcS5jb21tYW5kSWQsICdjbWQtMDAxJyk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5hY3RBcywgW1BBUlRZX0FdKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxLnJlYWRBcywgW1BBUlRZX0JdKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxLmNvbW1hbmQsIHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbWFuZElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5hY3RBcyhbUEFSVFlfQV0pLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbW1hbmRJZCBpcyBtaXNzaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gYWN0QXMgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMScpLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2FjdEFzIGlzIG1pc3NpbmcvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBjb21tYW5kIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5jb21tYW5kSWQoJ2NtZC0wMDEnKS5hY3RBcyhbUEFSVFlfQV0pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29tbWFuZCBpcyBtaXNzaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbWFuZCBjb250YWlucyBpbnZhbGlkIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5jb21tYW5kSWQoJ2NtZC0wMDEnKVxuICAgICAgICAuYWN0QXMoW1BBUlRZX0FdKVxuICAgICAgICAuY29tbWFuZCh7IFVua25vd25Db21tYW5kOiB7fSB9IGFzIHVua25vd24gYXMgQ2FudG9uRXhlcmNpc2VDb21tYW5kKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbW1hbmQgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9mLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgZW1wdHkgcmVzb2x2ZUNvbnRyYWN0cyBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtMDAyJykuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUNyZWF0ZUNvbW1hbmQpO1xuICAgICAgY29uc3QgcmVxID0gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxLnJlc29sdmVDb250cmFjdHMsIFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSB0b2tlbiB3aGVuIHNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMycpLmFjdEFzKFtQQVJUWV9BXSkuY29tbWFuZChzYW1wbGVFeGVyY2lzZUNvbW1hbmQpLnRva2VuKCd0Y2FudG9uOnRlc3R0b2tlbicpO1xuICAgICAgY29uc3QgcmVxID0gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXEudG9rZW4sICd0Y2FudG9uOnRlc3R0b2tlbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgaW5jbHVkZSB0b2tlbiBrZXkgd2hlbiBub3Qgc2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtMDA0JykuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBjb25zdCByZXEgPSBidWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgICAgYXNzZXJ0Lm9rKCEoJ3Rva2VuJyBpbiByZXEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2luaXRCdWlsZGVyKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZSBmcm9tIGV4aXN0aW5nIHRyYW5zYWN0aW9uIHdpdGggY2FudG9uQ29tbWFuZEFjdEFzUGFydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgICAgdHguY2FudG9uQ29tbWFuZEFjdEFzID0gW1BBUlRZX0FdO1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2FjdEFzJ10sIFtQQVJUWV9BXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGxlYXZlIF9hY3RBcyBhcyBlbXB0eSBhcnJheSB3aGVuIHRyYW5zYWN0aW9uIGhhcyBubyBwYXJ0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgdHgudHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQ7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfYWN0QXMnXSwgW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJhbnNhY3Rpb25UeXBlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIENhbnRvbkNvbW1hbmQgdHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IC0gQ2FudG9uQ29tbWFuZCcsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCByZXR1cm4gYSBDYW50b25Db21tYW5kQnVpbGRlciBmcm9tIGdldENhbnRvbkNvbW1hbmRCdWlsZGVyKCknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRDYW50b25Db21tYW5kQnVpbGRlcigpO1xuICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICBhc3NlcnQub2soYnVpbGRlciBpbnN0YW5jZW9mIENhbnRvbkNvbW1hbmRCdWlsZGVyKTtcbiAgICBhc3NlcnQuZXF1YWwoYnVpbGRlci50cmFuc2FjdGlvblR5cGUsIFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYSBDYW50b25Db21tYW5kQnVpbGRlciBmcm9tIGZyb20oKSB3aXRoIENhbnRvbkNvbW1hbmQgcmF3IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgIHR4LmlkID0gJ3Rlc3QtY21kLTAwMSc7XG4gICAgdHgucHJlcGFyZUNvbW1hbmQgPSBDYW50b25FeGVyY2lzZUNvbW1hbmRQcmVwYXJlUmVzcG9uc2U7XG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3VHgpO1xuICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICBhc3NlcnQub2soYnVpbGRlciBpbnN0YW5jZW9mIENhbnRvbkNvbW1hbmRCdWlsZGVyKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIHRvSnNvbiBhbmQgZXhwbGFpblRyYW5zYWN0aW9uIC0gQ2FudG9uQ29tbWFuZCcsICgpID0+IHtcbiAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHgudHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQ7XG4gICAgdHguaWQgPSAndGVzdC1jbWQtMDAxJztcbiAgICB0eC5wcmVwYXJlQ29tbWFuZCA9IENhbnRvbkV4ZXJjaXNlQ29tbWFuZFByZXBhcmVSZXNwb25zZTtcbiAgICB0eC5jYW50b25Db21tYW5kQWN0QXMgPSBbUEFSVFlfQV07XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0b0pzb24oKScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBjYW50b25Db21tYW5kIHN1bW1hcnkgZm9yIENhbnRvbkNvbW1hbmQgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmV4aXN0KGpzb24pO1xuICAgICAgc2hvdWxkLmV4aXN0KGpzb24uY2FudG9uQ29tbWFuZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUga2luZCwgdGVtcGxhdGVJZCwgYW5kIGFjdEFzIGluIHN1bW1hcnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCBjYyA9IGpzb24uY2FudG9uQ29tbWFuZCE7XG4gICAgICBhc3NlcnQub2soWydFeGVyY2lzZUNvbW1hbmQnLCAnQ3JlYXRlQ29tbWFuZCddLmluY2x1ZGVzKGNjLmtpbmQpKTtcbiAgICAgIGFzc2VydC5vayhjYy50ZW1wbGF0ZUlkLmluY2x1ZGVzKCc6JykpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYy5hY3RBcywgW1BBUlRZX0FdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBjaG9pY2UgZm9yIEV4ZXJjaXNlQ29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGNvbnN0IGNjID0ganNvbi5jYW50b25Db21tYW5kITtcbiAgICAgIGlmIChjYy5raW5kID09PSAnRXhlcmNpc2VDb21tYW5kJykge1xuICAgICAgICBzaG91bGQuZXhpc3QoY2MuY2hvaWNlKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGNjLmNob2ljZSwgJ0FsbG9jYXRpb25GYWN0b3J5X09mZmVyTWludCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGNvbnRyYWN0SWQgZm9yIEV4ZXJjaXNlQ29tbWFuZCB3aGVuIHByZXNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCBjYyA9IGpzb24uY2FudG9uQ29tbWFuZCE7XG4gICAgICBpZiAoY2Mua2luZCA9PT0gJ0V4ZXJjaXNlQ29tbWFuZCcpIHtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGNjLmNvbnRyYWN0SWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZXhwbGFpblRyYW5zYWN0aW9uKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZXhwbGFuYXRpb24gd2l0aCBjYW50b25Db21tYW5kIGZpZWxkIGZvciBDYW50b25Db21tYW5kIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYW5hdGlvbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgc2hvdWxkLmV4aXN0KGV4cGxhbmF0aW9uKTtcbiAgICAgIHNob3VsZC5leGlzdChleHBsYW5hdGlvbi5jYW50b25Db21tYW5kKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBjb3JyZWN0IHN0cnVjdHVyZSAoaWQsIGRpc3BsYXlPcmRlciwgb3V0cHV0cywgaW5wdXRzLCBmZWUsIHR5cGUpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIGFzc2VydC5vaygnaWQnIGluIGV4cGxhbmF0aW9uKTtcbiAgICAgIGFzc2VydC5vaygnZGlzcGxheU9yZGVyJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ291dHB1dHMnIGluIGV4cGxhbmF0aW9uKTtcbiAgICAgIGFzc2VydC5vaygnaW5wdXRzJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ2ZlZScgaW4gZXhwbGFuYXRpb24pO1xuICAgICAgYXNzZXJ0Lm9rKCd0eXBlJyBpbiBleHBsYW5hdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgY29ycmVjdCBjYW50b25Db21tYW5kIHN1bW1hcnkgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNvbnN0IGNjID0gZXhwbGFuYXRpb24uY2FudG9uQ29tbWFuZCE7XG4gICAgICBhc3NlcnQuZXF1YWwoY2Mua2luZCwgJ0V4ZXJjaXNlQ29tbWFuZCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBjYy50ZW1wbGF0ZUlkLFxuICAgICAgICAnN2E3NWVmNmU2OWY2OTM5NWE0ZTYwOTE5ZTIyODUyOGJiOGYzODgxMTUwY2NmZGUzZjMxYmNjNzM4NjRiMThhYjpVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5OkFsbG9jYXRpb25GYWN0b3J5J1xuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbChjYy5jaG9pY2UsICdBbGxvY2F0aW9uRmFjdG9yeV9PZmZlck1pbnQnKTtcbiAgICAgIGFzc2VydC5vayhjYy5jb250cmFjdElkICYmIGNjLmNvbnRyYWN0SWQubGVuZ3RoID4gMCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGNjLmFjdEFzLCBbUEFSVFlfQV0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -7,6 +7,7 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
7
7
|
const should_1 = __importDefault(require("should"));
|
|
8
8
|
const statics_1 = require("@bitgo/statics");
|
|
9
9
|
const src_1 = require("../../../../src");
|
|
10
|
+
const resources_1 = require("../../../resources");
|
|
10
11
|
const commandId = '3935a06d-3b03-41be-99a5-95b2ecaabf7d';
|
|
11
12
|
const contractId = '001b549bfa833bab661ab30e4d0a3ab0ec01fcc4a2bef5369795f4928147706353ca1112205a8d0e780cf3b3115cf8be0d6315f4aed6a1c25b67e8c5d64cf9848d0458fd17';
|
|
12
13
|
const actAsPartyId = '12205::12205b4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
|
|
@@ -71,5 +72,33 @@ describe('CosignDelegationAccept Builder', () => {
|
|
|
71
72
|
txBuilder.initBuilder(tx);
|
|
72
73
|
assert_1.default.throws(() => txBuilder.actAs(''), /actAsPartyId must be a non-empty string/);
|
|
73
74
|
});
|
|
75
|
+
it('should parse preparedTransaction and extract sender, receiver, and amount via setTransaction + toJson', function () {
|
|
76
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
77
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
78
|
+
txBuilder.initBuilder(tx);
|
|
79
|
+
txBuilder.setTransaction(resources_1.CosignDelegationAcceptPrepareResponse);
|
|
80
|
+
txBuilder.commandId(commandId).contractId(contractId).actAs(actAsPartyId);
|
|
81
|
+
const txData = txBuilder.transaction.toJson();
|
|
82
|
+
should_1.default.exist(txData);
|
|
83
|
+
assert_1.default.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7');
|
|
84
|
+
assert_1.default.equal(txData.receiver, 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
|
|
85
|
+
assert_1.default.equal(txData.amount, '0');
|
|
86
|
+
});
|
|
87
|
+
it('should parse round-trip from raw transaction via TransactionBuilderFactory.from', function () {
|
|
88
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tcanton'));
|
|
89
|
+
const txBuilder = factory.from(resources_1.CosignDelegationAcceptRawTransaction);
|
|
90
|
+
const txData = txBuilder.transaction.toJson();
|
|
91
|
+
should_1.default.exist(txData);
|
|
92
|
+
assert_1.default.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7');
|
|
93
|
+
assert_1.default.equal(txData.receiver, 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
|
|
94
|
+
assert_1.default.equal(txData.amount, '0');
|
|
95
|
+
});
|
|
96
|
+
it('should validate raw transaction hash', function () {
|
|
97
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
98
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
99
|
+
txBuilder.initBuilder(tx);
|
|
100
|
+
txBuilder.setTransaction(resources_1.CosignDelegationAcceptPrepareResponse);
|
|
101
|
+
txBuilder.validateRawTransaction(resources_1.CosignDelegationAcceptPrepareResponse.preparedTransaction);
|
|
102
|
+
});
|
|
74
103
|
});
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jb3NpZ25EZWxlZ2F0aW9uQWNjZXB0L2Nvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQTZFO0FBRzdFLE1BQU0sU0FBUyxHQUFHLHNDQUFzQyxDQUFDO0FBQ3pELE1BQU0sVUFBVSxHQUNkLDRJQUE0SSxDQUFDO0FBQy9JLE1BQU0sWUFBWSxHQUFHLDZFQUE2RSxDQUFDO0FBRW5HLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsRUFBRSxDQUFDLHdEQUF3RCxFQUFFO1FBQzNELE1BQU0sU0FBUyxHQUFHLElBQUksbUNBQTZCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sRUFBRSxHQUFHLElBQUksaUJBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUUsTUFBTSxVQUFVLEdBQXNDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVB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QUFDLENBQUM7UUFDakQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLHlDQUF5QyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmltcG9ydCB7IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcblxuY29uc3QgY29tbWFuZElkID0gJzM5MzVhMDZkLTNiMDMtNDFiZS05OWE1LTk1YjJlY2FhYmY3ZCc7XG5jb25zdCBjb250cmFjdElkID1cbiAgJzAwMWI1NDliZmE4MzNiYWI2NjFhYjMwZTRkMGEzYWIwZWMwMWZjYzRhMmJlZjUzNjk3OTVmNDkyODE0NzcwNjM1M2NhMTExMjIwNWE4ZDBlNzgwY2YzYjMxMTVjZjhiZTBkNjMxNWY0YWVkNmExYzI1YjY3ZThjNWQ2NGNmOTg0OGQwNDU4ZmQxNyc7XG5jb25zdCBhY3RBc1BhcnR5SWQgPSAnMTIyMDU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJztcblxuZGVzY3JpYmUoJ0Nvc2lnbkRlbGVnYXRpb25BY2NlcHQgQnVpbGRlcicsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvc2lnbiBkZWxlZ2F0aW9uIGFjY2VwdCByZXF1ZXN0IG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5jb250cmFjdElkKGNvbnRyYWN0SWQpLmFjdEFzKGFjdEFzUGFydHlJZCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ2FudG9uVHJhbnNmZXJBY2NlcHRSZWplY3RSZXF1ZXN0ID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tYW5kSWQsIGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgY29udHJhY3RJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYWN0QXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hY3RBc1swXSwgYWN0QXNQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RPYmoucmVhZEFzLCBbXSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudmVyYm9zZUhhc2hpbmcsIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdHJhbnNhY3Rpb24gaWQgZnJvbSBjb21tYW5kSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4QnVpbGRlci50cmFuc2FjdGlvbi5pZCwgY29tbWFuZElkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb21tYW5kSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdElkKGNvbnRyYWN0SWQpLmFjdEFzKGFjdEFzUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5hY3RBcyhhY3RBc1BhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29udHJhY3RJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYWN0QXMgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5jb250cmFjdElkKGNvbnRyYWN0SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYWN0QXMgcGFydHlJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29tbWFuZElkIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbW1hbmRJZCgnJyksIC9jb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbnRyYWN0SWQoJycpLCAvY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFjdEFzIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmFjdEFzKCcnKSwgL2FjdEFzUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcbn0pO1xuIl19
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jb3NpZ25EZWxlZ2F0aW9uQWNjZXB0L2Nvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQXdHO0FBRXhHLGtEQUFpSDtBQUVqSCxNQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQztBQUN6RCxNQUFNLFVBQVUsR0FDZCw0SUFBNEksQ0FBQztBQUMvSSxNQUFNLFlBQVksR0FBRyw2RUFBNkUsQ0FBQztBQUVuRyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO0lBQzlDLEVBQUUsQ0FBQyx3REFBd0QsRUFBRTtRQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLG1DQUE2QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFzQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFV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QXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQW9DLENBQUMsQ0FBQztRQUNyRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBWSxDQUFDO1FBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztRQUMzRyxnQkFBTSxDQUFDLEtBQUssQ0FDVixNQUFNLENBQUMsUUFBUSxFQUNmLHNGQUFzRixDQUN2RixDQUFDO1FBQ0YsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLG1DQUE2QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxpREFBcUMsQ0FBQyxDQUFDO1FBQ2hFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxpREFBcUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0QnVpbGRlciwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgQ2FudG9uVHJhbnNmZXJBY2NlcHRSZWplY3RSZXF1ZXN0LCBUeERhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7IENvc2lnbkRlbGVnYXRpb25BY2NlcHRQcmVwYXJlUmVzcG9uc2UsIENvc2lnbkRlbGVnYXRpb25BY2NlcHRSYXdUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmNvbnN0IGNvbW1hbmRJZCA9ICczOTM1YTA2ZC0zYjAzLTQxYmUtOTlhNS05NWIyZWNhYWJmN2QnO1xuY29uc3QgY29udHJhY3RJZCA9XG4gICcwMDFiNTQ5YmZhODMzYmFiNjYxYWIzMGU0ZDBhM2FiMGVjMDFmY2M0YTJiZWY1MzY5Nzk1ZjQ5MjgxNDc3MDYzNTNjYTExMTIyMDVhOGQwZTc4MGNmM2IzMTE1Y2Y4YmUwZDYzMTVmNGFlZDZhMWMyNWI2N2U4YzVkNjRjZjk4NDhkMDQ1OGZkMTcnO1xuY29uc3QgYWN0QXNQYXJ0eUlkID0gJzEyMjA1OjoxMjIwNWI0ZTM1MzdhOTUxMjZkOTA2MDQ1OTIzNDRkOGFkM2MzZGRjY2RhNGY3OTkwMTk1NDI4MGVlMTljNTc2NzE0ZCc7XG5cbmRlc2NyaWJlKCdDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0IEJ1aWxkZXInLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3NpZ24gZGVsZWdhdGlvbiBhY2NlcHQgcmVxdWVzdCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCkuY29udHJhY3RJZChjb250cmFjdElkKS5hY3RBcyhhY3RBc1BhcnR5SWQpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvblRyYW5zZmVyQWNjZXB0UmVqZWN0UmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWFuZElkLCBjb21tYW5kSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbnRyYWN0SWQsIGNvbnRyYWN0SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFjdEFzLmxlbmd0aCwgMSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYWN0QXNbMF0sIGFjdEFzUGFydHlJZCk7XG4gICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0T2JqLnJlYWRBcywgW10pO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnZlcmJvc2VIYXNoaW5nLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IHRyYW5zYWN0aW9uIGlkIGZyb20gY29tbWFuZElkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLmNvbW1hbmRJZChjb21tYW5kSWQpO1xuICAgIGFzc2VydC5lcXVhbCh0eEJ1aWxkZXIudHJhbnNhY3Rpb24uaWQsIGNvbW1hbmRJZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29tbWFuZElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3RJZChjb250cmFjdElkKS5hY3RBcyhhY3RBc1BhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29tbWFuZElkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCkuYWN0QXMoYWN0QXNQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbnRyYWN0SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFjdEFzIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCkuY29udHJhY3RJZChjb250cmFjdElkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2FjdEFzIHBhcnR5SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbW1hbmRJZCBpcyBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb21tYW5kSWQoJycpLCAvY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29udHJhY3RJZCBpcyBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb250cmFjdElkKCcnKSwgL2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhY3RBcyBpcyBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5hY3RBcygnJyksIC9hY3RBc1BhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSBwcmVwYXJlZFRyYW5zYWN0aW9uIGFuZCBleHRyYWN0IHNlbmRlciwgcmVjZWl2ZXIsIGFuZCBhbW91bnQgdmlhIHNldFRyYW5zYWN0aW9uICsgdG9Kc29uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKENvc2lnbkRlbGVnYXRpb25BY2NlcHRQcmVwYXJlUmVzcG9uc2UpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5jb250cmFjdElkKGNvbnRyYWN0SWQpLmFjdEFzKGFjdEFzUGFydHlJZCk7XG4gICAgY29uc3QgdHhEYXRhID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnRvSnNvbigpIGFzIFR4RGF0YTtcbiAgICBzaG91bGQuZXhpc3QodHhEYXRhKTtcbiAgICBhc3NlcnQuZXF1YWwodHhEYXRhLnNlbmRlciwgJzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNycpO1xuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIHR4RGF0YS5yZWNlaXZlcixcbiAgICAgICdyYXZpLW5ldy1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDInXG4gICAgKTtcbiAgICBhc3NlcnQuZXF1YWwodHhEYXRhLmFtb3VudCwgJzAnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSByb3VuZC10cmlwIGZyb20gcmF3IHRyYW5zYWN0aW9uIHZpYSBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmZyb20nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oQ29zaWduRGVsZWdhdGlvbkFjY2VwdFJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24udG9Kc29uKCkgYXMgVHhEYXRhO1xuICAgIHNob3VsZC5leGlzdCh0eERhdGEpO1xuICAgIGFzc2VydC5lcXVhbCh0eERhdGEuc2VuZGVyLCAnMTIyMDg6OjEyMjA4MzA4MmU5YWYxNTZmZWFlYjdhZmQzNjNhMGVlNWZmYTFmZDE2MDk0N2I2NDdhMTM5YTdlMGMyZWQ3OGY1ZGM3Jyk7XG4gICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgdHhEYXRhLnJlY2VpdmVyLFxuICAgICAgJ3JhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICApO1xuICAgIGFzc2VydC5lcXVhbCh0eERhdGEuYW1vdW50LCAnMCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIHJhdyB0cmFuc2FjdGlvbiBoYXNoJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKENvc2lnbkRlbGVnYXRpb25BY2NlcHRQcmVwYXJlUmVzcG9uc2UpO1xuICAgIHR4QnVpbGRlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKENvc2lnbkRlbGVnYXRpb25BY2NlcHRQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gIH0pO1xufSk7XG4iXX0=
|