mis-crystal-design-system 18.2.16 → 18.2.18
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/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +62 -63
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +61 -62
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/package.json +30 -30
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
|
@@ -377,7 +377,7 @@ export class TzDrpContainerComponent {
|
|
|
377
377
|
}
|
|
378
378
|
generateDates(month, currentYearNumber) {
|
|
379
379
|
const dates = [];
|
|
380
|
-
const daysInMonth =
|
|
380
|
+
const daysInMonth = new Date(currentYearNumber, month + 1, 0).getDate();
|
|
381
381
|
for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {
|
|
382
382
|
const date = this.dayjsInstance()().year(currentYearNumber).month(month).date(currentDate);
|
|
383
383
|
const dateString = date.format(this.data().dpConfig.format);
|
|
@@ -696,4 +696,4 @@ export class TzDrpContainerComponent {
|
|
|
696
696
|
args: [CONTAINER_DATA]
|
|
697
697
|
}] }, { type: i1.ToastService }, { type: i0.ElementRef }], null); })();
|
|
698
698
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDrpContainerComponent, { className: "TzDrpContainerComponent" }); })();
|
|
699
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxLQUFvQixNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7SUNUL0MsK0JBTUM7SUFIQyw0TkFBaUIsOEJBQW9CLEtBQUM7SUFJdEMscUNBQXFKO0lBQWxGLHdNQUFlLDJCQUFvQixLQUFDO0lBQThDLGlCQUFZO0lBQ2pLLDRCQUFNO0lBQUEsWUFBVTtJQUNsQixBQURrQixpQkFBTyxF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ZUFBYTtZQUFiLHdDQUFhO1lBc0IvRCxlQUFzQjtZQUF0QixpREFBc0I7WUFhOUMsY0FxREM7WUFyREQsaURBcURDO1lBRW1ELGNBQXVKOztZQUM5SixlQUFvQjtZQUFwQiw2Q0FBb0I7WUFDdEIsZUFBOEQ7WUFBOUQscURBQThEO1lBQ3pHLGNBRUM7WUFGRCw2RkFFQztZQUdNLGVBQWdDO1lBQWhDLHFEQUFnQztZQUdoQyxjQUF5QjtZQUF6Qiw4Q0FBeUI7WUFHckIsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQXlCO1lBQXpCLDhDQUF5Qjs7O2lGRHpIM0IsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0UsWUFBWTs7c0JBeUZuQixNQUFNO3VCQUFDLGNBQWM7O2tGQXJGYix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcmFuZ2VwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXksIElTU2VsZWN0ZWREYXRlc0NvbmZpZywgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IGRheWpzLCB7IERheWpzLCB0eiB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJztcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgaXNCZXR3ZWVuIGZyb20gJ2RheWpzL3BsdWdpbi9pc0JldHdlZW4nO1xuXG5kYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG50eXBlIFNkcE1vZGUgPSBcIlNJTkdMRVwiIHwgXCJTUEVDSUZJQ1wiIHwgXCJSQU5HRVwiO1xuXG5jb25zdCBNT0RFX0xBQkVMUzogUmVjb3JkPFNkcE1vZGUsIHN0cmluZz4gPSB7XG4gIFNJTkdMRTogXCJTaW5nbGUgRGF0ZVwiLFxuICBTUEVDSUZJQzogXCJTcGVjaWZpYyBEYXRlKHMpXCIsXG4gIFJBTkdFOiBcIkRhdGUgUmFuZ2VcIlxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10ei1zZHBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBkYXRhID0gc2lnbmFsPElEYXRlUGlja2VyRGF0YT4odGhpcy5pbmplY3RlZERhdGEpO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc01vYmlsZSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5kYXRhKCkuaXNNb2JpbGVWaWV3KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRheWpzSW5zdGFuY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5kYXRhKCkuZHBDb25maWc7XG4gICAgaWYgKGNvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSB0aW1lem9uZS1hd2FyZSBkYXlqcyBpbnN0YW5jZVxuICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gZGF5anMoLi4uYXJncykudHooY29uZmlnLnRpbWV6b25lKTtcbiAgICB9XG4gICAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIHN0YW5kYXJkIGRheWpzIGluc3RhbmNlXG4gICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gZGF5anMoLi4uYXJncyk7XG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBzaWduYWw8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlID0gc2lnbmFsPElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0RhdGVzVmFsaWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQoKSkge1xuICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgICByZXR1cm4gISEocmFuZ2U/LnN0YXJ0RGF0ZSAmJiByYW5nZT8uZW5kRGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDxTZHBNb2RlPihcIlNQRUNJRklDXCIpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09IFwiU1BFQ0lGSUNcIik7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gXCJTSU5HTEVcIik7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpID09PSBcIlJBTkdFXCIpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKE1PREVfTEFCRUxTLlNQRUNJRklDKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVQaWNrZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmdbXT4oW01PREVfTEFCRUxTLlNQRUNJRklDLCBNT0RFX0xBQkVMUy5SQU5HRV0pO1xuICBcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRNb250aE51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5tb250aCgpIDogZGF5anMoKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRZZWFyTnVtYmVyID0gc2lnbmFsKHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnPy50aW1lem9uZSA/IGRheWpzKCkudHoodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWcudGltZXpvbmUpLnllYXIoKSA6IGRheWpzKCkueWVhcigpKTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRNb250aE51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpIDogZGF5anMoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRZZWFyTnVtYmVyID0gc2lnbmFsKHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnPy50aW1lem9uZSA/IGRheWpzKCkudHoodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWcudGltZXpvbmUpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSA6IGRheWpzKCkuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgXG5cbiAgcHVibGljIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJhd1dlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gKHtcbiAgICAgIGxhYmVsOiBgJHtkYXlbMF19JHtkYXkuc2xpY2UoMSkudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgaXNDdXJyZW50RGF5OiB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSB0b2RheU1vbnRoTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKTtcbiAgICBpZiAocmFuZ2U/LnN0YXJ0RGF0ZSAmJiByYW5nZT8uZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5lbmREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgaWYgKHN0YXJ0LmlzVmFsaWQoKSAmJiBlbmQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgJ2RheScpICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtaW5EYXRlLmlzVmFsaWQoKSAmJiBtaW5EYXRlLmlzU2FtZU9yQWZ0ZXIoY3VycmVudEluc3RhbmNlLCBcIm1vbnRoXCIpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWF4RGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtYXhEYXRlLmlzVmFsaWQoKSAmJiBtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpO1xuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1NlY29uZE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNNb2JpbGUoKSAmJiAhdGhpcy5zaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT05UQUlORVJfREFUQSkgcHJpdmF0ZSBpbmplY3RlZERhdGE6IElEYXRlUGlja2VyRGF0YSxcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcy5zZXQodGhpcy5kYXRhKCkuZGF0ZXMpO1xuICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2Uuc2V0KHRoaXMuaW5qZWN0ZWREYXRhLmRhdGVzUmFuZ2UgfHwge3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuXG4gICAgaWYgKHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSkge1xuICAgICAgaWYgKCF0aGlzLmRhdGVQaWNrZXJWYWx1ZSgpLmluY2x1ZGVzKE1PREVfTEFCRUxTLlNJTkdMRSkpIHtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyVmFsdWUudXBkYXRlKGN1cnJlbnRWYWx1ZSA9PiBbTU9ERV9MQUJFTFMuU0lOR0xFLCAuLi5jdXJyZW50VmFsdWVdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0TW9kZShcIlNJTkdMRVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRNb2RlKHRoaXMuZGF0YSgpLmlzU1BpY2tlclNlbGVjdGVkID8gXCJTUEVDSUZJQ1wiIDogXCJSQU5HRVwiKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YSgpPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEoKS5kcENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXRhKCkuZHBDb25maWcsXG4gICAgICAgIGZvcm1hdDogREFURV9GT1JNQVRcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMucG9zaXRpb25Ub1NlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRNb2RlKG1vZGU6IFNkcE1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUuc2V0KG1vZGUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoTU9ERV9MQUJFTFNbbW9kZV0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBpZiAobW9kZSA9PT0gXCJTSU5HTEVcIiAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnVwZGF0ZShkYXRlcyA9PiBkYXRlcy5zbGljZSgwLCAxKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvblRvU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdDtcbiAgICBjb25zdCBzZWxlY3RlZFN0YXJ0RGF0ZTogRGF5anMgPSB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKClcbiAgICAgID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIGZvcm1hdClcbiAgICAgIDogdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKT8uWzBdPy5zZWxlY3RlZERhdGUsIGZvcm1hdCk7XG4gICAgaWYgKCFzZWxlY3RlZFN0YXJ0RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUueWVhcigpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5nZXQoXCJtb250aFwiKSk7XG4gICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgY29uc3QgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXlzSW5Nb250aCgpO1xuICAgIFxuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGRhdGUuaXNTYW1lKHRoaXMuZGF5anNJbnN0YW5jZSgpKCksICdkYXknKTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5zb21lKGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID0gISF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGU7XG4gICAgICBjb25zdCBpblJhbmdlRGF5ID0gISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUuaXNCZXR3ZWVuKHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksICdkYXknLCAnKCknKTtcblxuICAgICAgY29uc3QgaXNIb2xpZGF5ID0gdGhpcy5kYXRhKCkuaG9saWRheXMuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1dlZWtPZmYgPSB0aGlzLmRhdGEoKS53ZWVrT2Zmcy5pbmNsdWRlcyhkYXRlLmZvcm1hdCgnZGRkJykpO1xuICAgICAgY29uc3QgaXNOb1Nob3cgPSB0aGlzLmRhdGEoKS5ub1Nob3cuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG5cbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIGlzSG9saWRheSxcbiAgICAgICAgaXNOb1Nob3csXG4gICAgICAgIGlzV2Vla09mZixcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gZGF0ZXNbMF0/LndlZWtEYXkgfHwgMDsgaSA+IDA7IGktLSkge1xuICAgICAgZGF0ZXMudW5zaGlmdCh7IGRhdGU6IDAsIHdlZWtEYXk6IGkgLSAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICB9XG5cbiAgc2VsZWN0RGF5KGZyb206IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQoKSkge1xuICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKClcbiAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAuZGF0ZShkYXkuZGF0ZSkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnNldChbeyBzZWxlY3RlZERhdGU6IGN1cnJlbnRTZWxlY3Rpb24gfV0pO1xuICAgICAgICB0aGlzLmFwcGx5RGF0ZXMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjdXJyZW50LmZpbmRJbmRleChkID0+IGQuc2VsZWN0ZWREYXRlID09PSBjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSBleGlzdGluZ0luZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFsuLi5jdXJyZW50LCB7IHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvbiB9XTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRheWpzRGF5ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSA6IHRoaXMubmV4dFllYXJOdW1iZXIoKSlcbiAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgIC5kYXRlKGRheS5kYXRlKTtcbiAgICAgIFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgIGlmIChkYXlqc0RheS5pc0JlZm9yZSh0aGlzLmRheWpzSW5zdGFuY2UoKShjdXJyZW50LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCBlbmREYXRlOiBudWxsIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnQsIGVuZERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkLnNldCh0cnVlKTtcbiAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCBlbmREYXRlOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNjaGVkdWxlRm9jdXNDZWxsKHRoaXMuZ2V0RGF5Q2VsbElkKGRheSwgZnJvbSkpO1xuICB9XG5cbiAgYXBwbHlEYXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5kYXRlQ2hhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCkpO1xuICB9XG5cbiAgYXBwbHlEYXRlc1JhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2VSYW5nZSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCkpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBjb25zdCBtb2RlID0gKE9iamVjdC5rZXlzKE1PREVfTEFCRUxTKSBhcyBTZHBNb2RlW10pLmZpbmQoa2V5ID0+IE1PREVfTEFCRUxTW2tleV0gPT09IGV2ZW50KTtcbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zZXRNb2RlKG1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERheUNlbGxTdHlsZShkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGhhc01hcmtlciA9ICEhKGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93KTtcbiAgICByZXR1cm4ge1xuICAgICAgXCJqdXN0aWZ5LWNvbnRlbnRcIjogaGFzTWFya2VyID8gXCJmbGV4LXN0YXJ0XCIgOiBcImNlbnRlclwiLFxuICAgICAgXCJwYWRkaW5nLXRvcFwiOiBoYXNNYXJrZXIgPyBcIjIuOHB4XCIgOiBcIjBweFwiLFxuICAgICAgXCJtYXJnaW4tcmlnaHRcIjogdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpID8gXCIwcHhcIiA6IFwiMXB4XCIsXG4gICAgICB3aWR0aDogdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpID8gXCIzNnB4XCIgOiBcIjM1cHhcIixcbiAgICAgIGhlaWdodDogaGFzTWFya2VyID8gXCIzM3B4XCIgOiBcIjM2cHhcIlxuICAgIH07XG4gIH1cblxuICBnZXREYXlUYWJJbmRleChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBpZiAoIWRhdGVzPy5sZW5ndGgpIHJldHVybiAtMTtcbiAgICBjb25zdCBmaXJzdEluZGV4ID0gZGF0ZXMuZmluZEluZGV4KChkKSA9PiBkLmRhdGUgPiAwICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgIGlmIChmaXJzdEluZGV4IDwgMCkgcmV0dXJuIC0xO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRhdGVzLmZpbmRJbmRleCgoZCkgPT4gZCA9PT0gZGF5KTtcbiAgICByZXR1cm4gY3VycmVudEluZGV4ID09PSBmaXJzdEluZGV4ID8gMCA6IC0xO1xuICB9XG5cbiAgZ2V0RGF5Q2VsbElkKGRheTogSUN1cnJlbnRNb250aERhdGVzLCBwYW5lbDogXCJMRUZUXCIgfCBcIlJJR0hUXCIpOiBzdHJpbmcge1xuICAgIGlmIChkYXk/LmRhdGUgPD0gMCkgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgbW9udGggPSBwYW5lbCA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlcigpIDogdGhpcy5uZXh0TW9udGhOdW1iZXIoKTtcbiAgICBjb25zdCB5ZWFyID0gcGFuZWwgPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpO1xuICAgIHJldHVybiBgJHtwYW5lbCA9PT0gXCJMRUZUXCIgPyBcIkxcIiA6IFwiUlwifS0ke21vbnRofS0ke3llYXJ9LSR7ZGF5LmRhdGV9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVGb2N1c0NlbGwoY2VsbElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWNlbGxJZCkgcmV0dXJuO1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhvc3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MRWxlbWVudD4oYFtkYXRhLXNkcC1jZWxsPVwiJHtjZWxsSWR9XCJdYCk7XG4gICAgICBpZiAoZWw/LmZvY3VzKSBlbC5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUk9XX1NJWkUgPSA3O1xuXG4gIGdldERheUluZGV4SW5Nb250aChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBpZHggPSBkYXRlcy5maW5kSW5kZXgoKGQpID0+IGQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCA6IC0xO1xuICB9XG5cbiAgZ2V0TmV4dERheUluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyLCBkaXJlY3Rpb246IFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIiwgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBsZW4gPSBkYXRlcy5sZW5ndGg7XG4gICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGxldCBkZWx0YSA9IDA7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJBcnJvd1JpZ2h0XCIpIGRlbHRhID0gMTtcbiAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiQXJyb3dMZWZ0XCIpIGRlbHRhID0gLTE7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93VXBcIikgZGVsdGEgPSAtVHpEcnBDb250YWluZXJDb21wb25lbnQuUk9XX1NJWkU7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93RG93blwiKSBkZWx0YSA9IFR6RHJwQ29udGFpbmVyQ29tcG9uZW50LlJPV19TSVpFO1xuICAgIGxldCBuZXh0ID0gY3VycmVudEluZGV4ICsgZGVsdGE7XG4gICAgaWYgKG5leHQgPCAwIHx8IG5leHQgPj0gbGVuKSByZXR1cm4gLTE7XG4gICAgaWYgKGRhdGVzW25leHRdLmRhdGUgPiAwICYmICFkYXRlc1tuZXh0XS5pc0Rpc2FibGVkRGF5KSByZXR1cm4gbmV4dDtcbiAgICB3aGlsZSAobmV4dCA+PSAwICYmIG5leHQgPCBsZW4gJiYgKGRhdGVzW25leHRdLmRhdGUgPT09IDAgfHwgZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSkpIHtcbiAgICAgIG5leHQgKz0gZGVsdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXh0ID49IDAgJiYgbmV4dCA8IGxlbiAmJiBkYXRlc1tuZXh0XS5kYXRlID4gMCAmJiAhZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSA/IG5leHQgOiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUZvY3VzVG9BZGphY2VudE1vbnRoKGtleTogXCJBcnJvd0xlZnRcIiB8IFwiQXJyb3dSaWdodFwiIHwgXCJBcnJvd1VwXCIgfCBcIkFycm93RG93blwiKTogdm9pZCB7XG4gICAgY29uc3QgZ29Gb3J3YXJkID0ga2V5ID09PSBcIkFycm93UmlnaHRcIiB8fCBrZXkgPT09IFwiQXJyb3dEb3duXCI7XG4gICAgaWYgKGdvRm9yd2FyZCkge1xuICAgICAgaWYgKHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgICB0aGlzLm5hdmlnYXRlTW9udGgoXCJORVhUXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgICB0aGlzLm5hdmlnYXRlTW9udGgoXCJQUkVWSU9VU1wiKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0YWJsZSA9IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKS5maWx0ZXIoZCA9PiBkLmRhdGUgPiAwICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgIGNvbnN0IHRhcmdldCA9IGdvRm9yd2FyZCA/IHNlbGVjdGFibGVbMF0gOiBzZWxlY3RhYmxlW3NlbGVjdGFibGUubGVuZ3RoIC0gMV07XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGhpcy5zY2hlZHVsZUZvY3VzQ2VsbCh0aGlzLmdldERheUNlbGxJZCh0YXJnZXQsIFwiTEVGVFwiKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGF5S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGNvbnN0IGFycm93S2V5cyA9IFtcIkFycm93TGVmdFwiLCBcIkFycm93UmlnaHRcIiwgXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCJdO1xuICAgIGlmIChhcnJvd0tleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0RGF5SW5kZXhJbk1vbnRoKGRheSwgcGFuZWwpO1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IDApIHJldHVybjtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZ2V0TmV4dERheUluZGV4KGN1cnJlbnRJbmRleCwgZXZlbnQua2V5IGFzIFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIiwgcGFuZWwpO1xuICAgICAgaWYgKG5leHRJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGRhdGVzID0gcGFuZWwgPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhEYXRlcygpIDogdGhpcy5uZXh0TW9udGhEYXRlcygpO1xuICAgICAgICBjb25zdCBuZXh0RGF5ID0gZGF0ZXNbbmV4dEluZGV4XTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUZvY3VzQ2VsbCh0aGlzLmdldERheUNlbGxJZChuZXh0RGF5LCBwYW5lbCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuc2hvd1NlY29uZE1vbnRoKCkpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNUb0FkamFjZW50TW9udGgoZXZlbnQua2V5IGFzIFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdERheShwYW5lbCwgZGF5KTtcbiAgICB9XG4gIH1cblxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lclwiIFtjbGFzcy5tb2JpbGUtdmlld109XCJpc01vYmlsZSgpXCIgW2NsYXNzLnNpbmdsZS1kYXRlLXBpY2tlci1lbmFibGVkXT1cImRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGVcIiBhcmlhLWxhYmVsPVwiQ2hvb3NlIGRhdGUgb3IgZGF0ZSByYW5nZVwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiPlxuICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbjxkaXZcbiAgY2xhc3M9XCJsYWJlbFwiXG4gIHRhYmluZGV4PVwiMFwiXG4gIChrZXlkb3duLmVudGVyKT1cImNoYW5nZVBpY2tlcihwaWNrZXIpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZm9ybUNvbnRyb2w/LnZhbHVlID09PSBwaWNrZXIpID8gKHBpY2tlciArICcsIHNlbGVjdGVkJykgOiAocGlja2VyICsgJywgY2xpY2sgdG8gc2VsZWN0JylcIlxuICAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpOyBsZXQgaSA9IGluZGV4XCJcbj5cbiAgPG1pcy1yYWRpbyBjbGFzcz1cImlucHV0XCIgW25hbWVdPVwiJ2RhdGVTZWxlY3Rpb24nXCIgW3ZhbHVlXT1cInBpY2tlclwiICh2YWx1ZUNoYW5nZSk9XCJjaGFuZ2VQaWNrZXIoJGV2ZW50KVwiIG5nRGVmYXVsdENvbnRyb2wgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCI+PC9taXMtcmFkaW8+XG4gIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG48L2Rpdj5cbjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fdmlld1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19sZWZ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93U3ZnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIEBpZiAoIXNob3dTZWNvbmRNb250aCgpKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93U3ZnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCI+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdjdXJyZW50LWRheSc6IHdlZWtEYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKVxuICAgICAgICAgICAgfVwiPnt7IHdlZWtEYXkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5c1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc2RwLWNlbGxdPVwiZ2V0RGF5Q2VsbElkKGRheSwgJ0xFRlQnKVwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXREYXlUYWJJbmRleChkYXksICdMRUZUJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXkuZGF0ZSA+IDAgPyAoZGF5LmRhdGUgKyAnICcgKyBjdXJyZW50TW9udGgoKSArICcgJyArIGN1cnJlbnRZZWFyTnVtYmVyKCkgKyAoZGF5LmlzRGlzYWJsZWREYXkgPyAnLCBkaXNhYmxlZCcgOiAnJykpIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRheS5pc0Rpc2FibGVkRGF5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLWRheSc6IGRheS5pc1NlbGVjdGVkRGF5ICYmICFkYXRlUmFuZ2VTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgZGF0ZVJhbmdlU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmIGRhdGVSYW5nZVNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXREYXlDZWxsU3R5bGUoZGF5KVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnTEVGVCcsZGF5KVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVEYXlLZXlkb3duKCRldmVudCwgJ0xFRlQnLCBkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NpcmN1bGFyLWRvdCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93LFxuICAgICAgICAgICAgJ25vU2hvdyc6IGRheS5pc05vU2hvdyB9XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheS5kYXRlID4gMFwiIFtuZ0NsYXNzXT1cInsgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSwgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93IHx8IGRheS5pc1dlZWtPZmYgfVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoc2hvd1NlY29uZE1vbnRoKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc05leHRNb250aERpc2FibGVkKClcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgICAgICAoY2xpY2spPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzTmV4dE1vbnRoRGlzYWJsZWQoKSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcnJvd1N2Z1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXNkcC1jZWxsXT1cImdldERheUNlbGxJZChkYXksICdSSUdIVCcpXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheSwgJ1JJR0hUJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXkuZGF0ZSA+IDAgPyAoZGF5LmRhdGUgKyAnICcgKyBuZXh0TW9udGgoKSArICcgJyArIG5leHRZZWFyTnVtYmVyKCkgKyAoZGF5LmlzRGlzYWJsZWREYXkgPyAnLCBkaXNhYmxlZCcgOiAnJykpIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRheS5pc0Rpc2FibGVkRGF5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLWRheSc6IGRheS5pc1NlbGVjdGVkRGF5ICYmICFkYXRlUmFuZ2VTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgZGF0ZVJhbmdlU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmIGRhdGVSYW5nZVNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXREYXlDZWxsU3R5bGUoZGF5KVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIG5leHRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnUklHSFQnLGRheSlcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlRGF5S2V5ZG93bigkZXZlbnQsICdSSUdIVCcsIGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheSB8fCBkYXkuaXNOb1Nob3csXG4gICAgICAgICAgICAnbm9TaG93JzogZGF5LmlzTm9TaG93IH1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwieyAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSwgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93IHx8IGRheS5pc1dlZWtPZmYgfVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIiB0YWJpbmRleD1cIjBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidXZWVrbHkgb2ZmczogJyArIChkYXRhKCkud2Vla09mZnM/Lmxlbmd0aCA/IGRhdGEoKS53ZWVrT2Zmcy5qb2luKCcsICcpIDogJ05vbmUnKSArICcuIEhvbGlkYXlzIG1hcmtlZCB3aXRoIGEgZG90IG9uIHRoZSBjYWxlbmRhci4nXCI+XG4gICAgPHNwYW4+V2Vla2x5IG9mZnM6IDxzcGFuICpuZ0Zvcj1cImxldCB3ZWVrT2ZmIG9mIGRhdGEoKS53ZWVrT2ZmczsgbGV0IGxhc3QgPSBsYXN0XCI+e3t3ZWVrT2ZmfX0gPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiw8L3NwYW4+PC9zcGFuPjwvc3Bhbj5cbiAgICA8c3BhbiA+SG9saWRheXMgPHNwYW4gY2xhc3M9XCJjaXJjdWxhci1kb3RcIiBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCAnbWFyZ2luLWxlZnQnOiAnMTBweCcgfVwiPjwvc3Bhbj48L3NwYW4+XG4gICAgQGlmKGRhdGEoKS5ub1Nob3c/Lmxlbmd0aCl7XG4gICAgICA8c3Bhbj5Oby1TaG93IEVuZm9yY2VtZW50IFdpbmRvdzxzcGFuIGNsYXNzPVwiY2lyY3VsYXItZG90IG5vU2hvd1wiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyX19mb290ZXJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCI+XG4gICAgICA8c3Bhbj57e2xvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aH19PC9zcGFuPiBkYXkocykgc2VsZWN0ZWRcbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCI+PHNwYW4+e3tkYXRlUmFuZ2VMZW5ndGgoKSA+IDAgPyBkYXRlUmFuZ2VMZW5ndGgoKSA6IDAgfX0gPC9zcGFuPmRheShzKSBzZWxlY3RlZDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyX2FjdGlvbl9idG5cIj5cbiAgICAgIDxidXR0b24gI2NhbmNlbEJ0biBtaXMtYnV0dG9uIHNpemU9XCJtZFwiIHR5cGU9XCJub25lXCIgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCI+QXBwbHk8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCIgI2FwcGx5UmFuZ2VCdG4gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiPkFwcGx5PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Fycm93U3ZnPlxuICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICA+PC9wYXRoPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
|
|
699
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxLQUFvQixNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7SUNUL0MsK0JBTUM7SUFIQyw0TkFBaUIsOEJBQW9CLEtBQUM7SUFJdEMscUNBQXFKO0lBQWxGLHdNQUFlLDJCQUFvQixLQUFDO0lBQThDLGlCQUFZO0lBQ2pLLDRCQUFNO0lBQUEsWUFBVTtJQUNsQixBQURrQixpQkFBTyxF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L0QsZUFBc0I7WUFBdEIsaURBQXNCO1lBYTlDLGNBcURDO1lBckRELGlEQXFEQztZQUVtRCxjQUF1Sjs7WUFDOUosZUFBb0I7WUFBcEIsNkNBQW9CO1lBQ3RCLGVBQThEO1lBQTlELHFEQUE4RDtZQUN6RyxjQUVDO1lBRkQsNkZBRUM7WUFHTSxlQUFnQztZQUFoQyxxREFBZ0M7WUFHaEMsY0FBeUI7WUFBekIsOENBQXlCO1lBR3JCLGVBQWdDO1lBQWhDLHFEQUFnQztZQUNoQyxjQUF5QjtZQUF6Qiw4Q0FBeUI7OztpRkR6SDNCLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXlGbkIsTUFBTTt1QkFBQyxjQUFjOztrRkFyRmIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvc2RwLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0TW9udGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3RvYXN0XCI7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcblxuZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKTtcblxudHlwZSBTZHBNb2RlID0gXCJTSU5HTEVcIiB8IFwiU1BFQ0lGSUNcIiB8IFwiUkFOR0VcIjtcblxuY29uc3QgTU9ERV9MQUJFTFM6IFJlY29yZDxTZHBNb2RlLCBzdHJpbmc+ID0ge1xuICBTSU5HTEU6IFwiU2luZ2xlIERhdGVcIixcbiAgU1BFQ0lGSUM6IFwiU3BlY2lmaWMgRGF0ZShzKVwiLFxuICBSQU5HRTogXCJEYXRlIFJhbmdlXCJcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdHotc2RwXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUekRycENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxJRGF0ZVBpY2tlckRhdGE+KHRoaXMuaW5qZWN0ZWREYXRhKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGUgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMuZGF0YSgpLmlzTW9iaWxlVmlldyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkYXlqc0luc3RhbmNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnO1xuICAgIGlmIChjb25maWc/LnRpbWV6b25lKSB7XG4gICAgICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgdGltZXpvbmUtYXdhcmUgZGF5anMgaW5zdGFuY2VcbiAgICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IGRheWpzKC4uLmFyZ3MpLnR6KGNvbmZpZy50aW1lem9uZSk7XG4gICAgfVxuICAgIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBzdGFuZGFyZCBkYXlqcyBpbnN0YW5jZVxuICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IGRheWpzKC4uLmFyZ3MpO1xuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJhd1dlZWtEYXlzOiBzdHJpbmdbXSA9IFtcIlNVTlwiLCBcIk1PTlwiLCBcIlRVRVwiLCBcIldFRFwiLCBcIlRIVVwiLCBcIkZSSVwiLCBcIlNBVFwiXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxTZWxlY3RlZERhdGVzID0gc2lnbmFsPElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSA9IHNpZ25hbDxJUlNlbGVjdGVkRGF0ZXNDb25maWc+KHtzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGx9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKCkpIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpO1xuICAgICAgcmV0dXJuICEhKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8U2RwTW9kZT4oXCJTUEVDSUZJQ1wiKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpID09PSBcIlNQRUNJRklDXCIpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09IFwiU0lOR0xFXCIpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZVJhbmdlU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gXCJSQU5HRVwiKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uU3RhcnRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChNT0RFX0xBQkVMUy5TUEVDSUZJQyk7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUGlja2VyVmFsdWUgPSBzaWduYWw8c3RyaW5nW10+KFtNT0RFX0xBQkVMUy5TUEVDSUZJQywgTU9ERV9MQUJFTFMuUkFOR0VdKTtcbiAgXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkubW9udGgoKSA6IGRheWpzKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS55ZWFyKCkgOiBkYXlqcygpLnllYXIoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSA6IGRheWpzKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkgOiBkYXlqcygpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIFxuXG4gIHB1YmxpYyByZWFkb25seSB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yYXdXZWVrRGF5cy5tYXAoKGRheSwgaW5kZXgpID0+ICh7XG4gICAgICBsYWJlbDogYCR7ZGF5WzBdfSR7ZGF5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGlzQ3VycmVudERheTogdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5uZXh0TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9kYXlNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgaWYgKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2Uuc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2UuZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGlmIChzdGFydC5pc1ZhbGlkKCkgJiYgZW5kLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsICdkYXknKSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJldmlvdXNNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWluRGF0ZS5pc1ZhbGlkKCkgJiYgbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRNb250aERhdGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIoKSwgdGhpcy5uZXh0WWVhck51bWJlcigpKTtcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dTZWNvbmRNb250aCA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkKCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlLnNldCh0aGlzLmluamVjdGVkRGF0YS5kYXRlc1JhbmdlIHx8IHtzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGx9KTtcblxuICAgIGlmICh0aGlzLmRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGUpIHtcbiAgICAgIGlmICghdGhpcy5kYXRlUGlja2VyVmFsdWUoKS5pbmNsdWRlcyhNT0RFX0xBQkVMUy5TSU5HTEUpKSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclZhbHVlLnVwZGF0ZShjdXJyZW50VmFsdWUgPT4gW01PREVfTEFCRUxTLlNJTkdMRSwgLi4uY3VycmVudFZhbHVlXSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldE1vZGUoXCJTSU5HTEVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0TW9kZSh0aGlzLmRhdGEoKS5pc1NQaWNrZXJTZWxlY3RlZCA/IFwiU1BFQ0lGSUNcIiA6IFwiUkFOR0VcIik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRhdGEoKT8uZHBDb25maWc/LmZvcm1hdCkge1xuICAgICAgdGhpcy5kYXRhKCkuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YSgpLmRwQ29uZmlnLFxuICAgICAgICBmb3JtYXQ6IERBVEVfRk9STUFUXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnBvc2l0aW9uVG9TZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TW9kZShtb2RlOiBTZHBNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlLnNldChtb2RlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKE1PREVfTEFCRUxTW21vZGVdLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgaWYgKG1vZGUgPT09IFwiU0lOR0xFXCIgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcy51cGRhdGUoZGF0ZXMgPT4gZGF0ZXMuc2xpY2UoMCwgMSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ub1NlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQ7XG4gICAgY29uc3Qgc2VsZWN0ZWRTdGFydERhdGU6IERheWpzID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCBmb3JtYXQpXG4gICAgICA6IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCk/LlswXT8uc2VsZWN0ZWREYXRlLCBmb3JtYXQpO1xuICAgIGlmICghc2VsZWN0ZWRTdGFydERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLnllYXIoKSk7XG4gICAgdGhpcy5uZXh0WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEYXRlcyhtb250aDogbnVtYmVyLCBjdXJyZW50WWVhck51bWJlcjogbnVtYmVyKTogSUN1cnJlbnRNb250aERhdGVzW10ge1xuICAgIGNvbnN0IGRhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUoY3VycmVudFllYXJOdW1iZXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICAgIFxuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGRhdGUuaXNTYW1lKHRoaXMuZGF5anNJbnN0YW5jZSgpKCksICdkYXknKTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5zb21lKGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID0gISF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGU7XG4gICAgICBjb25zdCBpblJhbmdlRGF5ID0gISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUuaXNCZXR3ZWVuKHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksICdkYXknLCAnKCknKTtcblxuICAgICAgY29uc3QgaXNIb2xpZGF5ID0gdGhpcy5kYXRhKCkuaG9saWRheXMuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1dlZWtPZmYgPSB0aGlzLmRhdGEoKS53ZWVrT2Zmcy5pbmNsdWRlcyhkYXRlLmZvcm1hdCgnZGRkJykpO1xuICAgICAgY29uc3QgaXNOb1Nob3cgPSB0aGlzLmRhdGEoKS5ub1Nob3cuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG5cbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIGlzSG9saWRheSxcbiAgICAgICAgaXNOb1Nob3csXG4gICAgICAgIGlzV2Vla09mZixcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gZGF0ZXNbMF0/LndlZWtEYXkgfHwgMDsgaSA+IDA7IGktLSkge1xuICAgICAgZGF0ZXMudW5zaGlmdCh7IGRhdGU6IDAsIHdlZWtEYXk6IGkgLSAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICB9XG5cbiAgc2VsZWN0RGF5KGZyb206IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQoKSkge1xuICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKClcbiAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAuZGF0ZShkYXkuZGF0ZSkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnNldChbeyBzZWxlY3RlZERhdGU6IGN1cnJlbnRTZWxlY3Rpb24gfV0pO1xuICAgICAgICB0aGlzLmFwcGx5RGF0ZXMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjdXJyZW50LmZpbmRJbmRleChkID0+IGQuc2VsZWN0ZWREYXRlID09PSBjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSBleGlzdGluZ0luZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFsuLi5jdXJyZW50LCB7IHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvbiB9XTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRheWpzRGF5ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSA6IHRoaXMubmV4dFllYXJOdW1iZXIoKSlcbiAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgIC5kYXRlKGRheS5kYXRlKTtcbiAgICAgIFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgIGlmIChkYXlqc0RheS5pc0JlZm9yZSh0aGlzLmRheWpzSW5zdGFuY2UoKShjdXJyZW50LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCBlbmREYXRlOiBudWxsIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnQsIGVuZERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkLnNldCh0cnVlKTtcbiAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCBlbmREYXRlOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNjaGVkdWxlRm9jdXNDZWxsKHRoaXMuZ2V0RGF5Q2VsbElkKGRheSwgZnJvbSkpO1xuICB9XG5cbiAgYXBwbHlEYXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5kYXRlQ2hhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCkpO1xuICB9XG5cbiAgYXBwbHlEYXRlc1JhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2VSYW5nZSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCkpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBjb25zdCBtb2RlID0gKE9iamVjdC5rZXlzKE1PREVfTEFCRUxTKSBhcyBTZHBNb2RlW10pLmZpbmQoa2V5ID0+IE1PREVfTEFCRUxTW2tleV0gPT09IGV2ZW50KTtcbiAgICBpZiAobW9kZSkge1xuICAgICAgdGhpcy5zZXRNb2RlKG1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERheUNlbGxTdHlsZShkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGhhc01hcmtlciA9ICEhKGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93KTtcbiAgICByZXR1cm4ge1xuICAgICAgXCJqdXN0aWZ5LWNvbnRlbnRcIjogaGFzTWFya2VyID8gXCJmbGV4LXN0YXJ0XCIgOiBcImNlbnRlclwiLFxuICAgICAgXCJwYWRkaW5nLXRvcFwiOiBoYXNNYXJrZXIgPyBcIjIuOHB4XCIgOiBcIjBweFwiLFxuICAgICAgXCJtYXJnaW4tcmlnaHRcIjogdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpID8gXCIwcHhcIiA6IFwiMXB4XCIsXG4gICAgICB3aWR0aDogdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpID8gXCIzNnB4XCIgOiBcIjM1cHhcIixcbiAgICAgIGhlaWdodDogaGFzTWFya2VyID8gXCIzM3B4XCIgOiBcIjM2cHhcIlxuICAgIH07XG4gIH1cblxuICBnZXREYXlUYWJJbmRleChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBpZiAoIWRhdGVzPy5sZW5ndGgpIHJldHVybiAtMTtcbiAgICBjb25zdCBmaXJzdEluZGV4ID0gZGF0ZXMuZmluZEluZGV4KChkKSA9PiBkLmRhdGUgPiAwICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgIGlmIChmaXJzdEluZGV4IDwgMCkgcmV0dXJuIC0xO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRhdGVzLmZpbmRJbmRleCgoZCkgPT4gZCA9PT0gZGF5KTtcbiAgICByZXR1cm4gY3VycmVudEluZGV4ID09PSBmaXJzdEluZGV4ID8gMCA6IC0xO1xuICB9XG5cbiAgZ2V0RGF5Q2VsbElkKGRheTogSUN1cnJlbnRNb250aERhdGVzLCBwYW5lbDogXCJMRUZUXCIgfCBcIlJJR0hUXCIpOiBzdHJpbmcge1xuICAgIGlmIChkYXk/LmRhdGUgPD0gMCkgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgbW9udGggPSBwYW5lbCA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlcigpIDogdGhpcy5uZXh0TW9udGhOdW1iZXIoKTtcbiAgICBjb25zdCB5ZWFyID0gcGFuZWwgPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpO1xuICAgIHJldHVybiBgJHtwYW5lbCA9PT0gXCJMRUZUXCIgPyBcIkxcIiA6IFwiUlwifS0ke21vbnRofS0ke3llYXJ9LSR7ZGF5LmRhdGV9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVGb2N1c0NlbGwoY2VsbElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWNlbGxJZCkgcmV0dXJuO1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhvc3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MRWxlbWVudD4oYFtkYXRhLXNkcC1jZWxsPVwiJHtjZWxsSWR9XCJdYCk7XG4gICAgICBpZiAoZWw/LmZvY3VzKSBlbC5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUk9XX1NJWkUgPSA3O1xuXG4gIGdldERheUluZGV4SW5Nb250aChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBpZHggPSBkYXRlcy5maW5kSW5kZXgoKGQpID0+IGQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCA6IC0xO1xuICB9XG5cbiAgZ2V0TmV4dERheUluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyLCBkaXJlY3Rpb246IFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIiwgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBsZW4gPSBkYXRlcy5sZW5ndGg7XG4gICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGxldCBkZWx0YSA9IDA7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJBcnJvd1JpZ2h0XCIpIGRlbHRhID0gMTtcbiAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiQXJyb3dMZWZ0XCIpIGRlbHRhID0gLTE7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93VXBcIikgZGVsdGEgPSAtVHpEcnBDb250YWluZXJDb21wb25lbnQuUk9XX1NJWkU7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93RG93blwiKSBkZWx0YSA9IFR6RHJwQ29udGFpbmVyQ29tcG9uZW50LlJPV19TSVpFO1xuICAgIGxldCBuZXh0ID0gY3VycmVudEluZGV4ICsgZGVsdGE7XG4gICAgaWYgKG5leHQgPCAwIHx8IG5leHQgPj0gbGVuKSByZXR1cm4gLTE7XG4gICAgaWYgKGRhdGVzW25leHRdLmRhdGUgPiAwICYmICFkYXRlc1tuZXh0XS5pc0Rpc2FibGVkRGF5KSByZXR1cm4gbmV4dDtcbiAgICB3aGlsZSAobmV4dCA+PSAwICYmIG5leHQgPCBsZW4gJiYgKGRhdGVzW25leHRdLmRhdGUgPT09IDAgfHwgZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSkpIHtcbiAgICAgIG5leHQgKz0gZGVsdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXh0ID49IDAgJiYgbmV4dCA8IGxlbiAmJiBkYXRlc1tuZXh0XS5kYXRlID4gMCAmJiAhZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSA/IG5leHQgOiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUZvY3VzVG9BZGphY2VudE1vbnRoKGtleTogXCJBcnJvd0xlZnRcIiB8IFwiQXJyb3dSaWdodFwiIHwgXCJBcnJvd1VwXCIgfCBcIkFycm93RG93blwiKTogdm9pZCB7XG4gICAgY29uc3QgZ29Gb3J3YXJkID0ga2V5ID09PSBcIkFycm93UmlnaHRcIiB8fCBrZXkgPT09IFwiQXJyb3dEb3duXCI7XG4gICAgaWYgKGdvRm9yd2FyZCkge1xuICAgICAgaWYgKHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgICB0aGlzLm5hdmlnYXRlTW9udGgoXCJORVhUXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgICB0aGlzLm5hdmlnYXRlTW9udGgoXCJQUkVWSU9VU1wiKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0YWJsZSA9IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKS5maWx0ZXIoZCA9PiBkLmRhdGUgPiAwICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgIGNvbnN0IHRhcmdldCA9IGdvRm9yd2FyZCA/IHNlbGVjdGFibGVbMF0gOiBzZWxlY3RhYmxlW3NlbGVjdGFibGUubGVuZ3RoIC0gMV07XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGhpcy5zY2hlZHVsZUZvY3VzQ2VsbCh0aGlzLmdldERheUNlbGxJZCh0YXJnZXQsIFwiTEVGVFwiKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGF5S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGNvbnN0IGFycm93S2V5cyA9IFtcIkFycm93TGVmdFwiLCBcIkFycm93UmlnaHRcIiwgXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCJdO1xuICAgIGlmIChhcnJvd0tleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0RGF5SW5kZXhJbk1vbnRoKGRheSwgcGFuZWwpO1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IDApIHJldHVybjtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZ2V0TmV4dERheUluZGV4KGN1cnJlbnRJbmRleCwgZXZlbnQua2V5IGFzIFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIiwgcGFuZWwpO1xuICAgICAgaWYgKG5leHRJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGRhdGVzID0gcGFuZWwgPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhEYXRlcygpIDogdGhpcy5uZXh0TW9udGhEYXRlcygpO1xuICAgICAgICBjb25zdCBuZXh0RGF5ID0gZGF0ZXNbbmV4dEluZGV4XTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUZvY3VzQ2VsbCh0aGlzLmdldERheUNlbGxJZChuZXh0RGF5LCBwYW5lbCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuc2hvd1NlY29uZE1vbnRoKCkpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNUb0FkamFjZW50TW9udGgoZXZlbnQua2V5IGFzIFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdERheShwYW5lbCwgZGF5KTtcbiAgICB9XG4gIH1cblxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lclwiIFtjbGFzcy5tb2JpbGUtdmlld109XCJpc01vYmlsZSgpXCIgW2NsYXNzLnNpbmdsZS1kYXRlLXBpY2tlci1lbmFibGVkXT1cImRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGVcIiBhcmlhLWxhYmVsPVwiQ2hvb3NlIGRhdGUgb3IgZGF0ZSByYW5nZVwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiPlxuICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbjxkaXZcbiAgY2xhc3M9XCJsYWJlbFwiXG4gIHRhYmluZGV4PVwiMFwiXG4gIChrZXlkb3duLmVudGVyKT1cImNoYW5nZVBpY2tlcihwaWNrZXIpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZm9ybUNvbnRyb2w/LnZhbHVlID09PSBwaWNrZXIpID8gKHBpY2tlciArICcsIHNlbGVjdGVkJykgOiAocGlja2VyICsgJywgY2xpY2sgdG8gc2VsZWN0JylcIlxuICAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpOyBsZXQgaSA9IGluZGV4XCJcbj5cbiAgPG1pcy1yYWRpbyBjbGFzcz1cImlucHV0XCIgW25hbWVdPVwiJ2RhdGVTZWxlY3Rpb24nXCIgW3ZhbHVlXT1cInBpY2tlclwiICh2YWx1ZUNoYW5nZSk9XCJjaGFuZ2VQaWNrZXIoJGV2ZW50KVwiIG5nRGVmYXVsdENvbnRyb2wgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCI+PC9taXMtcmFkaW8+XG4gIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG48L2Rpdj5cbjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fdmlld1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19sZWZ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93U3ZnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIEBpZiAoIXNob3dTZWNvbmRNb250aCgpKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93U3ZnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCI+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdjdXJyZW50LWRheSc6IHdlZWtEYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKVxuICAgICAgICAgICAgfVwiPnt7IHdlZWtEYXkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5c1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc2RwLWNlbGxdPVwiZ2V0RGF5Q2VsbElkKGRheSwgJ0xFRlQnKVwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXREYXlUYWJJbmRleChkYXksICdMRUZUJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXkuZGF0ZSA+IDAgPyAoZGF5LmRhdGUgKyAnICcgKyBjdXJyZW50TW9udGgoKSArICcgJyArIGN1cnJlbnRZZWFyTnVtYmVyKCkgKyAoZGF5LmlzRGlzYWJsZWREYXkgPyAnLCBkaXNhYmxlZCcgOiAnJykpIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRheS5pc0Rpc2FibGVkRGF5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLWRheSc6IGRheS5pc1NlbGVjdGVkRGF5ICYmICFkYXRlUmFuZ2VTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgZGF0ZVJhbmdlU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmIGRhdGVSYW5nZVNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXREYXlDZWxsU3R5bGUoZGF5KVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnTEVGVCcsZGF5KVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVEYXlLZXlkb3duKCRldmVudCwgJ0xFRlQnLCBkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NpcmN1bGFyLWRvdCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93LFxuICAgICAgICAgICAgJ25vU2hvdyc6IGRheS5pc05vU2hvdyB9XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheS5kYXRlID4gMFwiIFtuZ0NsYXNzXT1cInsgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSwgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93IHx8IGRheS5pc1dlZWtPZmYgfVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoc2hvd1NlY29uZE1vbnRoKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc05leHRNb250aERpc2FibGVkKClcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgICAgICAoY2xpY2spPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzTmV4dE1vbnRoRGlzYWJsZWQoKSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcnJvd1N2Z1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXNkcC1jZWxsXT1cImdldERheUNlbGxJZChkYXksICdSSUdIVCcpXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheSwgJ1JJR0hUJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXkuZGF0ZSA+IDAgPyAoZGF5LmRhdGUgKyAnICcgKyBuZXh0TW9udGgoKSArICcgJyArIG5leHRZZWFyTnVtYmVyKCkgKyAoZGF5LmlzRGlzYWJsZWREYXkgPyAnLCBkaXNhYmxlZCcgOiAnJykpIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRheS5pc0Rpc2FibGVkRGF5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLWRheSc6IGRheS5pc1NlbGVjdGVkRGF5ICYmICFkYXRlUmFuZ2VTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgZGF0ZVJhbmdlU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmIGRhdGVSYW5nZVNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmIGRhdGVSYW5nZVNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXREYXlDZWxsU3R5bGUoZGF5KVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIG5leHRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnUklHSFQnLGRheSlcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlRGF5S2V5ZG93bigkZXZlbnQsICdSSUdIVCcsIGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheSB8fCBkYXkuaXNOb1Nob3csXG4gICAgICAgICAgICAnbm9TaG93JzogZGF5LmlzTm9TaG93IH1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwieyAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSwgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzTm9TaG93IHx8IGRheS5pc1dlZWtPZmYgfVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIiB0YWJpbmRleD1cIjBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidXZWVrbHkgb2ZmczogJyArIChkYXRhKCkud2Vla09mZnM/Lmxlbmd0aCA/IGRhdGEoKS53ZWVrT2Zmcy5qb2luKCcsICcpIDogJ05vbmUnKSArICcuIEhvbGlkYXlzIG1hcmtlZCB3aXRoIGEgZG90IG9uIHRoZSBjYWxlbmRhci4nXCI+XG4gICAgPHNwYW4+V2Vla2x5IG9mZnM6IDxzcGFuICpuZ0Zvcj1cImxldCB3ZWVrT2ZmIG9mIGRhdGEoKS53ZWVrT2ZmczsgbGV0IGxhc3QgPSBsYXN0XCI+e3t3ZWVrT2ZmfX0gPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiw8L3NwYW4+PC9zcGFuPjwvc3Bhbj5cbiAgICA8c3BhbiA+SG9saWRheXMgPHNwYW4gY2xhc3M9XCJjaXJjdWxhci1kb3RcIiBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCAnbWFyZ2luLWxlZnQnOiAnMTBweCcgfVwiPjwvc3Bhbj48L3NwYW4+XG4gICAgQGlmKGRhdGEoKS5ub1Nob3c/Lmxlbmd0aCl7XG4gICAgICA8c3Bhbj5Oby1TaG93IEVuZm9yY2VtZW50IFdpbmRvdzxzcGFuIGNsYXNzPVwiY2lyY3VsYXItZG90IG5vU2hvd1wiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyX19mb290ZXJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCI+XG4gICAgICA8c3Bhbj57e2xvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aH19PC9zcGFuPiBkYXkocykgc2VsZWN0ZWRcbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCI+PHNwYW4+e3tkYXRlUmFuZ2VMZW5ndGgoKSA+IDAgPyBkYXRlUmFuZ2VMZW5ndGgoKSA6IDAgfX0gPC9zcGFuPmRheShzKSBzZWxlY3RlZDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyX2FjdGlvbl9idG5cIj5cbiAgICAgIDxidXR0b24gI2NhbmNlbEJ0biBtaXMtYnV0dG9uIHNpemU9XCJtZFwiIHR5cGU9XCJub25lXCIgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCI+QXBwbHk8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCIgI2FwcGx5UmFuZ2VCdG4gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiPkFwcGx5PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Fycm93U3ZnPlxuICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICA+PC9wYXRoPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
|