tnp-core 18.0.45 → 18.0.46
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/assets/shared/shared_folder_info.txt +1 -1
- package/browser/esm2022/lib/utils.mjs +72 -8
- package/browser/fesm2022/tnp-core.mjs +71 -7
- package/browser/fesm2022/tnp-core.mjs.map +1 -1
- package/browser/lib/utils.d.ts +32 -21
- package/cli.backend.js +2 -2
- package/client/esm2022/lib/utils.mjs +72 -8
- package/client/fesm2022/tnp-core.mjs +71 -7
- package/client/fesm2022/tnp-core.mjs.map +1 -1
- package/client/lib/utils.d.ts +32 -21
- package/lib/node-chalk-mock.js +2 -2
- package/lib/node-path-mock.js +2 -2
- package/lib/utils.d.ts +32 -21
- package/lib/utils.js +83 -14
- package/lib/utils.js.map +1 -1
- package/package.json +2 -2
- package/tmp-environment.json +29 -29
- package/websql/esm2022/lib/utils.mjs +72 -8
- package/websql/fesm2022/tnp-core.mjs +71 -7
- package/websql/fesm2022/tnp-core.mjs.map +1 -1
- package/websql/lib/utils.d.ts +32 -21
@@ -1,6 +1,6 @@
|
|
1
1
|
THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
|
2
2
|
|
3
|
-
Assets from this folder are being shipped with this npm package (tnp-core@18.0.
|
3
|
+
Assets from this folder are being shipped with this npm package (tnp-core@18.0.46)
|
4
4
|
created from this project.
|
5
5
|
|
6
6
|
THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
|
@@ -436,15 +436,79 @@ export var UtilsProcess;
|
|
436
436
|
* TODO IMPLEMENT
|
437
437
|
* start async node process
|
438
438
|
*/
|
439
|
-
async function startAsync(command, options) {
|
440
|
-
}
|
441
|
-
UtilsProcess.startAsync = startAsync;
|
442
439
|
/**
|
443
|
-
*
|
440
|
+
* This let you start child process and resolve promise when some
|
441
|
+
* condition is met. It is useful for example when you want to start
|
442
|
+
* process and wait until some output is in stdout or stderr.
|
444
443
|
*/
|
445
|
-
|
446
|
-
|
447
|
-
|
444
|
+
UtilsProcess.startAsyncChildProcessCommandUntil = async (command, options) => {
|
445
|
+
/* */
|
446
|
+
/* */
|
447
|
+
/* */
|
448
|
+
/* */
|
449
|
+
/* */
|
450
|
+
/* */
|
451
|
+
/* */
|
452
|
+
/* */
|
453
|
+
/* */
|
454
|
+
/* */
|
455
|
+
/* */
|
456
|
+
/* */
|
457
|
+
/* */
|
458
|
+
/* */
|
459
|
+
/* */
|
460
|
+
/* */
|
461
|
+
/* */
|
462
|
+
/* */
|
463
|
+
/* */
|
464
|
+
/* */
|
465
|
+
/* */
|
466
|
+
/* */
|
467
|
+
/* */
|
468
|
+
/* */
|
469
|
+
/* */
|
470
|
+
/* */
|
471
|
+
/* */
|
472
|
+
/* */
|
473
|
+
/* */
|
474
|
+
/* */
|
475
|
+
/* */
|
476
|
+
/* */
|
477
|
+
/* */
|
478
|
+
/* */
|
479
|
+
/* */
|
480
|
+
/* */
|
481
|
+
/* */
|
482
|
+
/* */
|
483
|
+
/* */
|
484
|
+
/* */
|
485
|
+
/* */
|
486
|
+
/* */
|
487
|
+
/* */
|
488
|
+
/* */
|
489
|
+
/* */
|
490
|
+
/* */
|
491
|
+
/* */
|
492
|
+
/* */
|
493
|
+
/* */
|
494
|
+
/* */
|
495
|
+
/* */
|
496
|
+
/* */
|
497
|
+
/* */
|
498
|
+
/* */
|
499
|
+
/* */
|
500
|
+
/* */
|
501
|
+
/* */
|
502
|
+
/* */
|
503
|
+
/* */
|
504
|
+
/* */
|
505
|
+
/* */
|
506
|
+
/* */
|
507
|
+
/* */
|
508
|
+
/* */
|
509
|
+
/* */
|
510
|
+
return (void 0);
|
511
|
+
};
|
448
512
|
UtilsProcess.getGitBashPath = () => {
|
449
513
|
/* */
|
450
514
|
/* */
|
@@ -1254,4 +1318,4 @@ export var UtilsTerminal;
|
|
1254
1318
|
})(UtilsTerminal || (UtilsTerminal = {}));
|
1255
1319
|
;
|
1256
1320
|
({}); // @--end-of-file-for-module=tnp-core lib/utils.ts
|
1257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEVBQUksSUFBSSxFQUFJLENBQUMsR0FBbUQsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFBLEtBQUs7QUFXbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFHdEMsTUFBTSxLQUFXLEtBQUssQ0FrbkJyQjtBQWxuQkQsV0FBaUIsS0FBSztJQUVQLGVBQVMsR0FBRyxDQUN2QixLQUFZLEVBQ1osY0FBd0IsRUFDeEIsRUFBRTtRQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sS0FBSzthQUNULE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsTUFBTSxDQUFDLFVBQVUsSUFBSTtZQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQVEsQ0FBQztJQUNk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QUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsK0JBQWtCLEdBQUcsR0FVekIsRUFBRTtRQUVULE9BQU8sU0FBUyxDQUFDO1FBRXJCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxL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Q0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFnQkY7OztPQUdHO0lBQ1Usb0NBQXNCLEdBQUcsS0FBSyxFQUd6QyxPQUFlLEVBQ2YsT0FNQyxFQUNELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0ws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QUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLHdDQUEwQixHQUFHLENBQUMsT0FFMUMsRUFBaUIsRUFBRTtRQUN0QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7T0FFRztJQUNVLHlCQUFXLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7UUFDaEUsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsNkJBQWUsR0FBRyxLQUFLLEVBQ2xDLElBQXVCLEVBQ3ZCLFFBQVEsR0FBRyxNQUFNLEVBQ0YsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGOzs7Ozs7T0FNRztJQUNVLHVDQUF5QixHQUFHLENBQ3ZDLElBQXVCLEVBQ1IsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFFSixDQUFDLEVBcmhCZ0IsYUFBYSxLQUFiLGFBQWEsUUFxaEI3QjtBQUdBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0RBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICcuL2NvcmUtbW9kZWxzJztcbmltcG9ydCBheGlvcywgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgICBwYXRoLCAgIF8sICAgY3Jvc3NQbGF0Zm9ybVBhdGgsIC8qICovIC8qICovIC8qICovIC8qICovICAgIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgZGF0ZWZvcm1hdCB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuY29uc3QgQkxPQl9TVVBQT1JURURfSU5fU1FMSlMgPSBmYWxzZTtcblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzIHtcblxuICBleHBvcnQgY29uc3QgdW5pcUFycmF5ID0gPFQgPSBhbnk+KFxuICAgIGFycmF5OiBhbnlbXSxcbiAgICB1bmlxdWVQcm9wZXJ0eT86IGtleW9mIFQsXG4gICkgPT4ge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGFycmF5XG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gc2Vlbi5oYXNPd25Qcm9wZXJ0eSh1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbSlcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAoc2Vlblt1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbV0gPSB0cnVlKTtcbiAgICAgIH0pIGFzIFRbXTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEV4YW1wbGU6XG4gICAqIG5ldyBSZWdFeHAoZXNjYXBlU3RyaW5nRm9yUmVnRXgoJ2EuYi5jJyksJ2cnKSA9PiAvYVxcLmJcXC5jL2dcbiAgICovXG4gIGV4cG9ydCBjb25zdCBlc2NhcGVTdHJpbmdGb3JSZWdFeCA9IChzdHJpbmdGb3JSZWdFeHA6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzdHJpbmdGb3JSZWdFeHAucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGFsa1NwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBhbnNpUmVnZXggPSAvXFx1MDAxYlxcW1swLTk7XSptL2c7XG5cblxuICAgIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGVUaW1lID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IHRha2VuUG9ydHMgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGdldEZyZWVQb3J0ID0gYXN5bmMgKG9wdGlvbnM/OiB7XG4gICAgc3RhcnRGcm9tPzogbnVtYmVyO1xuICAgIGhvd01hbnlGcmVlUG9ydHNBZnRlclRoYXRQb3J0PzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGludGVyZmFjZSBBdHRySnNvbmNQcm9wIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiBhbnk7XG4gIH1cbiAgZXhwb3J0IG5hbWVzcGFjZSBqc29uIHtcbiAgICBleHBvcnQgY29uc3QgZ2V0QXRycmlidXRpZXMgPSAoXG4gICAgICBqc29uRGVlcFBhdGg6IHN0cmluZywgLy8gbG9kYXNoIHBhdGggdG8gcHJvcGVydHkgaW4ganNvbiBleC4gZGVlcC5wYXRoLnRvLnByb3BcbiAgICAgIGZpbGVDb250ZW50OiBzdHJpbmcsIC8vIGpzb25jIG9yIGpzb241IC0ganNvbiB3aXRoIGNvbW1lbnRzXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gZmlsZUNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBqc29uRGVlcFBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0OiBzdHJpbmcgPSBhW2EubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbJ2ApICYmIGIuZW5kc1dpdGgoYCddYCkpIHx8XG4gICAgICAgICAgKGxhc3Quc3RhcnRzV2l0aChgW1wiYCkgJiYgYi5lbmRzV2l0aChgXCJdYCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFbYS5sZW5ndGggLSAxXSA9IFtsYXN0LCBiXS5qb2luKCcuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYS5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgW10pO1xuXG5cbiAgICAgIGNvbnN0IGtleU5hbWUgPSBwYXRoUGFydHMucG9wKCkhLnJlcGxhY2UoL15cXFtcIiguKylcIlxcXSQvLCAnJDEnKTtcbiAgICAgIGxldCBjdXJyZW50UGF0aCA9ICcnO1xuICAgICAgbGV0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgbGV0IGNvbGxlY3RlZENvbW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnLy8nKSkge1xuXG4gICAgICAgICAgY29sbGVjdGVkQ29tbWVudHMucHVzaCh0cmltbWVkTGluZSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJ1wiJykgfHwgdHJpbW1lZExpbmUuc3RhcnRzV2l0aChcIidcIikpIHtcblxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gdHJpbW1lZExpbmUubWF0Y2goL1tcIiddKFteXCInXSspW1wiJ11cXHMqOi8pO1xuXG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY3VycmVudFBhdGhcbiAgICAgICAgICAgICAgPyBgJHtjdXJyZW50UGF0aH0uJHtrZXkuaW5jbHVkZXMoJy4nKSA/IGBbJyR7a2V5fSddYCA6IGtleX1gXG4gICAgICAgICAgICAgIDoga2V5O1xuXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGN1cnJlbnRQYXRoLmVuZHNXaXRoKGtleU5hbWUpICYmXG4gICAgICAgICAgICAgICAgIWN1cnJlbnRQYXRoLmVuZHNXaXRoKCcvJyArIGtleU5hbWUpKSB8fFxuICAgICAgICAgICAgICBjdXJyZW50UGF0aC5lbmRzV2l0aChgWycke2tleU5hbWV9J11gKVxuICAgICAgICAgICAgKSB7XG5cblxuXG5cblxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMoY29sbGVjdGVkQ29tbWVudHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuXG4gICAgY29uc3QgZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMgPSAoXG4gICAgICBjb21tZW50czogc3RyaW5nW10sXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgY29uc3QgYXR0clJlZ2V4ID0gL0AoXFx3KykoPzpcXHMqPVxccyooW15cXHNAXSspKT8vZztcblxuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGxldCBtYXRjaDtcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IGF0dHJSZWdleC5leGVjKGNvbW1lbnQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IFssIG5hbWUsIHZhbHVlXSA9IG1hdGNoO1xuXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICBhdHRyID0+IGF0dHIubmFtZSA9PT0gYEAke25hbWV9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUgPSBbZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUsIHZhbHVlXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBgQCR7bmFtZX1gLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBhdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHIudmFsdWUpICYmIGF0dHIudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgYXR0ci52YWx1ZSA9IGF0dHIudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICB9XG5cblxuXG5cblxuICBleHBvcnQgZW51bSBEYkJpbmFyeUZvcm1hdEVudW0ge1xuICAgIEJsb2IgPSAnQmxvYicsXG4gICAgRmlsZSA9ICdGaWxlJyxcbiAgICBzdHJpbmcgPSAnc3RyaW5nJyxcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlciA9IEJsb2IgfCBGaWxlIHwgc3RyaW5nO1xuLyogKi9cbi8qICovXG4gIFxuXG4gIC8qKlxuICAgKiBCaW5hcnkgZm9ybWF0IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBkYXRhYmFzZVxuICAgKlxuICAgKiBmb3Igbm9kZWpzID0+IEJ1ZmZlclxuICAgKiBmb3Igc3FsLmpzID0+IHN0cmluZyAoc2hvdWxiIGJlIGJsb2IgLSBidXQgbm90IHN1cHBvcnRlZClcbiAgICpcbiAgICovXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0ID1cbiAgICB8IERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlclxuLyogKi9cbi8qICovXG4gIFxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgYmluYXJ5IHtcblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJyYXlCdWZmZXJUb0Jsb2IoXG4gICAgICBidWZmZXI6IEFycmF5QnVmZmVyLFxuICAgICAgY29udGVudFR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG4gICAgfVxuXG5cblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9BcnJheUJ1ZmZlcihibG9iOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIGFueSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmFzZTY0dG9CbG9iXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmxvYlRvQmFzZTY0KClcbiAgICAgKiBAcGFyYW0gYmFzZTY0RGF0YVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhc2U2NHRvQmxvYihcbiAgICAgIGJhc2U2NERhdGE6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGU/OiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBsZXQgZmlsZV9iYXNlNjQ6IHN0cmluZyA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBpZiAoIWNvbnRlbnRUeXBlT3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgbSA9IC9eZGF0YTooLis/KTtiYXNlNjQsKC4rKSQvLmV4ZWMoYmFzZTY0RGF0YSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbdGFvbi1mcmFtZXdvcmtdW2Jhc2U2NHRvQmxvYl0gTm90IGEgYmFzZTY0IGJsb2IgWyR7YmFzZTY0RGF0YX1dYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIFtfXywgY29udGVudHR5cGUsIGZpbGViYXNlNjRdID0gbTtcbiAgICAgICAgY29udGVudF90eXBlID0gY29udGVudHR5cGUgYXMgYW55O1xuICAgICAgICBmaWxlX2Jhc2U2NCA9IGZpbGViYXNlNjQ7XG4gICAgICB9XG4gICAgICBjb250ZW50X3R5cGUgPSAoXG4gICAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBjb250ZW50VHlwZU92ZXJyaWRlIDogY29udGVudF90eXBlIHx8ICcnXG4gICAgICApIGFzIGFueTtcbiAgICAgIGJhc2U2NERhdGEgPSBjb250ZW50VHlwZU92ZXJyaWRlID8gYmFzZTY0RGF0YSA6IGZpbGVfYmFzZTY0O1xuICAgICAgY29uc3Qgc2xpY2VTaXplID0gMTAyNDtcbiAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICAgIGNvbnN0IGJ5dGVzTGVuZ3RoID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgICAgY29uc3Qgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xuICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IG5ldyBBcnJheShzbGljZXNDb3VudCk7XG5cbiAgICAgIGZvciAobGV0IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xuICAgICAgICBjb25zdCBiZWdpbiA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGJlZ2luICsgc2xpY2VTaXplLCBieXRlc0xlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuXG4gICAgICAgIGZvciAobGV0IG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XG4gICAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRfdHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGJhc2U2NHRvQmxvYih0ZXh0KTtcbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGJCaW5hcnlGb3JtYXRUb0Jhc2U2NChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb0Jhc2U2NChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvRGJCaW5hcnlGb3JtYXQoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxEYkJpbmFyeUZvcm1hdD4ge1xuICAgICAgbGV0IHJlc3VsdDogRGJCaW5hcnlGb3JtYXQ7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0ZXh0VG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvVGV4dChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb1RleHQoYmluYXJ5Rm9ybWF0IGFzIGFueSk7XG4gICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpbmFyeUZvcm1hdCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb0Jsb2IoZmlsZTogRmlsZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpXSwge1xuICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0ZpbGUoXG4gICAgICBibG9iOiBCbG9iLFxuICAgICAgbmFtZUZvckZpbGU6IHN0cmluZyA9ICdteS1maWxlLW5hbWUnLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuICAgICAgaWYgKCFuYW1lRm9yRmlsZSkge1xuICAgICAgICBuYW1lRm9yRmlsZSA9ICdub25hbWVmaWxlJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZUZvckZpbGUpO1xuICAgIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvQmxvYihcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIHR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbicsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb1RleHQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgYmxvYi50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9GaWxlKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZTogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuXG4gICAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBDb3JlTW9kZWxzLm1pbWVUeXBlc1tleHRdO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlIH0pO1xuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGJsb2JUb0ZpbGUoYmxvYiwgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cblxuXG5cblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlVG9UZXh0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUudGV4dCgpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24ganNvblRvQmxvYihqc29uT2JqOiBvYmplY3QpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoanNvbk9iaiwgbnVsbCwgMildLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIFRPRE8gTk9UIFRFU1RFRFxuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9Kc29uKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgYmxvYi50ZXh0KCkpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmxvYkZyb20odXJsOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEJsb2I+ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmwsXG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9XG5cbiAgfVxuXG5cblxuICBleHBvcnQgbmFtZXNwYWNlIGNzcyB7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaXhlbHNDc3MgcGl4ZWxzIGV4LiAxMDBweFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bVZhbHVlKHBpeGVsc0Nzczogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcblxuICAgICAgcmV0dXJuIHBhcnNlSW50KFxuICAgICAgICBwaXhlbHNDc3M/LnRvU3RyaW5nKCk/LnJlcGxhY2UoJ3B4JywgJycpLFxuXG5cbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc1Byb2Nlc3Mge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1N0YXJ0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBpcyBwcm9jZXNzLmN3ZCgpO1xuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIGZhbHNlXG4gICAgICovXG4gICAgc2hvd0NvbW1hbmQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE1vZGlmeSBvdXRwdXQgbGluZSBieSBsaW5lXG4gICAgICovXG4gICAgb3V0cHV0TGluZVJlcGxhY2U/OiAob3V0cHV0TGluZVN0ZGVyT3JTdGRvdXQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIHJlc29sdmVQcm9taXNlTXNnPzoge1xuICAgICAgLyoqXG4gICAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3Rkb3V0XG4gICAgICAgKi9cbiAgICAgIHN0ZG91dD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3RkZXJyXG4gICAgICAgKi9cbiAgICAgIHN0ZGVycj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBieSBkZWZhdWx0IG9ubHkgcmVzb2x2ZSB3aGVuIGV4aXQgY29kZSBpcyAwXG4gICAgICAgKi9cbiAgICAgIHJlc29sdmVBZnRlckFueUV4aXRDb2RlPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFByZWZpeCBtZXNzYWdlcyBvdXRwdXQgZnJvbSBjaGlsZF9wcm9jZXNzXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRyeSBjb21tYW5kIGFnYWluIGFmdGVyIGZhaWwgYWZ0ZXIgbiBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICB0cnlBZ2FpbldoZW5GYWlsQWZ0ZXI/OiBudW1iZXI7XG4gICAgYXNrVG9UcnlBZ2Fpbk9uRXJyb3I/OiBib29sZWFuO1xuICAgIGV4aXRPbkVycm9yQ2FsbGJhY2s/OiAoY29kZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFVzZSBiaWcgYnVmZmVyIGZvciBiaWcgd2VicGFjayBsb2dzXG4gICAgICogKGl0IG1heSBzbG93IGRvd24gc21hbGxlciBwcm9jZXNzZXMgZXhlY3V0aW9uKVxuICAgICAqL1xuICAgIGJpZ2dlckJ1ZmZlcj86IGJvb2xlYW47XG4gICAgaGlkZU91dHB1dD86IHtcbiAgICAgIHN0ZG91dD86IGJvb2xlYW47XG4gICAgICBzdGRlcnI/OiBib29sZWFuO1xuICAgIH07XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QXN5bmMoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBQcm9jZXNzU3RhcnRPcHRpb25zLFxuICApIHtcblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIElNUExFTUVOVFxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0U3luYyhjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBQcm9jZXNzU3RhcnRPcHRpb25zKSB7XG5cbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0R2l0QmFzaFBhdGggPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRJbk5ld1Rlcm1pbmFsV2luZG93ID0gKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUGljazxQcm9jZXNzU3RhcnRPcHRpb25zLCAnY3dkJyB8ICdoaWRlT3V0cHV0Jz4sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0QmFzaE9yU2hlbGxOYW1lID0gKCk6XG4gICAgfCAnYnJvd3NlcidcbiAgICB8ICdjbWQnXG4gICAgfCAncG93ZXJzaGVsbCdcbiAgICB8ICdnaXRiYXNoJ1xuICAgIHwgJ2N5Z3dpbidcbiAgICB8ICd1bmtub3duJ1xuICAgIHwgJ2Jhc2gnXG4gICAgfCAnenNoJ1xuICAgIHwgJ2Zpc2gnXG4gICAgfCAnc2gnID0+IHtcblxuICAgIHJldHVybiAnYnJvd3Nlcic7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNPcyB7XG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIGluIGNsaWVudCBicm93c2VyXG4gICAqICh3ZWJzcWwgbW9kZWwgLT4gaXMgYWxzbyBjb25zaWRlcmVkIGFzIGJyb3dzZXJcbiAgICogYmVjYXVzZSBpdCBpcyBydW5uaW5nIGluIGJyb3dzZXIpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ccm93c2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gbm9kZWpzXG4gICAqIChiYWNrZW5kIHNjcmlwdCBvciBlbGVjdHJvbiBzY3JpcHQpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ob2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIHNwZWNpYWxcbiAgICogYnJvd3NlciBtb2RlIHRoYXQgaGFzIHNxbC5qcyBiYWNrZW5kXG4gICAqIGFuZCBleGVjdXRlcyBzcWwgcXVlcmllcyBpbiBicm93c2VyXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XZWJTUUwgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbnNpZGVcbiAgICogRWxlY3Ryb24gYmFja2VuZCBvciBicm93c2VyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRWxlY3Ryb24gPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB3aW5kb3cucHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcidcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAhIXByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb25cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFbGVjdHJvbicpID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIHdpbmRvd3Mgc3Vic3lzdGVtIGZvciBsaW51eCAoV1NMKS5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldzbCA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIGV4cG9ydCBjb25zdCBjbGVhckNvbnNvbGUgPSAoKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCB0cmFuc2Zvcm1DaG9pY2VzID0gKFxuICAgIGNob2ljZXM6IGFueSxcbiAgKTogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBtdWx0aXNlbGVjdCA9IGFzeW5jIDxUID0gc3RyaW5nPihvcHRpb25zOiB7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCB0aGVuIG9ubHkgb25lIGNob2ljZSBjYW4gYmUgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBvbmx5T25lQ2hvaWNlPzogYm9vbGVhbjtcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9O1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nW107XG4gIH0pOiBQcm9taXNlPFRbXT4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgdHlwZSBTZWxlY3RBY3Rpb25DaG9pY2UgPSB7XG4gICAgW2Nob2ljZTogc3RyaW5nXToge1xuICAgICAgLyoqXG4gICAgICAgKiBUaXRsZSBvZiB0aGUgY2hvaWNlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQWN0aW9uIHRvIGV4ZWN1dGVcbiAgICAgICAqL1xuICAgICAgYWN0aW9uPzogKCkgPT4gYW55O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIHNlbGVjdCBidXQgZXhlY3V0ZXMgYWN0aW9uIGlmIHByb3ZpZGVkXG4gICAqIEByZXR1cm5zIHNlbGVjdGVkIGFuZCBleGVjdXRlZCB2YWx1ZVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHNlbGVjdEFjdGlvbkFuZEV4ZWN1dGUgPSBhc3luYyA8XG4gICAgQ0hPSUNFIGV4dGVuZHMgU2VsZWN0QWN0aW9uQ2hvaWNlID0gU2VsZWN0QWN0aW9uQ2hvaWNlLFxuICA+KFxuICAgIGNob2ljZXM6IENIT0lDRSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gICAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgICAgaGludD86IHN0cmluZztcbiAgICAgIGV4ZWN1dGVBY3Rpb25PbkRlZmF1bHQ/OiBib29sZWFuO1xuICAgIH0sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICBoaW50Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG4gIGV4cG9ydCBjb25zdCBwaXBlRW50ZXJUb1N0ZGluID0gKCk6IHZvaWQgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaW5wdXQgPSBhc3luYyAoe1xuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBxdWVzdGlvbixcbiAgICByZXF1aXJlZCwgLy8gVE9ETyBzb21ldGhpbmcgaXMgd2VyaWQgd2l0aCByZXF1aXJlZFxuICB9OiB7XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlPzogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgcHJlc3NBbnlLZXlUb0NvbnRpbnVlQXN5bmMgPSAob3B0aW9ucz86IHtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFV0aWxzVGVybWluYWwucHJlc3NBbnlLZXlUb0NvbnRpbnVlQXN5bmMoKVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5ID0gKG9wdGlvbnM/OiB7IG1lc3NhZ2U/OiBzdHJpbmcgfSkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXZpZXdMb25nTGlzdCA9IGFzeW5jIChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBsaXN0TmFtZSA9ICdMaXN0JyxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIGxvbmcgbGlzdCBpbiB0aGUgY29uc29sZSB1c2luZyBhIHBhZ2VyIGxpa2UgYGxlc3NgLlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHVzZXIgZXhpdHMgdGhlIHBhZ2VyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGlzdCAtIFRoZSBsb25nIHN0cmluZyBjb250ZW50IHRvIGRpc3BsYXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwYWdlciBleGl0cy5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3RHaXRMb2dMaWtlID0gKFxuICAgIGxpc3Q6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL3V0aWxzLnRzIl19
|
1321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEVBQUksSUFBSSxFQUFJLENBQUMsR0FBbUQsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFBLEtBQUs7QUFXbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFHdEMsTUFBTSxLQUFXLEtBQUssQ0FrbkJyQjtBQWxuQkQsV0FBaUIsS0FBSztJQUVQLGVBQVMsR0FBRyxDQUN2QixLQUFZLEVBQ1osY0FBd0IsRUFDeEIsRUFBRTtRQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sS0FBSzthQUNULE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsTUFBTSxDQUFDLFVBQVUsSUFBSTtZQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQVEsQ0FBQztJQUNkLENBQUMsQ0FBQztJQUlGOzs7T0FHRztJQUNVLDBCQUFvQixHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO1FBQzlELE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUM7SUFJRixTQUFnQix1QkFBdUIsQ0FBQyxHQUFXO1FBRWpELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDO1FBR3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQU5lLDZCQUF1QiwwQkFNdEMsQ0FBQTtJQUlZLGtCQUFZLEdBQUcsR0FBRyxFQUFFO1FBQ25DLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsY0FBUSxHQUFHLEdBQUcsRUFBRTtRQUMvQixLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNULGlCQUFXLEdBQUcsS0FBSyxFQUFFLE9BR2pDLEVBQW1CLEVBQUU7UUFDeEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBUUYsSUFBaUIsSUFBSSxDQWdIcEI7SUFoSEQsV0FBaUIsSUFBSTtRQUNOLG1CQUFjLEdBQUcsQ0FDNUIsWUFBb0IsRUFBRSx3REFBd0Q7UUFDOUUsV0FBbUIsRUFDRixFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLElBQ0UsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzNDLENBQUM7b0JBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWixDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBR1AsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0QsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksVUFBVSxHQUFvQixFQUFFLENBQUM7WUFDckMsSUFBSSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7WUFFckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVoQyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFFakMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUd0QyxDQUFDO3FCQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBRXRFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFFeEQsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDVixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLFdBQVcsR0FBRyxXQUFXOzRCQUN2QixDQUFDLENBQUMsR0FBRyxXQUFXLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFOzRCQUM1RCxDQUFDLENBQUMsR0FBRyxDQUFDO3dCQUdSLElBQ0UsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzs0QkFDNUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQzs0QkFDdkMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQ3RDLENBQUM7NEJBTUQsVUFBVSxHQUFHLDZCQUE2QixDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQzlELE1BQU07d0JBQ1IsQ0FBQzt3QkFHRCxpQkFBaUIsR0FBRyxFQUFFLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixNQUFNLDZCQUE2QixHQUFHLENBQ3BDLFFBQWtCLEVBQ0QsRUFBRTtZQUNuQixNQUFNLFVBQVUsR0FBb0IsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFDO1lBRWpELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksS0FBSyxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNsRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUU5QixNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUNqQyxDQUFDO29CQUVGLElBQUksaUJBQWlCLEVBQUUsQ0FBQzt3QkFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQzs0QkFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDM0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDdEMsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLGlCQUFpQixDQUFDLEtBQUssR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDN0QsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixVQUFVLENBQUMsSUFBSSxDQUFDOzRCQUNkLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTs0QkFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO3lCQUM1QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUdELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQWhIZ0IsSUFBSSxHQUFKLFVBQUksS0FBSixVQUFJLFFBZ0hwQjtJQU1ELElBQVksa0JBT1g7SUFQRCxXQUFZLGtCQUFrQjtRQUM1QixtQ0FBYSxDQUFBO1FBQ2IsbUNBQWEsQ0FBQTtRQUNiLHVDQUFpQixDQUFBO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQix3QkFBa0IsS0FBbEIsd0JBQWtCLFFBTzdCO0lBZ0JILEtBQUs7SUFDTCxLQUFLO0lBR0gsSUFBaUIsTUFBTSxDQXNXdEI7SUF0V0QsV0FBaUIsTUFBTTtRQUdyQjs7Ozs7O1dBTUc7UUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE1BQW1CLEVBQ25CLFdBQW1DO1lBRW5DLGFBQWE7WUFDYixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBTnFCLHdCQUFpQixvQkFNdEMsQ0FBQTtRQUtEOzs7O1dBSUc7UUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFBVTtZQUNoRCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO29CQUN0QyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQWEsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYTtnQkFDdkQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQVRxQix3QkFBaUIsb0JBU3RDLENBQUE7UUFJRDs7OztXQUlHO1FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVU7WUFDckMsT0FBTyxJQUFJLE9BQU8sQ0FBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYTtnQkFDOUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFOZSxtQkFBWSxlQU0zQixDQUFBO1FBSUQ7Ozs7V0FJRztRQUNJLEtBQUssVUFBVSxZQUFZLENBQ2hDLFVBQWtCLEVBQ2xCLG1CQUE0QztZQUU1QyxJQUFJLFlBQVksR0FBMkIsS0FBSyxDQUFRLENBQUM7WUFDekQsSUFBSSxXQUFXLEdBQVcsS0FBSyxDQUFRLENBQUM7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQLE1BQU0sSUFBSSxLQUFLLENBQ2IscURBQXFELFVBQVUsR0FBRyxDQUNuRSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxZQUFZLEdBQUcsV0FBa0IsQ0FBQztnQkFDbEMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsWUFBWSxHQUFHLENBQ2IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUN4RCxDQUFDO1lBQ1QsVUFBVSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFMUMsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO2dCQUNoRSxNQUFNLEtBQUssR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRXJELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFFckMsS0FBSyxJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzVELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBeENxQixtQkFBWSxlQXdDakMsQ0FBQTtRQUtNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsSUFBWTtZQUVaLElBQUksTUFBc0IsQ0FBQztZQUUzQixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6QixJQUFJLHVCQUF1QixFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sSUFBVyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFWCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUVDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFwQnFCLDZCQUFzQix5QkFvQjNDLENBQUE7UUFJTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFlBQTRCO1lBRTVCLElBQUksTUFBYyxDQUFDO1lBRW5CLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsWUFBbUIsQ0FBQyxDQUFDO29CQUNyRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sWUFBbUIsQ0FBQztZQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDO1lBR1gsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFFQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBckJxQiw2QkFBc0IseUJBcUIzQyxDQUFBO1FBS00sS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxJQUFZO1lBRVosSUFBSSxNQUFzQixDQUFDO1lBRTNCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxJQUFXLENBQUM7WUFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVYLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBRUMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQXBCcUIsMkJBQW9CLHVCQW9CekMsQ0FBQTtRQUlNLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsWUFBNEI7WUFFNUIsSUFBSSxNQUFjLENBQUM7WUFFbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFtQixDQUFDLENBQUM7b0JBQ25ELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxZQUFtQixDQUFDO1lBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFHWCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUVDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFyQnFCLDJCQUFvQix1QkFxQnpDLENBQUE7UUFJTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFLTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFLTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFKcUIsaUJBQVUsYUFJL0IsQ0FBQTtRQUlNLEtBQUssVUFBVSxVQUFVLENBQzlCLElBQVUsRUFDVixjQUFzQixjQUFjO1lBRXBDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsV0FBVyxHQUFHLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BELENBQUM7WUFDRCxhQUFhO1lBQ2IsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFUcUIsaUJBQVUsYUFTL0IsQ0FBQTtRQUlMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUtMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS00sS0FBSyxVQUFVLFVBQVUsQ0FDOUIsSUFBWSxFQUNaLE9BQStCLFlBQVk7WUFFM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBTnFCLGlCQUFVLGFBTS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRnFCLGlCQUFVLGFBRS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUM5QixJQUFZLEVBQ1osc0JBQThCO1lBRzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBTTVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQWhCcUIsaUJBQVUsYUFnQi9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRnFCLGlCQUFVLGFBRS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLE9BQWU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLGtCQUFrQjthQUN6QixDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFMcUIsaUJBQVUsYUFLL0IsQ0FBQTtRQUlEOztXQUVHO1FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFVO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFGcUIsaUJBQVUsYUFFL0IsQ0FBQTtRQUlNLEtBQUssVUFBVSxXQUFXLENBQUMsR0FBVztZQUMzQyxNQUFNLFFBQVEsR0FBd0IsTUFBTSxLQUFLLENBQUM7Z0JBQ2hELEdBQUc7Z0JBQ0gsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFQcUIsa0JBQVcsY0FPaEMsQ0FBQTtJQUVILENBQUMsRUF0V2dCLE1BQU0sR0FBTixZQUFNLEtBQU4sWUFBTSxRQXNXdEI7SUFJRCxJQUFpQixHQUFHLENBZ0JuQjtJQWhCRCxXQUFpQixHQUFHO1FBRWxCOzs7O1dBSUc7UUFDSCxTQUFnQixRQUFRLENBQUMsU0FBMEI7WUFFakQsT0FBTyxRQUFRLENBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBR3pDLENBQUM7UUFDSixDQUFDO1FBUGUsWUFBUSxXQU92QixDQUFBO0lBRUgsQ0FBQyxFQWhCZ0IsR0FBRyxHQUFILFNBQUcsS0FBSCxTQUFHLFFBZ0JuQjtBQUVILENBQUMsRUFsbkJnQixLQUFLLEtBQUwsS0FBSyxRQWtuQnJCO0FBSUQsTUFBTSxLQUFXLFlBQVksQ0EyVjVCO0FBM1ZELFdBQWlCLFlBQVk7SUFzRDNCOzs7T0FHRztJQW1CSDs7OztPQUlHO0lBQ1UsK0NBQWtDLEdBQUcsS0FBSyxFQUFHLE9BQWUsRUFBQyxPQVF6RSxFQUFpQixFQUFFO1FBQ3RCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsMkJBQWMsR0FBRyxHQUFHLEVBQUU7UUFDckMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1UscUNBQXdCLEdBQUcsQ0FDdEMsT0FBZSxFQUNmLE9BQXlELEVBQ3pELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFD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SztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFLVyw4QkFBZ0IsR0FBRyxHQUFTLEVBQUU7UUFDN0MsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyxtQkFBSyxHQUFHLEtBQUssRUFBRSxFQUMxQixZQUFZLEVBQ1osUUFBUSxFQUNSLFFBQVEsRUFBRSx3Q0FBd0M7TUFNbkQsRUFBbUIsRUFBRTtRQUN4QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyxxQkFBTyxHQUFHLEtBQUssRUFBRSxPQVk3QixFQUFFLEVBQUU7UUFDUCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyx3Q0FBMEIsR0FBRyxDQUFDLE9BRTFDLEVBQWlCLEVBQUU7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7O09BRUc7SUFDVSx5QkFBVyxHQUFHLENBQUMsT0FBOEIsRUFBRSxFQUFFO1FBQ2hFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLDZCQUFlLEdBQUcsS0FBSyxFQUNsQyxJQUF1QixFQUN2QixRQUFRLEdBQUcsTUFBTSxFQUNGLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7Ozs7O09BTUc7SUFDVSx1Q0FBeUIsR0FBRyxDQUN2QyxJQUF1QixFQUNSLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQXJoQmdCLGFBQWEsS0FBYixhQUFhLFFBcWhCN0I7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBDb3JlTW9kZWxzIH0gZnJvbSAnLi9jb3JlLW1vZGVscyc7XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7ICAgcGF0aCwgICBfLCAgIGNyb3NzUGxhdGZvcm1QYXRoLCAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAgICB9IGZyb20gJy4vY29yZS1pbXBvcnRzJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IGRhdGVmb3JtYXQgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbmNvbnN0IEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTID0gZmFsc2U7XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlscyB7XG5cbiAgZXhwb3J0IGNvbnN0IHVuaXFBcnJheSA9IDxUID0gYW55PihcbiAgICBhcnJheTogYW55W10sXG4gICAgdW5pcXVlUHJvcGVydHk/OiBrZXlvZiBULFxuICApID0+IHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBhcnJheVxuICAgICAgLmZpbHRlcihmID0+ICEhZilcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHNlZW4uaGFzT3duUHJvcGVydHkodW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW0pXG4gICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgIDogKHNlZW5bdW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW1dID0gdHJ1ZSk7XG4gICAgICB9KSBhcyBUW107XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBFeGFtcGxlOlxuICAgKiBuZXcgUmVnRXhwKGVzY2FwZVN0cmluZ0ZvclJlZ0V4KCdhLmIuYycpLCdnJykgPT4gL2FcXC5iXFwuYy9nXG4gICAqL1xuICBleHBvcnQgY29uc3QgZXNjYXBlU3RyaW5nRm9yUmVnRXggPSAoc3RyaW5nRm9yUmVnRXhwOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc3RyaW5nRm9yUmVnRXhwLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICB9O1xuXG5cblxuICBleHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hhbGtTcGVjaWFsQ2hhcnMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgYW5zaVJlZ2V4ID0gL1xcdTAwMWJcXFtbMC05O10qbS9nO1xuXG5cbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoYW5zaVJlZ2V4LCAnJyk7XG4gIH1cblxuXG5cbiAgZXhwb3J0IGNvbnN0IGZ1bGxEYXRlVGltZSA9ICgpID0+IHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGZ1bGxEYXRlID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCB0YWtlblBvcnRzID0gW107XG4gIGV4cG9ydCBjb25zdCBnZXRGcmVlUG9ydCA9IGFzeW5jIChvcHRpb25zPzoge1xuICAgIHN0YXJ0RnJvbT86IG51bWJlcjtcbiAgICBob3dNYW55RnJlZVBvcnRzQWZ0ZXJUaGF0UG9ydD86IG51bWJlcjtcbiAgfSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBpbnRlcmZhY2UgQXR0ckpzb25jUHJvcCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlPzogYW55O1xuICB9XG4gIGV4cG9ydCBuYW1lc3BhY2UganNvbiB7XG4gICAgZXhwb3J0IGNvbnN0IGdldEF0cnJpYnV0aWVzID0gKFxuICAgICAganNvbkRlZXBQYXRoOiBzdHJpbmcsIC8vIGxvZGFzaCBwYXRoIHRvIHByb3BlcnR5IGluIGpzb24gZXguIGRlZXAucGF0aC50by5wcm9wXG4gICAgICBmaWxlQ29udGVudDogc3RyaW5nLCAvLyBqc29uYyBvciBqc29uNSAtIGpzb24gd2l0aCBjb21tZW50c1xuICAgICk6IEF0dHJKc29uY1Byb3BbXSA9PiB7XG4gICAgICBjb25zdCBsaW5lcyA9IGZpbGVDb250ZW50LnNwbGl0KCdcXG4nKTtcblxuICAgICAgY29uc3QgcGF0aFBhcnRzID0ganNvbkRlZXBQYXRoLnNwbGl0KCcuJykucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBbYl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFzdDogc3RyaW5nID0gYVthLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxhc3Quc3RhcnRzV2l0aChgWydgKSAmJiBiLmVuZHNXaXRoKGAnXWApKSB8fFxuICAgICAgICAgIChsYXN0LnN0YXJ0c1dpdGgoYFtcImApICYmIGIuZW5kc1dpdGgoYFwiXWApKVxuICAgICAgICApIHtcbiAgICAgICAgICBhW2EubGVuZ3RoIC0gMV0gPSBbbGFzdCwgYl0uam9pbignLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGEucHVzaChiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIFtdKTtcblxuXG4gICAgICBjb25zdCBrZXlOYW1lID0gcGF0aFBhcnRzLnBvcCgpIS5yZXBsYWNlKC9eXFxbXCIoLispXCJcXF0kLywgJyQxJyk7XG4gICAgICBsZXQgY3VycmVudFBhdGggPSAnJztcbiAgICAgIGxldCBhdHRyaWJ1dGVzOiBBdHRySnNvbmNQcm9wW10gPSBbXTtcbiAgICAgIGxldCBjb2xsZWN0ZWRDb21tZW50czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRMaW5lID0gbGluZS50cmltKCk7XG5cbiAgICAgICAgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJy8vJykpIHtcblxuICAgICAgICAgIGNvbGxlY3RlZENvbW1lbnRzLnB1c2godHJpbW1lZExpbmUpO1xuXG5cbiAgICAgICAgfSBlbHNlIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCdcIicpIHx8IHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoXCInXCIpKSB7XG5cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHRyaW1tZWRMaW5lLm1hdGNoKC9bXCInXShbXlwiJ10rKVtcIiddXFxzKjovKTtcblxuICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGN1cnJlbnRQYXRoXG4gICAgICAgICAgICAgID8gYCR7Y3VycmVudFBhdGh9LiR7a2V5LmluY2x1ZGVzKCcuJykgPyBgWycke2tleX0nXWAgOiBrZXl9YFxuICAgICAgICAgICAgICA6IGtleTtcblxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChjdXJyZW50UGF0aC5lbmRzV2l0aChrZXlOYW1lKSAmJlxuICAgICAgICAgICAgICAgICFjdXJyZW50UGF0aC5lbmRzV2l0aCgnLycgKyBrZXlOYW1lKSkgfHxcbiAgICAgICAgICAgICAgY3VycmVudFBhdGguZW5kc1dpdGgoYFsnJHtrZXlOYW1lfSddYClcbiAgICAgICAgICAgICkge1xuXG5cblxuXG5cbiAgICAgICAgICAgICAgYXR0cmlidXRlcyA9IGV4dHJhY3RBdHRyaWJ1dGVzRnJvbUNvbW1lbnRzKGNvbGxlY3RlZENvbW1lbnRzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgY29sbGVjdGVkQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfTtcblxuICAgIGNvbnN0IGV4dHJhY3RBdHRyaWJ1dGVzRnJvbUNvbW1lbnRzID0gKFxuICAgICAgY29tbWVudHM6IHN0cmluZ1tdLFxuICAgICk6IEF0dHJKc29uY1Byb3BbXSA9PiB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBBdHRySnNvbmNQcm9wW10gPSBbXTtcbiAgICAgIGNvbnN0IGF0dHJSZWdleCA9IC9AKFxcdyspKD86XFxzKj1cXHMqKFteXFxzQF0rKSk/L2c7XG5cbiAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSBhdHRyUmVnZXguZXhlYyhjb21tZW50KSkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBbLCBuYW1lLCB2YWx1ZV0gPSBtYXRjaDtcblxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQXR0cmlidXRlID0gYXR0cmlidXRlcy5maW5kKFxuICAgICAgICAgICAgYXR0ciA9PiBhdHRyLm5hbWUgPT09IGBAJHtuYW1lfWAsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChleGlzdGluZ0F0dHJpYnV0ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlID0gW2V4aXN0aW5nQXR0cmlidXRlLnZhbHVlLCB2YWx1ZV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogYEAke25hbWV9YCxcbiAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gdmFsdWUgOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cblxuICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhdHRyLnZhbHVlKSAmJiBhdHRyLnZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGF0dHIudmFsdWUgPSBhdHRyLnZhbHVlWzBdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfTtcbiAgfVxuXG5cblxuXG5cbiAgZXhwb3J0IGVudW0gRGJCaW5hcnlGb3JtYXRFbnVtIHtcbiAgICBCbG9iID0gJ0Jsb2InLFxuICAgIEZpbGUgPSAnRmlsZScsXG4gICAgc3RyaW5nID0gJ3N0cmluZycsXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuICBleHBvcnQgdHlwZSBEYkJpbmFyeUZvcm1hdEZvckJyb3dzZXIgPSBCbG9iIHwgRmlsZSB8IHN0cmluZztcbi8qICovXG4vKiAqL1xuICBcblxuICAvKipcbiAgICogQmluYXJ5IGZvcm1hdCB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gZGF0YWJhc2VcbiAgICpcbiAgICogZm9yIG5vZGVqcyA9PiBCdWZmZXJcbiAgICogZm9yIHNxbC5qcyA9PiBzdHJpbmcgKHNob3VsYiBiZSBibG9iIC0gYnV0IG5vdCBzdXBwb3J0ZWQpXG4gICAqXG4gICAqL1xuICBleHBvcnQgdHlwZSBEYkJpbmFyeUZvcm1hdCA9XG4gICAgfCBEYkJpbmFyeUZvcm1hdEZvckJyb3dzZXJcbi8qICovXG4vKiAqL1xuICBcblxuICBleHBvcnQgbmFtZXNwYWNlIGJpbmFyeSB7XG5cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgZm9yIEJST1dTRVIgT05MWVxuICAgICAqXG4gICAgICogQHBhcmFtIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBjb250ZW50VHlwZVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFycmF5QnVmZmVyVG9CbG9iKFxuICAgICAgYnVmZmVyOiBBcnJheUJ1ZmZlcixcbiAgICAgIGNvbnRlbnRUeXBlOiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuICAgIH1cblxuXG5cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgZm9yIEJST1dTRVIgT05MWVxuICAgICAqIEBwYXJhbSBibG9iXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvQXJyYXlCdWZmZXIoYmxvYjogQmxvYik6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkZW5kJywgKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcmVqZWN0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7XG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogaXQgaXMgcmV2ZXJzIHRvIGJhc2U2NHRvQmxvYlxuICAgICAqIEBwYXJhbSBibG9iXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gYmxvYlRvQmFzZTY0KGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIF8pID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogaXQgaXMgcmV2ZXJzIHRvIGJsb2JUb0Jhc2U2NCgpXG4gICAgICogQHBhcmFtIGJhc2U2NERhdGFcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBiYXNlNjR0b0Jsb2IoXG4gICAgICBiYXNlNjREYXRhOiBzdHJpbmcsXG4gICAgICBjb250ZW50VHlwZU92ZXJyaWRlPzogQ29yZU1vZGVscy5Db250ZW50VHlwZSxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGxldCBjb250ZW50X3R5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUgPSB2b2lkIDAgYXMgYW55O1xuICAgICAgbGV0IGZpbGVfYmFzZTY0OiBzdHJpbmcgPSB2b2lkIDAgYXMgYW55O1xuICAgICAgaWYgKCFjb250ZW50VHlwZU92ZXJyaWRlKSB7XG4gICAgICAgIGNvbnN0IG0gPSAvXmRhdGE6KC4rPyk7YmFzZTY0LCguKykkLy5leGVjKGJhc2U2NERhdGEpO1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW3Rhb24tZnJhbWV3b3JrXVtiYXNlNjR0b0Jsb2JdIE5vdCBhIGJhc2U2NCBibG9iIFske2Jhc2U2NERhdGF9XWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBbX18sIGNvbnRlbnR0eXBlLCBmaWxlYmFzZTY0XSA9IG07XG4gICAgICAgIGNvbnRlbnRfdHlwZSA9IGNvbnRlbnR0eXBlIGFzIGFueTtcbiAgICAgICAgZmlsZV9iYXNlNjQgPSBmaWxlYmFzZTY0O1xuICAgICAgfVxuICAgICAgY29udGVudF90eXBlID0gKFxuICAgICAgICBjb250ZW50VHlwZU92ZXJyaWRlID8gY29udGVudFR5cGVPdmVycmlkZSA6IGNvbnRlbnRfdHlwZSB8fCAnJ1xuICAgICAgKSBhcyBhbnk7XG4gICAgICBiYXNlNjREYXRhID0gY29udGVudFR5cGVPdmVycmlkZSA/IGJhc2U2NERhdGEgOiBmaWxlX2Jhc2U2NDtcbiAgICAgIGNvbnN0IHNsaWNlU2l6ZSA9IDEwMjQ7XG4gICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XG4gICAgICBjb25zdCBieXRlc0xlbmd0aCA9IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICAgIGNvbnN0IHNsaWNlc0NvdW50ID0gTWF0aC5jZWlsKGJ5dGVzTGVuZ3RoIC8gc2xpY2VTaXplKTtcbiAgICAgIGNvbnN0IGJ5dGVBcnJheXMgPSBuZXcgQXJyYXkoc2xpY2VzQ291bnQpO1xuXG4gICAgICBmb3IgKGxldCBzbGljZUluZGV4ID0gMDsgc2xpY2VJbmRleCA8IHNsaWNlc0NvdW50OyArK3NsaWNlSW5kZXgpIHtcbiAgICAgICAgY29uc3QgYmVnaW4gPSBzbGljZUluZGV4ICogc2xpY2VTaXplO1xuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihiZWdpbiArIHNsaWNlU2l6ZSwgYnl0ZXNMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KGVuZCAtIGJlZ2luKTtcblxuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSBiZWdpbiwgaSA9IDA7IG9mZnNldCA8IGVuZDsgKytpLCArK29mZnNldCkge1xuICAgICAgICAgIGJ5dGVzW2ldID0gYnl0ZUNoYXJhY3RlcnNbb2Zmc2V0XS5jaGFyQ29kZUF0KDApO1xuICAgICAgICB9XG4gICAgICAgIGJ5dGVBcnJheXNbc2xpY2VJbmRleF0gPSBuZXcgVWludDhBcnJheShieXRlcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEJsb2IoYnl0ZUFycmF5cywgeyB0eXBlOiBjb250ZW50X3R5cGUgfSk7XG4gICAgfVxuXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhc2U2NHRvRGJCaW5hcnlGb3JtYXQoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxEYkJpbmFyeUZvcm1hdD4ge1xuICAgICAgbGV0IHJlc3VsdDogRGJCaW5hcnlGb3JtYXQ7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBiYXNlNjR0b0Jsb2IodGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRiQmluYXJ5Rm9ybWF0VG9CYXNlNjQoXG4gICAgICBiaW5hcnlGb3JtYXQ6IERiQmluYXJ5Rm9ybWF0LFxuICAgICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBibG9iVG9CYXNlNjQoYmluYXJ5Rm9ybWF0IGFzIGFueSk7XG4gICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpbmFyeUZvcm1hdCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRleHRUb0RiQmluYXJ5Rm9ybWF0KFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RGJCaW5hcnlGb3JtYXQ+IHtcbiAgICAgIGxldCByZXN1bHQ6IERiQmluYXJ5Rm9ybWF0O1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgdGV4dFRvQmxvYih0ZXh0KTtcbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGJCaW5hcnlGb3JtYXRUb1RleHQoXG4gICAgICBiaW5hcnlGb3JtYXQ6IERiQmluYXJ5Rm9ybWF0LFxuICAgICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBibG9iVG9UZXh0KGJpbmFyeUZvcm1hdCBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaW5hcnlGb3JtYXQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlVG9CbG9iKGZpbGU6IEZpbGUpIHtcbiAgICAgIHJldHVybiBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpKV0sIHtcbiAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9GaWxlKFxuICAgICAgYmxvYjogQmxvYixcbiAgICAgIG5hbWVGb3JGaWxlOiBzdHJpbmcgPSAnbXktZmlsZS1uYW1lJyxcbiAgICApOiBQcm9taXNlPEZpbGU+IHtcbiAgICAgIGlmICghbmFtZUZvckZpbGUpIHtcbiAgICAgICAgbmFtZUZvckZpbGUgPSAnbm9uYW1lZmlsZScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIG5hbWVGb3JGaWxlKTtcbiAgICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRleHRUb0Jsb2IoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICB0eXBlOiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlID0gJ3RleHQvcGxhaW4nLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlIH0pO1xuICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9UZXh0KGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJsb2IudGV4dCgpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvRmlsZShcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIGZpbGVSZWxhdGl2ZVBhdGhPck5hbWU6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPEZpbGU+IHtcblxuICAgICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVSZWxhdGl2ZVBhdGhPck5hbWUpO1xuXG4gICAgICBjb25zdCB0eXBlID0gQ29yZU1vZGVscy5taW1lVHlwZXNbZXh0XTtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZSB9KTtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBibG9iVG9GaWxlKGJsb2IsIGZpbGVSZWxhdGl2ZVBhdGhPck5hbWUpO1xuXG5cblxuXG5cbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsZVRvVGV4dChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaWxlLnRleHQoKTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGpzb25Ub0Jsb2IoanNvbk9iajogb2JqZWN0KTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGpzb25PYmosIG51bGwsIDIpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBibG9iO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBUT0RPIE5PVCBURVNURURcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvSnNvbihibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IGJsb2IudGV4dCgpKTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJsb2JGcm9tKHVybDogc3RyaW5nKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCByZXNwb25zZTogQXhpb3NSZXNwb25zZTxCbG9iPiA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsLFxuICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfVxuXG4gIH1cblxuXG5cbiAgZXhwb3J0IG5hbWVzcGFjZSBjc3Mge1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGl4ZWxzQ3NzIHBpeGVscyBleC4gMTAwcHhcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBudW1WYWx1ZShwaXhlbHNDc3M6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG5cbiAgICAgIHJldHVybiBwYXJzZUludChcbiAgICAgICAgcGl4ZWxzQ3NzPy50b1N0cmluZygpPy5yZXBsYWNlKCdweCcsICcnKSxcblxuXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbn1cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNQcm9jZXNzIHtcblxuICBpbnRlcmZhY2UgUmVzb2x2ZVByb21pc2VNc2cge1xuICAgIC8qKlxuICAgICAqIHVudGlsIHRoaXMgc3RyaW5nIGlzIGluIG91dHB1dCBvZiBzdGRvdXRcbiAgICAgKi9cbiAgICBzdGRvdXQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3RkZXJyXG4gICAgICovXG4gICAgc3RkZXJyPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBvbmx5IHJlc29sdmUgd2hlbiBleGl0IGNvZGUgaXMgMFxuICAgICAqL1xuICAgIHJlc29sdmVBZnRlckFueUV4aXRDb2RlPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1N0YXJ0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBpcyBwcm9jZXNzLmN3ZCgpO1xuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIGZhbHNlXG4gICAgICovXG4gICAgc2hvd0NvbW1hbmQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE1vZGlmeSBvdXRwdXQgbGluZSBieSBsaW5lXG4gICAgICovXG4gICAgb3V0cHV0TGluZVJlcGxhY2U/OiAob3V0cHV0TGluZVN0ZGVyT3JTdGRvdXQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIHJlc29sdmVQcm9taXNlTXNnPzogUmVzb2x2ZVByb21pc2VNc2c7XG4gICAgLyoqXG4gICAgICogUHJlZml4IG1lc3NhZ2VzIG91dHB1dCBmcm9tIGNoaWxkX3Byb2Nlc3NcbiAgICAgKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVHJ5IGNvbW1hbmQgYWdhaW4gYWZ0ZXIgZmFpbCBhZnRlciBuIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHRyeUFnYWluV2hlbkZhaWxBZnRlcj86IG51bWJlcjtcbiAgICBhc2tUb1RyeUFnYWluT25FcnJvcj86IGJvb2xlYW47XG4gICAgZXhpdE9uRXJyb3JDYWxsYmFjaz86IChjb2RlOiBudW1iZXIpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogVXNlIGJpZyBidWZmZXIgZm9yIGJpZyB3ZWJwYWNrIGxvZ3NcbiAgICAgKiAoaXQgbWF5IHNsb3cgZG93biBzbWFsbGVyIHByb2Nlc3NlcyBleGVjdXRpb24pXG4gICAgICovXG4gICAgYmlnZ2VyQnVmZmVyPzogYm9vbGVhbjtcbiAgICBoaWRlT3V0cHV0Pzoge1xuICAgICAgc3Rkb3V0PzogYm9vbGVhbjtcbiAgICAgIHN0ZGVycj86IGJvb2xlYW47XG4gICAgfTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogVGhpcyBsZXQgeW91IHN0YXJ0IGNoaWxkIHByb2Nlc3MgYW5kIHJlc29sdmUgcHJvbWlzZSB3aGVuIHNvbWVcbiAgICogY29uZGl0aW9uIGlzIG1ldC4gSXQgaXMgdXNlZnVsIGZvciBleGFtcGxlIHdoZW4geW91IHdhbnQgdG8gc3RhcnRcbiAgICogcHJvY2VzcyBhbmQgd2FpdCB1bnRpbCBzb21lIG91dHB1dCBpcyBpbiBzdGRvdXQgb3Igc3RkZXJyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0QXN5bmNDaGlsZFByb2Nlc3NDb21tYW5kVW50aWwgPSBhc3luYyAoIGNvbW1hbmQ6IHN0cmluZyxvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogdGVscyB3aGVuIHRvIHJlc29sdmUgcHJvbWlzZVxuICAgICAqL1xuICAgIHVudGlsT3B0aW9uczogUmVzb2x2ZVByb21pc2VNc2c7XG4gICAgZGlzcGxheU91dHB1dEluUGFyZW50UHJvY2Vzcz86IGJvb2xlYW47XG4gICAgcmVzb2x2ZUFmdGVyQW55RXhpdENvZGU/OiBib29sZWFuO1xuICAgIGN3ZD86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0R2l0QmFzaFBhdGggPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRJbk5ld1Rlcm1pbmFsV2luZG93ID0gKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUGljazxQcm9jZXNzU3RhcnRPcHRpb25zLCAnY3dkJyB8ICdoaWRlT3V0cHV0Jz4sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0QmFzaE9yU2hlbGxOYW1lID0gKCk6XG4gICAgfCAnYnJvd3NlcidcbiAgICB8ICdjbWQnXG4gICAgfCAncG93ZXJzaGVsbCdcbiAgICB8ICdnaXRiYXNoJ1xuICAgIHwgJ2N5Z3dpbidcbiAgICB8ICd1bmtub3duJ1xuICAgIHwgJ2Jhc2gnXG4gICAgfCAnenNoJ1xuICAgIHwgJ2Zpc2gnXG4gICAgfCAnc2gnID0+IHtcblxuICAgIHJldHVybiAnYnJvd3Nlcic7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNPcyB7XG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIGluIGNsaWVudCBicm93c2VyXG4gICAqICh3ZWJzcWwgbW9kZWwgLT4gaXMgYWxzbyBjb25zaWRlcmVkIGFzIGJyb3dzZXJcbiAgICogYmVjYXVzZSBpdCBpcyBydW5uaW5nIGluIGJyb3dzZXIpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ccm93c2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gbm9kZWpzXG4gICAqIChiYWNrZW5kIHNjcmlwdCBvciBlbGVjdHJvbiBzY3JpcHQpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ob2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIHNwZWNpYWxcbiAgICogYnJvd3NlciBtb2RlIHRoYXQgaGFzIHNxbC5qcyBiYWNrZW5kXG4gICAqIGFuZCBleGVjdXRlcyBzcWwgcXVlcmllcyBpbiBicm93c2VyXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XZWJTUUwgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbnNpZGVcbiAgICogRWxlY3Ryb24gYmFja2VuZCBvciBicm93c2VyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRWxlY3Ryb24gPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB3aW5kb3cucHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcidcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAhIXByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb25cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFbGVjdHJvbicpID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIHdpbmRvd3Mgc3Vic3lzdGVtIGZvciBsaW51eCAoV1NMKS5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldzbCA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIGV4cG9ydCBjb25zdCBjbGVhckNvbnNvbGUgPSAoKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCB0cmFuc2Zvcm1DaG9pY2VzID0gKFxuICAgIGNob2ljZXM6IGFueSxcbiAgKTogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBtdWx0aXNlbGVjdCA9IGFzeW5jIDxUID0gc3RyaW5nPihvcHRpb25zOiB7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCB0aGVuIG9ubHkgb25lIGNob2ljZSBjYW4gYmUgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBvbmx5T25lQ2hvaWNlPzogYm9vbGVhbjtcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9O1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nW107XG4gIH0pOiBQcm9taXNlPFRbXT4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgdHlwZSBTZWxlY3RBY3Rpb25DaG9pY2UgPSB7XG4gICAgW2Nob2ljZTogc3RyaW5nXToge1xuICAgICAgLyoqXG4gICAgICAgKiBUaXRsZSBvZiB0aGUgY2hvaWNlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQWN0aW9uIHRvIGV4ZWN1dGVcbiAgICAgICAqL1xuICAgICAgYWN0aW9uPzogKCkgPT4gYW55O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIHNlbGVjdCBidXQgZXhlY3V0ZXMgYWN0aW9uIGlmIHByb3ZpZGVkXG4gICAqIEByZXR1cm5zIHNlbGVjdGVkIGFuZCBleGVjdXRlZCB2YWx1ZVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHNlbGVjdEFjdGlvbkFuZEV4ZWN1dGUgPSBhc3luYyA8XG4gICAgQ0hPSUNFIGV4dGVuZHMgU2VsZWN0QWN0aW9uQ2hvaWNlID0gU2VsZWN0QWN0aW9uQ2hvaWNlLFxuICA+KFxuICAgIGNob2ljZXM6IENIT0lDRSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gICAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgICAgaGludD86IHN0cmluZztcbiAgICAgIGV4ZWN1dGVBY3Rpb25PbkRlZmF1bHQ/OiBib29sZWFuO1xuICAgIH0sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICBoaW50Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG4gIGV4cG9ydCBjb25zdCBwaXBlRW50ZXJUb1N0ZGluID0gKCk6IHZvaWQgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaW5wdXQgPSBhc3luYyAoe1xuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBxdWVzdGlvbixcbiAgICByZXF1aXJlZCwgLy8gVE9ETyBzb21ldGhpbmcgaXMgd2VyaWQgd2l0aCByZXF1aXJlZFxuICB9OiB7XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlPzogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgcHJlc3NBbnlLZXlUb0NvbnRpbnVlQXN5bmMgPSAob3B0aW9ucz86IHtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFV0aWxzVGVybWluYWwucHJlc3NBbnlLZXlUb0NvbnRpbnVlQXN5bmMoKVxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5ID0gKG9wdGlvbnM/OiB7IG1lc3NhZ2U/OiBzdHJpbmcgfSkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXZpZXdMb25nTGlzdCA9IGFzeW5jIChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBsaXN0TmFtZSA9ICdMaXN0JyxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIGxvbmcgbGlzdCBpbiB0aGUgY29uc29sZSB1c2luZyBhIHBhZ2VyIGxpa2UgYGxlc3NgLlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHVzZXIgZXhpdHMgdGhlIHBhZ2VyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGlzdCAtIFRoZSBsb25nIHN0cmluZyBjb250ZW50IHRvIGRpc3BsYXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwYWdlciBleGl0cy5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3RHaXRMb2dMaWtlID0gKFxuICAgIGxpc3Q6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL3V0aWxzLnRzIl19
|
@@ -1159,15 +1159,79 @@ var UtilsProcess;
|
|
1159
1159
|
* TODO IMPLEMENT
|
1160
1160
|
* start async node process
|
1161
1161
|
*/
|
1162
|
-
async function startAsync(command, options) {
|
1163
|
-
}
|
1164
|
-
UtilsProcess.startAsync = startAsync;
|
1165
1162
|
/**
|
1166
|
-
*
|
1163
|
+
* This let you start child process and resolve promise when some
|
1164
|
+
* condition is met. It is useful for example when you want to start
|
1165
|
+
* process and wait until some output is in stdout or stderr.
|
1167
1166
|
*/
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1167
|
+
UtilsProcess.startAsyncChildProcessCommandUntil = async (command, options) => {
|
1168
|
+
/* */
|
1169
|
+
/* */
|
1170
|
+
/* */
|
1171
|
+
/* */
|
1172
|
+
/* */
|
1173
|
+
/* */
|
1174
|
+
/* */
|
1175
|
+
/* */
|
1176
|
+
/* */
|
1177
|
+
/* */
|
1178
|
+
/* */
|
1179
|
+
/* */
|
1180
|
+
/* */
|
1181
|
+
/* */
|
1182
|
+
/* */
|
1183
|
+
/* */
|
1184
|
+
/* */
|
1185
|
+
/* */
|
1186
|
+
/* */
|
1187
|
+
/* */
|
1188
|
+
/* */
|
1189
|
+
/* */
|
1190
|
+
/* */
|
1191
|
+
/* */
|
1192
|
+
/* */
|
1193
|
+
/* */
|
1194
|
+
/* */
|
1195
|
+
/* */
|
1196
|
+
/* */
|
1197
|
+
/* */
|
1198
|
+
/* */
|
1199
|
+
/* */
|
1200
|
+
/* */
|
1201
|
+
/* */
|
1202
|
+
/* */
|
1203
|
+
/* */
|
1204
|
+
/* */
|
1205
|
+
/* */
|
1206
|
+
/* */
|
1207
|
+
/* */
|
1208
|
+
/* */
|
1209
|
+
/* */
|
1210
|
+
/* */
|
1211
|
+
/* */
|
1212
|
+
/* */
|
1213
|
+
/* */
|
1214
|
+
/* */
|
1215
|
+
/* */
|
1216
|
+
/* */
|
1217
|
+
/* */
|
1218
|
+
/* */
|
1219
|
+
/* */
|
1220
|
+
/* */
|
1221
|
+
/* */
|
1222
|
+
/* */
|
1223
|
+
/* */
|
1224
|
+
/* */
|
1225
|
+
/* */
|
1226
|
+
/* */
|
1227
|
+
/* */
|
1228
|
+
/* */
|
1229
|
+
/* */
|
1230
|
+
/* */
|
1231
|
+
/* */
|
1232
|
+
/* */
|
1233
|
+
return (void 0);
|
1234
|
+
};
|
1171
1235
|
UtilsProcess.getGitBashPath = () => {
|
1172
1236
|
/* */
|
1173
1237
|
/* */
|