mis-crystal-design-system 18.2.17 → 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.
|
@@ -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
|
|
@@ -435,7 +435,7 @@ class TzDrpContainerComponent {
|
|
|
435
435
|
}
|
|
436
436
|
generateDates(month, currentYearNumber) {
|
|
437
437
|
const dates = [];
|
|
438
|
-
const daysInMonth =
|
|
438
|
+
const daysInMonth = new Date(currentYearNumber, month + 1, 0).getDate();
|
|
439
439
|
for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {
|
|
440
440
|
const date = this.dayjsInstance()().year(currentYearNumber).month(month).date(currentDate);
|
|
441
441
|
const dateString = date.format(this.data().dpConfig.format);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-specificdatepicker.mjs","sources":["../../../projects/mis-components/specificdatepicker/daterangepicker-constants.ts","../../../projects/mis-components/specificdatepicker/utils/index.ts","../../../projects/mis-components/specificdatepicker/tz-sdp-container/tz-sdp-container.component.html","../../../projects/mis-components/specificdatepicker/tz-sdp-container/tz-sdp-container.component.ts","../../../projects/mis-components/specificdatepicker/tz-specificdatepicker.directive.ts","../../../projects/mis-components/specificdatepicker/specificdatepicker.module.ts","../../../projects/mis-components/specificdatepicker/mis-crystal-design-system-specificdatepicker.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>(\"CONTAINER_DATA\");\nexport const DATE_FORMAT = \"DD-MM-YYYY\";\n","import { ICurrentMonth } from \"../models/sdp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = \"January\";\n break;\n case 1:\n month = \"February\";\n break;\n case 2:\n month = \"March\";\n break;\n case 3:\n month = \"April\";\n break;\n case 4:\n month = \"May\";\n break;\n case 5:\n month = \"June\";\n break;\n case 6:\n month = \"July\";\n break;\n case 7:\n month = \"August\";\n break;\n case 8:\n month = \"September\";\n break;\n case 9:\n month = \"October\";\n break;\n case 10:\n month = \"November\";\n break;\n case 11:\n month = \"December\";\n break;\n default:\n break;\n }\n return month;\n};\n","<div class=\"daterangepicker-container\" [class.mobile-view]=\"isMobile()\" [class.single-date-picker-enabled]=\"data().isSingleDatePickerEnable\" aria-label=\"Choose date or date range\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"radio-container\">\n<div\n class=\"label\"\n tabindex=\"0\"\n (keydown.enter)=\"changePicker(picker)\"\n [attr.aria-label]=\"(formControl?.value === picker) ? (picker + ', selected') : (picker + ', click to select')\"\n *ngFor=\"let picker of datePickerValue(); let i = index\"\n>\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n</div>\n</div>\n <div class=\"specific-datepicker-container\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isPreviousMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isPreviousMonthDisabled()\"\n aria-label=\"Previous month\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n (keydown.enter)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{ 'disabled-month': isPreviousMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n @if (!showSecondMonth()) {\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isNextMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isNextMonthDisabled()\"\n aria-label=\"Next month\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keydown.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n } @else {\n <div></div>\n }\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'LEFT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'LEFT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + currentMonth() + ' ' + currentYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && !dateRangeSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && dateRangeSelected(),\n 'selected-end-day': day.isSelectedEndDay && dateRangeSelected(),\n 'in-range-day': day.inRangeDay && dateRangeSelected(),\n 'is-valid-date': day.date > 0 && dateRangeSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"getDayCellStyle(day)\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n (keydown)=\"handleDayKeydown($event, 'LEFT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday || day.isNoShow,\n 'noShow': day.isNoShow }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay, 'holiday-text': day.isHoliday || day.isNoShow || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n @if (showSecondMonth()) {\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isNextMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isNextMonthDisabled()\"\n aria-label=\"Next month\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keydown.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'RIGHT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'RIGHT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + nextMonth() + ' ' + nextYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && !dateRangeSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && dateRangeSelected(),\n 'selected-end-day': day.isSelectedEndDay && dateRangeSelected(),\n 'in-range-day': day.inRangeDay && dateRangeSelected(),\n 'is-valid-date': day.date > 0 && dateRangeSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"getDayCellStyle(day)\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n (keydown)=\"handleDayKeydown($event, 'RIGHT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday || day.isNoShow,\n 'noShow': day.isNoShow }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()), 'holiday-text': day.isHoliday || day.isNoShow || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"weekOffs_holidays_container\" tabindex=\"0\" [attr.aria-label]=\"'Weekly offs: ' + (data().weekOffs?.length ? data().weekOffs.join(', ') : 'None') + '. Holidays marked with a dot on the calendar.'\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n @if(data().noShow?.length){\n <span>No-Show Enforcement Window<span class=\"circular-dot noShow\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n }\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\">\n <span>{{localSelectedDates().length}}</span> day(s) selected\n </span>\n <span *ngIf=\"dateRangeSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button #cancelBtn mis-button size=\"md\" type=\"none\" tabindex=\"0\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\">Apply</button>\n <button *ngIf=\"dateRangeSelected()\" #applyRangeBtn mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\">Apply</button>\n </div>\n </div>\n </div>\n\n</div>\n\n<ng-template #arrowSvg>\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n</ng-template>\n\n\n","import { Component, ElementRef, Inject, OnInit, signal, computed } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISSelectedDatesConfig, IRSelectedDatesConfig } from \"../models/sdp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport dayjs, { Dayjs, tz } from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport isBetween from 'dayjs/plugin/isBetween';\n\ndayjs.extend(isBetween);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\ntype SdpMode = \"SINGLE\" | \"SPECIFIC\" | \"RANGE\";\n\nconst MODE_LABELS: Record<SdpMode, string> = {\n SINGLE: \"Single Date\",\n SPECIFIC: \"Specific Date(s)\",\n RANGE: \"Date Range\"\n};\n\n@Component({\n selector: \"mis-tz-sdp\",\n templateUrl: \"./tz-sdp-container.component.html\",\n styleUrls: [\"./tz-sdp-container.component.scss\"]\n})\nexport class TzDrpContainerComponent implements OnInit {\n\n readonly data = signal<IDatePickerData>(this.injectedData);\n\n public readonly isMobile = computed(() => !!this.data().isMobileView);\n\n private readonly dayjsInstance = computed(() => {\n const config = this.data().dpConfig;\n if (config?.timezone) {\n // Returns a function that creates a timezone-aware dayjs instance\n return (...args: any[]) => dayjs(...args).tz(config.timezone);\n }\n // Returns a function that creates a standard dayjs instance\n return (...args: any[]) => dayjs(...args);\n });\n\n private readonly rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\n public readonly localSelectedDates = signal<ISSelectedDatesConfig[]>([]);\n public readonly localSelectedDatesRange = signal<IRSelectedDatesConfig>({startDate: null, endDate: null});\n\n public readonly isDatesValid = computed(() => {\n if (this.dateRangeSelected()) {\n const range = this.localSelectedDatesRange();\n return !!(range?.startDate && range?.endDate);\n }\n return this.localSelectedDates().length > 0;\n });\n\n private readonly mode = signal<SdpMode>(\"SPECIFIC\");\n public readonly isSpecificPickerSelected = computed(() => this.mode() === \"SPECIFIC\");\n public readonly singleDatePickerSelected = computed(() => this.mode() === \"SINGLE\");\n public readonly dateRangeSelected = computed(() => this.mode() === \"RANGE\");\n\n public readonly selectionStarted = signal(false);\n\n public readonly formControl = new UntypedFormControl(MODE_LABELS.SPECIFIC);\n public readonly datePickerValue = signal<string[]>([MODE_LABELS.SPECIFIC, MODE_LABELS.RANGE]);\n \n public readonly currentMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).month() : dayjs().month());\n public readonly currentYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).year() : dayjs().year());\n public readonly nextMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, \"month\").month() : dayjs().add(1, \"month\").month());\n public readonly nextYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, \"month\").year() : dayjs().add(1, \"month\").year());\n \n\n public readonly weekDays = computed(() => {\n return this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.dayjsInstance()().day() === index\n }));\n });\n public readonly currentMonth = computed(() => getMonth(this.currentMonthNumber()));\n public readonly nextMonth = computed(() => getMonth(this.nextMonthNumber()));\n public readonly todayMonthNumber = computed(() => this.dayjsInstance()().month());\n public readonly dateRangeLength = computed(() => {\n const range = this.localSelectedDatesRange();\n if (range?.startDate && range?.endDate) {\n const start = this.dayjsInstance()(range.startDate, this.data().dpConfig.format);\n const end = this.dayjsInstance()(range.endDate, this.data().dpConfig.format);\n if (start.isValid() && end.isValid()) {\n return end.diff(start, 'day') + 1;\n }\n }\n return 0;\n });\n public readonly isPreviousMonthDisabled = computed(() => {\n const currentInstance = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance()(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n return minDate.isValid() && minDate.isSameOrAfter(currentInstance, \"month\");\n });\n public readonly isNextMonthDisabled = computed(() => {\n const currentInstance = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance()(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n return maxDate.isValid() && maxDate.isSameOrBefore(currentInstance, \"month\");\n });\n public readonly currentMonthDates = computed(() => {\n return this.generateDates(this.currentMonthNumber(), this.currentYearNumber());\n });\n public readonly nextMonthDates = computed(() => {\n return this.generateDates(this.nextMonthNumber(), this.nextYearNumber());\n });\n\n public readonly showSecondMonth = computed(() => !this.isMobile() && !this.singleDatePickerSelected());\n\n constructor(\n @Inject(CONTAINER_DATA) private injectedData: IDatePickerData,\n private toast: ToastService,\n private elementRef: ElementRef<HTMLElement>\n ) {\n this.localSelectedDates.set(this.data().dates);\n this.localSelectedDatesRange.set(this.injectedData.datesRange || {startDate: null, endDate: null});\n\n if (this.data().isSingleDatePickerEnable) {\n if (!this.datePickerValue().includes(MODE_LABELS.SINGLE)) {\n this.datePickerValue.update(currentValue => [MODE_LABELS.SINGLE, ...currentValue]);\n }\n this.setMode(\"SINGLE\");\n } else {\n this.setMode(this.data().isSPickerSelected ? \"SPECIFIC\" : \"RANGE\");\n }\n }\n\n ngOnInit(): void {\n if (!this.data()?.dpConfig?.format) {\n this.data().dpConfig = {\n ...this.data().dpConfig,\n format: DATE_FORMAT\n };\n }\n this.positionToSelection();\n }\n\n private setMode(mode: SdpMode): void {\n this.mode.set(mode);\n this.formControl.setValue(MODE_LABELS[mode], { emitEvent: false });\n if (mode === \"SINGLE\" && this.localSelectedDates().length > 1) {\n this.localSelectedDates.update(dates => dates.slice(0, 1));\n }\n }\n\n private positionToSelection(): void {\n const format = this.data().dpConfig.format;\n const selectedStartDate: Dayjs = this.dateRangeSelected()\n ? this.dayjsInstance()(this.localSelectedDatesRange()?.startDate, format)\n : this.dayjsInstance()(this.localSelectedDates()?.[0]?.selectedDate, format);\n if (!selectedStartDate.isValid()) {\n return;\n }\n this.currentYearNumber.set(selectedStartDate.year());\n this.nextYearNumber.set(selectedStartDate.add(1, \"month\").year());\n this.currentMonthNumber.set(selectedStartDate.get(\"month\"));\n this.nextMonthNumber.set(selectedStartDate.add(1, \"month\").month());\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n const dates: ICurrentMonthDates[] = [];\n const daysInMonth = this.dayjsInstance()().year(currentYearNumber).month(month).daysInMonth();\n \n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = this.dayjsInstance()().year(currentYearNumber).month(month).date(currentDate);\n const dateString = date.format(this.data().dpConfig.format);\n\n let isDisabledDay = this.data().datesDisabled.some(d => d === dateString);\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance()(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n if (!isDisabledDay && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance()(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n if (!isDisabledDay && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n\n const isCurrentDay = date.isSame(this.dayjsInstance()(), 'day');\n let isSelectedDay = this.localSelectedDates().some(d => d.selectedDate === dateString);\n const isSelectedStartDay = !!this.localSelectedDatesRange()?.startDate && date.format(this.data().dpConfig.format) === this.localSelectedDatesRange()?.startDate;\n const isSelectedEndDay = !!this.localSelectedDatesRange()?.endDate && date.format(this.data().dpConfig.format) === this.localSelectedDatesRange()?.endDate;\n const inRangeDay = !!(this.localSelectedDatesRange()?.startDate && this.localSelectedDatesRange()?.endDate) &&\n date.isBetween(this.dayjsInstance()(this.localSelectedDatesRange()?.startDate, this.data().dpConfig.format), this.dayjsInstance()(this.localSelectedDatesRange()?.endDate, this.data().dpConfig.format), 'day', '()');\n\n const isHoliday = this.data().holidays.includes(dateString);\n const isWeekOff = this.data().weekOffs.includes(date.format('ddd'));\n const isNoShow = this.data().noShow.includes(dateString);\n\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isSelectedDay,\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n isHoliday,\n isNoShow,\n isWeekOff,\n toastMessage: this.data().messages.find(q => date.format(this.data().dpConfig.format) === q.date)?.message || \"\",\n isDisabledDay\n });\n }\n\n for (let i = dates[0]?.weekDay || 0; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Dayjs = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n thisMonth = direction === \"NEXT\" ? thisMonth.add(1, \"month\") : thisMonth.subtract(1, \"month\");\n this.currentMonthNumber.set(thisMonth.month());\n this.currentYearNumber.set(thisMonth.year());\n this.nextMonthNumber.set(thisMonth.clone().add(1, \"month\").month());\n this.nextYearNumber.set(thisMonth.clone().add(1, \"month\").year());\n }\n\n selectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates): void {\n if (day.date <= 0 || day.isDisabledDay) {\n if (day.toastMessage) this.toast.displayMsg(day.toastMessage, 4000);\n return;\n }\n \n if (!this.dateRangeSelected()) {\n const currentSelection = this.dayjsInstance()()\n .year(from === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber())\n .month(from === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber())\n .date(day.date).format(this.data().dpConfig.format);\n\n if (this.singleDatePickerSelected()) {\n this.localSelectedDates.set([{ selectedDate: currentSelection }]);\n this.applyDates();\n return;\n } else {\n this.localSelectedDates.update(current => {\n const existingIndex = current.findIndex(d => d.selectedDate === currentSelection);\n if (existingIndex !== -1) {\n return current.filter((_, index) => index !== existingIndex);\n }\n return [...current, { selectedDate: currentSelection }];\n });\n }\n } else {\n const dayjsDay = this.dayjsInstance()()\n .year(from === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber())\n .month(from === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber())\n .date(day.date);\n \n this.localSelectedDatesRange.update(current => {\n if (this.selectionStarted()) {\n if (dayjsDay.isBefore(this.dayjsInstance()(current.startDate, this.data().dpConfig.format), \"day\")) {\n this.selectionStarted.set(true);\n return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };\n }\n this.selectionStarted.set(false);\n return { ...current, endDate: dayjsDay.format(this.data().dpConfig.format) };\n } else {\n this.selectionStarted.set(true);\n return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };\n }\n });\n }\n this.scheduleFocusCell(this.getDayCellId(day, from));\n }\n\n applyDates(): void {\n this.data().dateChange(this.localSelectedDates());\n }\n\n applyDatesRange(): void {\n this.data().dateChangeRange(this.localSelectedDatesRange());\n }\n\n cancelDatePicker(): void {\n this.data().close();\n }\n\n changePicker(event: any): void {\n // As discussed, state is retained when switching modes.\n // The view will simply update to reflect the active mode.\n const mode = (Object.keys(MODE_LABELS) as SdpMode[]).find(key => MODE_LABELS[key] === event);\n if (mode) {\n this.setMode(mode);\n }\n }\n\n getDayCellStyle(day: ICurrentMonthDates): Record<string, string> {\n const hasMarker = !!(day.isHoliday || day.isNoShow);\n return {\n \"justify-content\": hasMarker ? \"flex-start\" : \"center\",\n \"padding-top\": hasMarker ? \"2.8px\" : \"0px\",\n \"margin-right\": this.dateRangeSelected() ? \"0px\" : \"1px\",\n width: this.dateRangeSelected() ? \"36px\" : \"35px\",\n height: hasMarker ? \"33px\" : \"36px\"\n };\n }\n\n getDayTabIndex(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n if (!dates?.length) return -1;\n const firstIndex = dates.findIndex((d) => d.date > 0 && !d.isDisabledDay);\n if (firstIndex < 0) return -1;\n const currentIndex = dates.findIndex((d) => d === day);\n return currentIndex === firstIndex ? 0 : -1;\n }\n\n getDayCellId(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): string {\n if (day?.date <= 0) return \"\";\n const month = panel === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber();\n const year = panel === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber();\n return `${panel === \"LEFT\" ? \"L\" : \"R\"}-${month}-${year}-${day.date}`;\n }\n\n private scheduleFocusCell(cellId: string): void {\n if (!cellId) return;\n const host = this.elementRef?.nativeElement;\n setTimeout(() => {\n const el = host?.querySelector?.<HTMLElement>(`[data-sdp-cell=\"${cellId}\"]`);\n if (el?.focus) el.focus();\n }, 0);\n }\n\n private static readonly ROW_SIZE = 7;\n\n getDayIndexInMonth(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const idx = dates.findIndex((d) => d.date === day.date);\n return idx >= 0 ? idx : -1;\n }\n\n getNextDayIndex(currentIndex: number, direction: \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\", panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const len = dates.length;\n if (len === 0) return -1;\n let delta = 0;\n if (direction === \"ArrowRight\") delta = 1;\n else if (direction === \"ArrowLeft\") delta = -1;\n else if (direction === \"ArrowUp\") delta = -TzDrpContainerComponent.ROW_SIZE;\n else if (direction === \"ArrowDown\") delta = TzDrpContainerComponent.ROW_SIZE;\n let next = currentIndex + delta;\n if (next < 0 || next >= len) return -1;\n if (dates[next].date > 0 && !dates[next].isDisabledDay) return next;\n while (next >= 0 && next < len && (dates[next].date === 0 || dates[next].isDisabledDay)) {\n next += delta;\n }\n return next >= 0 && next < len && dates[next].date > 0 && !dates[next].isDisabledDay ? next : -1;\n }\n\n private moveFocusToAdjacentMonth(key: \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\"): void {\n const goForward = key === \"ArrowRight\" || key === \"ArrowDown\";\n if (goForward) {\n if (this.isNextMonthDisabled()) return;\n this.navigateMonth(\"NEXT\");\n } else {\n if (this.isPreviousMonthDisabled()) return;\n this.navigateMonth(\"PREVIOUS\");\n }\n const selectable = this.currentMonthDates().filter(d => d.date > 0 && !d.isDisabledDay);\n const target = goForward ? selectable[0] : selectable[selectable.length - 1];\n if (target) {\n this.scheduleFocusCell(this.getDayCellId(target, \"LEFT\"));\n }\n }\n\n handleDayKeydown(event: KeyboardEvent, panel: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates): void {\n const arrowKeys = [\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"];\n if (arrowKeys.includes(event.key)) {\n event.preventDefault();\n const currentIndex = this.getDayIndexInMonth(day, panel);\n if (currentIndex < 0) return;\n const nextIndex = this.getNextDayIndex(currentIndex, event.key as \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\", panel);\n if (nextIndex >= 0) {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const nextDay = dates[nextIndex];\n this.scheduleFocusCell(this.getDayCellId(nextDay, panel));\n return;\n }\n if (!this.showSecondMonth()) {\n this.moveFocusToAdjacentMonth(event.key as \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\");\n }\n return;\n }\n if (day.date <= 0 || day.isDisabledDay) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.selectDay(panel, day);\n }\n }\n\n}\n\n","import { ConnectionPositionPair, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, VerticalConnectionPos } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, HostListener, Injector, input, output, Optional, ViewContainerRef, signal, effect } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport { ISDatePickerConfig, ISDatePickerToastText, ISSelectedDatesConfig, IRSelectedDatesConfig } from \"./models/sdp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-sdp-container/tz-sdp-container.component\";\n\n@Directive({\n selector: \"input[misTzSdp]\"\n})\nexport class TzSpecificDatepickerDirective {\n // Inputs are now defined using `input()`\n public readonly dpConfig = input<ISDatePickerConfig>({\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n timezone: \"Asia/Kolkata\"\n });\n public readonly selectedDates = input<ISSelectedDatesConfig[]>([]);\n public readonly selectedDatesRange = input<IRSelectedDatesConfig>({startDate: null, endDate: null});\n public readonly datesDisabled = input<string[]>([]);\n public readonly holidaysDates = input<string[]>([]);\n public readonly weekOffsSelection = input<string[]>([]);\n public readonly noShows = input<string[]>([]);\n public readonly dateMessages = input<ISDatePickerToastText[]>([]);\n public readonly positionX = input<\"start\" | \"center\" | \"end\">(\"center\");\n public readonly positionY = input<\"top\" | \"center\" | \"bottom\">(\"bottom\");\n public readonly offsetX = input<number>(0);\n public readonly offsetY = input<number>(0);\n public readonly isSPickerSelected = input<boolean>(false);\n public readonly isSingleDatePickerEnable = input<boolean>(false);\n public readonly isMobileView = input<boolean>(false);\n \n // Outputs are now defined using `output()`\n public readonly dateChange = output<ISSelectedDatesConfig[]>();\n public readonly dateChangeRange = output<IRSelectedDatesConfig>();\n \n private readonly isOpen = signal(false);\n private overlayRef: OverlayRef | null = null;\n \n constructor(\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n @Optional() private control: NgControl\n ) {\n // Effect to handle the overlay position update reactively\n effect(() => {\n const positions = this.buildPositions();\n if (!this.overlayRef) {\n return;\n }\n this.overlayRef.updatePositionStrategy(this.buildPositionStrategy(positions));\n });\n }\n\n private buildPositions(): ConnectionPositionPair[] {\n const x = this.positionX();\n const y = this.positionY();\n const offsetX = this.offsetX();\n const offsetY = this.offsetY();\n const oppositeY: VerticalConnectionPos = y === \"top\" ? \"bottom\" : y === \"bottom\" ? \"top\" : \"center\";\n const otherX = ([\"start\", \"center\", \"end\"] as HorizontalConnectionPos[]).filter(pos => pos !== x);\n const pair = (originX: HorizontalConnectionPos, originY: VerticalConnectionPos, overlayY: VerticalConnectionPos) =>\n new ConnectionPositionPair({ originX, originY }, { overlayX: originX, overlayY }, offsetX, offsetY);\n\n return [\n pair(x, y, oppositeY),\n pair(x, oppositeY, y),\n ...otherX.map(pos => pair(pos, y, oppositeY)),\n ...otherX.map(pos => pair(pos, oppositeY, y))\n ];\n }\n\n private buildPositionStrategy(positions: ConnectionPositionPair[]) {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(positions)\n .withPush(true);\n }\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.enter\")\n toggleDatePickerOnEnter() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n private open() {\n this.isOpen.set(true);\n const positionStrategy = this.buildPositionStrategy(this.buildPositions());\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n \n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages(),\n dates: this.control?.control.value || this.selectedDates(),\n datesRange: this.control?.control.value || this.selectedDatesRange(),\n dpConfig: this.dpConfig(),\n datesDisabled: this.datesDisabled(),\n dateChange: this.applyDate.bind(this),\n dateChangeRange: this.applyDateRange.bind(this),\n close: this.close.bind(this),\n weekOffs: this.weekOffsSelection(),\n holidays: this.holidaysDates(),\n noShow: this.noShows(),\n isSPickerSelected: this.isSPickerSelected(),\n isSingleDatePickerEnable: this.isSingleDatePickerEnable(),\n isMobileView: this.isMobileView(),\n }\n }\n ]\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISSelectedDatesConfig[]) {\n this.dateChange.emit(dates);\n this.control?.control.patchValue(dates);\n this.close();\n }\n \n applyDateRange(dates: IRSelectedDatesConfig) {\n this.dateChangeRange.emit(dates);\n this.control?.control.patchValue(dates);\n this.close();\n }\n \n close() {\n const triggerEl = this.element?.nativeElement;\n this.isOpen.set(false);\n if (this.overlayRef) {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n if (triggerEl && typeof triggerEl.focus === \"function\") {\n setTimeout(() => triggerEl.focus(), 10);\n }\n }\n}\n\n\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TzDrpContainerComponent } from \"./tz-sdp-container/tz-sdp-container.component\";\nimport { TzSpecificDatepickerDirective } from \"./tz-specificdatepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { RadioButtonModule } from \"mis-crystal-design-system/radio-button\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzSpecificDatepickerDirective],\n imports: [CommonModule, OverlayModule, ToastModule.forRoot(), ButtonModule.forRoot(), RadioButtonModule, A11yModule],\n exports: [TzDrpContainerComponent, TzSpecificDatepickerDirective]\n})\nexport class SpecificDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-specificdatepicker.mjs","sources":["../../../projects/mis-components/specificdatepicker/daterangepicker-constants.ts","../../../projects/mis-components/specificdatepicker/utils/index.ts","../../../projects/mis-components/specificdatepicker/tz-sdp-container/tz-sdp-container.component.html","../../../projects/mis-components/specificdatepicker/tz-sdp-container/tz-sdp-container.component.ts","../../../projects/mis-components/specificdatepicker/tz-specificdatepicker.directive.ts","../../../projects/mis-components/specificdatepicker/specificdatepicker.module.ts","../../../projects/mis-components/specificdatepicker/mis-crystal-design-system-specificdatepicker.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>(\"CONTAINER_DATA\");\nexport const DATE_FORMAT = \"DD-MM-YYYY\";\n","import { ICurrentMonth } from \"../models/sdp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = \"January\";\n break;\n case 1:\n month = \"February\";\n break;\n case 2:\n month = \"March\";\n break;\n case 3:\n month = \"April\";\n break;\n case 4:\n month = \"May\";\n break;\n case 5:\n month = \"June\";\n break;\n case 6:\n month = \"July\";\n break;\n case 7:\n month = \"August\";\n break;\n case 8:\n month = \"September\";\n break;\n case 9:\n month = \"October\";\n break;\n case 10:\n month = \"November\";\n break;\n case 11:\n month = \"December\";\n break;\n default:\n break;\n }\n return month;\n};\n","<div class=\"daterangepicker-container\" [class.mobile-view]=\"isMobile()\" [class.single-date-picker-enabled]=\"data().isSingleDatePickerEnable\" aria-label=\"Choose date or date range\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"radio-container\">\n<div\n class=\"label\"\n tabindex=\"0\"\n (keydown.enter)=\"changePicker(picker)\"\n [attr.aria-label]=\"(formControl?.value === picker) ? (picker + ', selected') : (picker + ', click to select')\"\n *ngFor=\"let picker of datePickerValue(); let i = index\"\n>\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n</div>\n</div>\n <div class=\"specific-datepicker-container\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isPreviousMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isPreviousMonthDisabled()\"\n aria-label=\"Previous month\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n (keydown.enter)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{ 'disabled-month': isPreviousMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n @if (!showSecondMonth()) {\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isNextMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isNextMonthDisabled()\"\n aria-label=\"Next month\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keydown.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n } @else {\n <div></div>\n }\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'LEFT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'LEFT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + currentMonth() + ' ' + currentYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && !dateRangeSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && dateRangeSelected(),\n 'selected-end-day': day.isSelectedEndDay && dateRangeSelected(),\n 'in-range-day': day.inRangeDay && dateRangeSelected(),\n 'is-valid-date': day.date > 0 && dateRangeSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"getDayCellStyle(day)\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n (keydown)=\"handleDayKeydown($event, 'LEFT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday || day.isNoShow,\n 'noShow': day.isNoShow }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay, 'holiday-text': day.isHoliday || day.isNoShow || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n @if (showSecondMonth()) {\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isNextMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isNextMonthDisabled()\"\n aria-label=\"Next month\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keydown.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() }\"\n >\n <ng-container *ngTemplateOutlet=\"arrowSvg\"></ng-container>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'RIGHT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'RIGHT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + nextMonth() + ' ' + nextYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && !dateRangeSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && dateRangeSelected(),\n 'selected-end-day': day.isSelectedEndDay && dateRangeSelected(),\n 'in-range-day': day.inRangeDay && dateRangeSelected(),\n 'is-valid-date': day.date > 0 && dateRangeSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"getDayCellStyle(day)\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n (keydown)=\"handleDayKeydown($event, 'RIGHT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday || day.isNoShow,\n 'noShow': day.isNoShow }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()), 'holiday-text': day.isHoliday || day.isNoShow || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"weekOffs_holidays_container\" tabindex=\"0\" [attr.aria-label]=\"'Weekly offs: ' + (data().weekOffs?.length ? data().weekOffs.join(', ') : 'None') + '. Holidays marked with a dot on the calendar.'\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n @if(data().noShow?.length){\n <span>No-Show Enforcement Window<span class=\"circular-dot noShow\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n }\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\">\n <span>{{localSelectedDates().length}}</span> day(s) selected\n </span>\n <span *ngIf=\"dateRangeSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button #cancelBtn mis-button size=\"md\" type=\"none\" tabindex=\"0\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\">Apply</button>\n <button *ngIf=\"dateRangeSelected()\" #applyRangeBtn mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\">Apply</button>\n </div>\n </div>\n </div>\n\n</div>\n\n<ng-template #arrowSvg>\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n</ng-template>\n\n\n","import { Component, ElementRef, Inject, OnInit, signal, computed } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISSelectedDatesConfig, IRSelectedDatesConfig } from \"../models/sdp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport dayjs, { Dayjs, tz } from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport isBetween from 'dayjs/plugin/isBetween';\n\ndayjs.extend(isBetween);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\ntype SdpMode = \"SINGLE\" | \"SPECIFIC\" | \"RANGE\";\n\nconst MODE_LABELS: Record<SdpMode, string> = {\n SINGLE: \"Single Date\",\n SPECIFIC: \"Specific Date(s)\",\n RANGE: \"Date Range\"\n};\n\n@Component({\n selector: \"mis-tz-sdp\",\n templateUrl: \"./tz-sdp-container.component.html\",\n styleUrls: [\"./tz-sdp-container.component.scss\"]\n})\nexport class TzDrpContainerComponent implements OnInit {\n\n readonly data = signal<IDatePickerData>(this.injectedData);\n\n public readonly isMobile = computed(() => !!this.data().isMobileView);\n\n private readonly dayjsInstance = computed(() => {\n const config = this.data().dpConfig;\n if (config?.timezone) {\n // Returns a function that creates a timezone-aware dayjs instance\n return (...args: any[]) => dayjs(...args).tz(config.timezone);\n }\n // Returns a function that creates a standard dayjs instance\n return (...args: any[]) => dayjs(...args);\n });\n\n private readonly rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\n public readonly localSelectedDates = signal<ISSelectedDatesConfig[]>([]);\n public readonly localSelectedDatesRange = signal<IRSelectedDatesConfig>({startDate: null, endDate: null});\n\n public readonly isDatesValid = computed(() => {\n if (this.dateRangeSelected()) {\n const range = this.localSelectedDatesRange();\n return !!(range?.startDate && range?.endDate);\n }\n return this.localSelectedDates().length > 0;\n });\n\n private readonly mode = signal<SdpMode>(\"SPECIFIC\");\n public readonly isSpecificPickerSelected = computed(() => this.mode() === \"SPECIFIC\");\n public readonly singleDatePickerSelected = computed(() => this.mode() === \"SINGLE\");\n public readonly dateRangeSelected = computed(() => this.mode() === \"RANGE\");\n\n public readonly selectionStarted = signal(false);\n\n public readonly formControl = new UntypedFormControl(MODE_LABELS.SPECIFIC);\n public readonly datePickerValue = signal<string[]>([MODE_LABELS.SPECIFIC, MODE_LABELS.RANGE]);\n \n public readonly currentMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).month() : dayjs().month());\n public readonly currentYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).year() : dayjs().year());\n public readonly nextMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, \"month\").month() : dayjs().add(1, \"month\").month());\n public readonly nextYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, \"month\").year() : dayjs().add(1, \"month\").year());\n \n\n public readonly weekDays = computed(() => {\n return this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.dayjsInstance()().day() === index\n }));\n });\n public readonly currentMonth = computed(() => getMonth(this.currentMonthNumber()));\n public readonly nextMonth = computed(() => getMonth(this.nextMonthNumber()));\n public readonly todayMonthNumber = computed(() => this.dayjsInstance()().month());\n public readonly dateRangeLength = computed(() => {\n const range = this.localSelectedDatesRange();\n if (range?.startDate && range?.endDate) {\n const start = this.dayjsInstance()(range.startDate, this.data().dpConfig.format);\n const end = this.dayjsInstance()(range.endDate, this.data().dpConfig.format);\n if (start.isValid() && end.isValid()) {\n return end.diff(start, 'day') + 1;\n }\n }\n return 0;\n });\n public readonly isPreviousMonthDisabled = computed(() => {\n const currentInstance = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance()(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n return minDate.isValid() && minDate.isSameOrAfter(currentInstance, \"month\");\n });\n public readonly isNextMonthDisabled = computed(() => {\n const currentInstance = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance()(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n return maxDate.isValid() && maxDate.isSameOrBefore(currentInstance, \"month\");\n });\n public readonly currentMonthDates = computed(() => {\n return this.generateDates(this.currentMonthNumber(), this.currentYearNumber());\n });\n public readonly nextMonthDates = computed(() => {\n return this.generateDates(this.nextMonthNumber(), this.nextYearNumber());\n });\n\n public readonly showSecondMonth = computed(() => !this.isMobile() && !this.singleDatePickerSelected());\n\n constructor(\n @Inject(CONTAINER_DATA) private injectedData: IDatePickerData,\n private toast: ToastService,\n private elementRef: ElementRef<HTMLElement>\n ) {\n this.localSelectedDates.set(this.data().dates);\n this.localSelectedDatesRange.set(this.injectedData.datesRange || {startDate: null, endDate: null});\n\n if (this.data().isSingleDatePickerEnable) {\n if (!this.datePickerValue().includes(MODE_LABELS.SINGLE)) {\n this.datePickerValue.update(currentValue => [MODE_LABELS.SINGLE, ...currentValue]);\n }\n this.setMode(\"SINGLE\");\n } else {\n this.setMode(this.data().isSPickerSelected ? \"SPECIFIC\" : \"RANGE\");\n }\n }\n\n ngOnInit(): void {\n if (!this.data()?.dpConfig?.format) {\n this.data().dpConfig = {\n ...this.data().dpConfig,\n format: DATE_FORMAT\n };\n }\n this.positionToSelection();\n }\n\n private setMode(mode: SdpMode): void {\n this.mode.set(mode);\n this.formControl.setValue(MODE_LABELS[mode], { emitEvent: false });\n if (mode === \"SINGLE\" && this.localSelectedDates().length > 1) {\n this.localSelectedDates.update(dates => dates.slice(0, 1));\n }\n }\n\n private positionToSelection(): void {\n const format = this.data().dpConfig.format;\n const selectedStartDate: Dayjs = this.dateRangeSelected()\n ? this.dayjsInstance()(this.localSelectedDatesRange()?.startDate, format)\n : this.dayjsInstance()(this.localSelectedDates()?.[0]?.selectedDate, format);\n if (!selectedStartDate.isValid()) {\n return;\n }\n this.currentYearNumber.set(selectedStartDate.year());\n this.nextYearNumber.set(selectedStartDate.add(1, \"month\").year());\n this.currentMonthNumber.set(selectedStartDate.get(\"month\"));\n this.nextMonthNumber.set(selectedStartDate.add(1, \"month\").month());\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n const dates: ICurrentMonthDates[] = [];\n const daysInMonth = new Date(currentYearNumber, month + 1, 0).getDate();\n \n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = this.dayjsInstance()().year(currentYearNumber).month(month).date(currentDate);\n const dateString = date.format(this.data().dpConfig.format);\n\n let isDisabledDay = this.data().datesDisabled.some(d => d === dateString);\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance()(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n if (!isDisabledDay && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance()(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n if (!isDisabledDay && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n\n const isCurrentDay = date.isSame(this.dayjsInstance()(), 'day');\n let isSelectedDay = this.localSelectedDates().some(d => d.selectedDate === dateString);\n const isSelectedStartDay = !!this.localSelectedDatesRange()?.startDate && date.format(this.data().dpConfig.format) === this.localSelectedDatesRange()?.startDate;\n const isSelectedEndDay = !!this.localSelectedDatesRange()?.endDate && date.format(this.data().dpConfig.format) === this.localSelectedDatesRange()?.endDate;\n const inRangeDay = !!(this.localSelectedDatesRange()?.startDate && this.localSelectedDatesRange()?.endDate) &&\n date.isBetween(this.dayjsInstance()(this.localSelectedDatesRange()?.startDate, this.data().dpConfig.format), this.dayjsInstance()(this.localSelectedDatesRange()?.endDate, this.data().dpConfig.format), 'day', '()');\n\n const isHoliday = this.data().holidays.includes(dateString);\n const isWeekOff = this.data().weekOffs.includes(date.format('ddd'));\n const isNoShow = this.data().noShow.includes(dateString);\n\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isSelectedDay,\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n isHoliday,\n isNoShow,\n isWeekOff,\n toastMessage: this.data().messages.find(q => date.format(this.data().dpConfig.format) === q.date)?.message || \"\",\n isDisabledDay\n });\n }\n\n for (let i = dates[0]?.weekDay || 0; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Dayjs = this.dayjsInstance()().year(this.currentYearNumber()).month(this.currentMonthNumber());\n thisMonth = direction === \"NEXT\" ? thisMonth.add(1, \"month\") : thisMonth.subtract(1, \"month\");\n this.currentMonthNumber.set(thisMonth.month());\n this.currentYearNumber.set(thisMonth.year());\n this.nextMonthNumber.set(thisMonth.clone().add(1, \"month\").month());\n this.nextYearNumber.set(thisMonth.clone().add(1, \"month\").year());\n }\n\n selectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates): void {\n if (day.date <= 0 || day.isDisabledDay) {\n if (day.toastMessage) this.toast.displayMsg(day.toastMessage, 4000);\n return;\n }\n \n if (!this.dateRangeSelected()) {\n const currentSelection = this.dayjsInstance()()\n .year(from === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber())\n .month(from === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber())\n .date(day.date).format(this.data().dpConfig.format);\n\n if (this.singleDatePickerSelected()) {\n this.localSelectedDates.set([{ selectedDate: currentSelection }]);\n this.applyDates();\n return;\n } else {\n this.localSelectedDates.update(current => {\n const existingIndex = current.findIndex(d => d.selectedDate === currentSelection);\n if (existingIndex !== -1) {\n return current.filter((_, index) => index !== existingIndex);\n }\n return [...current, { selectedDate: currentSelection }];\n });\n }\n } else {\n const dayjsDay = this.dayjsInstance()()\n .year(from === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber())\n .month(from === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber())\n .date(day.date);\n \n this.localSelectedDatesRange.update(current => {\n if (this.selectionStarted()) {\n if (dayjsDay.isBefore(this.dayjsInstance()(current.startDate, this.data().dpConfig.format), \"day\")) {\n this.selectionStarted.set(true);\n return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };\n }\n this.selectionStarted.set(false);\n return { ...current, endDate: dayjsDay.format(this.data().dpConfig.format) };\n } else {\n this.selectionStarted.set(true);\n return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };\n }\n });\n }\n this.scheduleFocusCell(this.getDayCellId(day, from));\n }\n\n applyDates(): void {\n this.data().dateChange(this.localSelectedDates());\n }\n\n applyDatesRange(): void {\n this.data().dateChangeRange(this.localSelectedDatesRange());\n }\n\n cancelDatePicker(): void {\n this.data().close();\n }\n\n changePicker(event: any): void {\n // As discussed, state is retained when switching modes.\n // The view will simply update to reflect the active mode.\n const mode = (Object.keys(MODE_LABELS) as SdpMode[]).find(key => MODE_LABELS[key] === event);\n if (mode) {\n this.setMode(mode);\n }\n }\n\n getDayCellStyle(day: ICurrentMonthDates): Record<string, string> {\n const hasMarker = !!(day.isHoliday || day.isNoShow);\n return {\n \"justify-content\": hasMarker ? \"flex-start\" : \"center\",\n \"padding-top\": hasMarker ? \"2.8px\" : \"0px\",\n \"margin-right\": this.dateRangeSelected() ? \"0px\" : \"1px\",\n width: this.dateRangeSelected() ? \"36px\" : \"35px\",\n height: hasMarker ? \"33px\" : \"36px\"\n };\n }\n\n getDayTabIndex(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n if (!dates?.length) return -1;\n const firstIndex = dates.findIndex((d) => d.date > 0 && !d.isDisabledDay);\n if (firstIndex < 0) return -1;\n const currentIndex = dates.findIndex((d) => d === day);\n return currentIndex === firstIndex ? 0 : -1;\n }\n\n getDayCellId(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): string {\n if (day?.date <= 0) return \"\";\n const month = panel === \"LEFT\" ? this.currentMonthNumber() : this.nextMonthNumber();\n const year = panel === \"LEFT\" ? this.currentYearNumber() : this.nextYearNumber();\n return `${panel === \"LEFT\" ? \"L\" : \"R\"}-${month}-${year}-${day.date}`;\n }\n\n private scheduleFocusCell(cellId: string): void {\n if (!cellId) return;\n const host = this.elementRef?.nativeElement;\n setTimeout(() => {\n const el = host?.querySelector?.<HTMLElement>(`[data-sdp-cell=\"${cellId}\"]`);\n if (el?.focus) el.focus();\n }, 0);\n }\n\n private static readonly ROW_SIZE = 7;\n\n getDayIndexInMonth(day: ICurrentMonthDates, panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const idx = dates.findIndex((d) => d.date === day.date);\n return idx >= 0 ? idx : -1;\n }\n\n getNextDayIndex(currentIndex: number, direction: \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\", panel: \"LEFT\" | \"RIGHT\"): number {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const len = dates.length;\n if (len === 0) return -1;\n let delta = 0;\n if (direction === \"ArrowRight\") delta = 1;\n else if (direction === \"ArrowLeft\") delta = -1;\n else if (direction === \"ArrowUp\") delta = -TzDrpContainerComponent.ROW_SIZE;\n else if (direction === \"ArrowDown\") delta = TzDrpContainerComponent.ROW_SIZE;\n let next = currentIndex + delta;\n if (next < 0 || next >= len) return -1;\n if (dates[next].date > 0 && !dates[next].isDisabledDay) return next;\n while (next >= 0 && next < len && (dates[next].date === 0 || dates[next].isDisabledDay)) {\n next += delta;\n }\n return next >= 0 && next < len && dates[next].date > 0 && !dates[next].isDisabledDay ? next : -1;\n }\n\n private moveFocusToAdjacentMonth(key: \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\"): void {\n const goForward = key === \"ArrowRight\" || key === \"ArrowDown\";\n if (goForward) {\n if (this.isNextMonthDisabled()) return;\n this.navigateMonth(\"NEXT\");\n } else {\n if (this.isPreviousMonthDisabled()) return;\n this.navigateMonth(\"PREVIOUS\");\n }\n const selectable = this.currentMonthDates().filter(d => d.date > 0 && !d.isDisabledDay);\n const target = goForward ? selectable[0] : selectable[selectable.length - 1];\n if (target) {\n this.scheduleFocusCell(this.getDayCellId(target, \"LEFT\"));\n }\n }\n\n handleDayKeydown(event: KeyboardEvent, panel: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates): void {\n const arrowKeys = [\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"];\n if (arrowKeys.includes(event.key)) {\n event.preventDefault();\n const currentIndex = this.getDayIndexInMonth(day, panel);\n if (currentIndex < 0) return;\n const nextIndex = this.getNextDayIndex(currentIndex, event.key as \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\", panel);\n if (nextIndex >= 0) {\n const dates = panel === \"LEFT\" ? this.currentMonthDates() : this.nextMonthDates();\n const nextDay = dates[nextIndex];\n this.scheduleFocusCell(this.getDayCellId(nextDay, panel));\n return;\n }\n if (!this.showSecondMonth()) {\n this.moveFocusToAdjacentMonth(event.key as \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"ArrowDown\");\n }\n return;\n }\n if (day.date <= 0 || day.isDisabledDay) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.selectDay(panel, day);\n }\n }\n\n}\n\n","import { ConnectionPositionPair, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, VerticalConnectionPos } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, HostListener, Injector, input, output, Optional, ViewContainerRef, signal, effect } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport { ISDatePickerConfig, ISDatePickerToastText, ISSelectedDatesConfig, IRSelectedDatesConfig } from \"./models/sdp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-sdp-container/tz-sdp-container.component\";\n\n@Directive({\n selector: \"input[misTzSdp]\"\n})\nexport class TzSpecificDatepickerDirective {\n // Inputs are now defined using `input()`\n public readonly dpConfig = input<ISDatePickerConfig>({\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n timezone: \"Asia/Kolkata\"\n });\n public readonly selectedDates = input<ISSelectedDatesConfig[]>([]);\n public readonly selectedDatesRange = input<IRSelectedDatesConfig>({startDate: null, endDate: null});\n public readonly datesDisabled = input<string[]>([]);\n public readonly holidaysDates = input<string[]>([]);\n public readonly weekOffsSelection = input<string[]>([]);\n public readonly noShows = input<string[]>([]);\n public readonly dateMessages = input<ISDatePickerToastText[]>([]);\n public readonly positionX = input<\"start\" | \"center\" | \"end\">(\"center\");\n public readonly positionY = input<\"top\" | \"center\" | \"bottom\">(\"bottom\");\n public readonly offsetX = input<number>(0);\n public readonly offsetY = input<number>(0);\n public readonly isSPickerSelected = input<boolean>(false);\n public readonly isSingleDatePickerEnable = input<boolean>(false);\n public readonly isMobileView = input<boolean>(false);\n \n // Outputs are now defined using `output()`\n public readonly dateChange = output<ISSelectedDatesConfig[]>();\n public readonly dateChangeRange = output<IRSelectedDatesConfig>();\n \n private readonly isOpen = signal(false);\n private overlayRef: OverlayRef | null = null;\n \n constructor(\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n @Optional() private control: NgControl\n ) {\n // Effect to handle the overlay position update reactively\n effect(() => {\n const positions = this.buildPositions();\n if (!this.overlayRef) {\n return;\n }\n this.overlayRef.updatePositionStrategy(this.buildPositionStrategy(positions));\n });\n }\n\n private buildPositions(): ConnectionPositionPair[] {\n const x = this.positionX();\n const y = this.positionY();\n const offsetX = this.offsetX();\n const offsetY = this.offsetY();\n const oppositeY: VerticalConnectionPos = y === \"top\" ? \"bottom\" : y === \"bottom\" ? \"top\" : \"center\";\n const otherX = ([\"start\", \"center\", \"end\"] as HorizontalConnectionPos[]).filter(pos => pos !== x);\n const pair = (originX: HorizontalConnectionPos, originY: VerticalConnectionPos, overlayY: VerticalConnectionPos) =>\n new ConnectionPositionPair({ originX, originY }, { overlayX: originX, overlayY }, offsetX, offsetY);\n\n return [\n pair(x, y, oppositeY),\n pair(x, oppositeY, y),\n ...otherX.map(pos => pair(pos, y, oppositeY)),\n ...otherX.map(pos => pair(pos, oppositeY, y))\n ];\n }\n\n private buildPositionStrategy(positions: ConnectionPositionPair[]) {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(positions)\n .withPush(true);\n }\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.enter\")\n toggleDatePickerOnEnter() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n private open() {\n this.isOpen.set(true);\n const positionStrategy = this.buildPositionStrategy(this.buildPositions());\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n \n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages(),\n dates: this.control?.control.value || this.selectedDates(),\n datesRange: this.control?.control.value || this.selectedDatesRange(),\n dpConfig: this.dpConfig(),\n datesDisabled: this.datesDisabled(),\n dateChange: this.applyDate.bind(this),\n dateChangeRange: this.applyDateRange.bind(this),\n close: this.close.bind(this),\n weekOffs: this.weekOffsSelection(),\n holidays: this.holidaysDates(),\n noShow: this.noShows(),\n isSPickerSelected: this.isSPickerSelected(),\n isSingleDatePickerEnable: this.isSingleDatePickerEnable(),\n isMobileView: this.isMobileView(),\n }\n }\n ]\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISSelectedDatesConfig[]) {\n this.dateChange.emit(dates);\n this.control?.control.patchValue(dates);\n this.close();\n }\n \n applyDateRange(dates: IRSelectedDatesConfig) {\n this.dateChangeRange.emit(dates);\n this.control?.control.patchValue(dates);\n this.close();\n }\n \n close() {\n const triggerEl = this.element?.nativeElement;\n this.isOpen.set(false);\n if (this.overlayRef) {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n if (triggerEl && typeof triggerEl.focus === \"function\") {\n setTimeout(() => triggerEl.focus(), 10);\n }\n }\n}\n\n\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TzDrpContainerComponent } from \"./tz-sdp-container/tz-sdp-container.component\";\nimport { TzSpecificDatepickerDirective } from \"./tz-specificdatepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { RadioButtonModule } from \"mis-crystal-design-system/radio-button\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzSpecificDatepickerDirective],\n imports: [CommonModule, OverlayModule, ToastModule.forRoot(), ButtonModule.forRoot(), RadioButtonModule, A11yModule],\n exports: [TzDrpContainerComponent, TzSpecificDatepickerDirective]\n})\nexport class SpecificDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mis-crystal-design-system",
|
|
3
|
-
"version": "18.2.
|
|
3
|
+
"version": "18.2.18",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "*",
|
|
6
6
|
"@angular/core": "*",
|
|
@@ -34,18 +34,18 @@
|
|
|
34
34
|
"esm": "./esm2022/analytics/mis-crystal-design-system-analytics.mjs",
|
|
35
35
|
"default": "./fesm2022/mis-crystal-design-system-analytics.mjs"
|
|
36
36
|
},
|
|
37
|
-
"./button": {
|
|
38
|
-
"types": "./button/index.d.ts",
|
|
39
|
-
"esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
40
|
-
"esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
41
|
-
"default": "./fesm2022/mis-crystal-design-system-button.mjs"
|
|
42
|
-
},
|
|
43
37
|
"./async-search-dropdown": {
|
|
44
38
|
"types": "./async-search-dropdown/index.d.ts",
|
|
45
39
|
"esm2022": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
|
|
46
40
|
"esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
|
|
47
41
|
"default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
|
|
48
42
|
},
|
|
43
|
+
"./button": {
|
|
44
|
+
"types": "./button/index.d.ts",
|
|
45
|
+
"esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
46
|
+
"esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
47
|
+
"default": "./fesm2022/mis-crystal-design-system-button.mjs"
|
|
48
|
+
},
|
|
49
49
|
"./checkbox": {
|
|
50
50
|
"types": "./checkbox/index.d.ts",
|
|
51
51
|
"esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
|
|
@@ -64,18 +64,18 @@
|
|
|
64
64
|
"esm": "./esm2022/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs",
|
|
65
65
|
"default": "./fesm2022/mis-crystal-design-system-datepicker_v2.mjs"
|
|
66
66
|
},
|
|
67
|
-
"./daterangepicker_v2": {
|
|
68
|
-
"types": "./daterangepicker_v2/index.d.ts",
|
|
69
|
-
"esm2022": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|
|
70
|
-
"esm": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|
|
71
|
-
"default": "./fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs"
|
|
72
|
-
},
|
|
73
67
|
"./drawer": {
|
|
74
68
|
"types": "./drawer/index.d.ts",
|
|
75
69
|
"esm2022": "./esm2022/drawer/mis-crystal-design-system-drawer.mjs",
|
|
76
70
|
"esm": "./esm2022/drawer/mis-crystal-design-system-drawer.mjs",
|
|
77
71
|
"default": "./fesm2022/mis-crystal-design-system-drawer.mjs"
|
|
78
72
|
},
|
|
73
|
+
"./daterangepicker_v2": {
|
|
74
|
+
"types": "./daterangepicker_v2/index.d.ts",
|
|
75
|
+
"esm2022": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|
|
76
|
+
"esm": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|
|
77
|
+
"default": "./fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs"
|
|
78
|
+
},
|
|
79
79
|
"./dropdown": {
|
|
80
80
|
"types": "./dropdown/index.d.ts",
|
|
81
81
|
"esm2022": "./esm2022/dropdown/mis-crystal-design-system-dropdown.mjs",
|
|
@@ -106,18 +106,18 @@
|
|
|
106
106
|
"esm": "./esm2022/filter/mis-crystal-design-system-filter.mjs",
|
|
107
107
|
"default": "./fesm2022/mis-crystal-design-system-filter.mjs"
|
|
108
108
|
},
|
|
109
|
-
"./input": {
|
|
110
|
-
"types": "./input/index.d.ts",
|
|
111
|
-
"esm2022": "./esm2022/input/mis-crystal-design-system-input.mjs",
|
|
112
|
-
"esm": "./esm2022/input/mis-crystal-design-system-input.mjs",
|
|
113
|
-
"default": "./fesm2022/mis-crystal-design-system-input.mjs"
|
|
114
|
-
},
|
|
115
109
|
"./input-stepper": {
|
|
116
110
|
"types": "./input-stepper/index.d.ts",
|
|
117
111
|
"esm2022": "./esm2022/input-stepper/mis-crystal-design-system-input-stepper.mjs",
|
|
118
112
|
"esm": "./esm2022/input-stepper/mis-crystal-design-system-input-stepper.mjs",
|
|
119
113
|
"default": "./fesm2022/mis-crystal-design-system-input-stepper.mjs"
|
|
120
114
|
},
|
|
115
|
+
"./input": {
|
|
116
|
+
"types": "./input/index.d.ts",
|
|
117
|
+
"esm2022": "./esm2022/input/mis-crystal-design-system-input.mjs",
|
|
118
|
+
"esm": "./esm2022/input/mis-crystal-design-system-input.mjs",
|
|
119
|
+
"default": "./fesm2022/mis-crystal-design-system-input.mjs"
|
|
120
|
+
},
|
|
121
121
|
"./loader": {
|
|
122
122
|
"types": "./loader/index.d.ts",
|
|
123
123
|
"esm2022": "./esm2022/loader/mis-crystal-design-system-loader.mjs",
|
|
@@ -130,18 +130,18 @@
|
|
|
130
130
|
"esm": "./esm2022/menu/mis-crystal-design-system-menu.mjs",
|
|
131
131
|
"default": "./fesm2022/mis-crystal-design-system-menu.mjs"
|
|
132
132
|
},
|
|
133
|
-
"./mis-slider": {
|
|
134
|
-
"types": "./mis-slider/index.d.ts",
|
|
135
|
-
"esm2022": "./esm2022/mis-slider/mis-crystal-design-system-mis-slider.mjs",
|
|
136
|
-
"esm": "./esm2022/mis-slider/mis-crystal-design-system-mis-slider.mjs",
|
|
137
|
-
"default": "./fesm2022/mis-crystal-design-system-mis-slider.mjs"
|
|
138
|
-
},
|
|
139
133
|
"./mobile-filter": {
|
|
140
134
|
"types": "./mobile-filter/index.d.ts",
|
|
141
135
|
"esm2022": "./esm2022/mobile-filter/mis-crystal-design-system-mobile-filter.mjs",
|
|
142
136
|
"esm": "./esm2022/mobile-filter/mis-crystal-design-system-mobile-filter.mjs",
|
|
143
137
|
"default": "./fesm2022/mis-crystal-design-system-mobile-filter.mjs"
|
|
144
138
|
},
|
|
139
|
+
"./mis-slider": {
|
|
140
|
+
"types": "./mis-slider/index.d.ts",
|
|
141
|
+
"esm2022": "./esm2022/mis-slider/mis-crystal-design-system-mis-slider.mjs",
|
|
142
|
+
"esm": "./esm2022/mis-slider/mis-crystal-design-system-mis-slider.mjs",
|
|
143
|
+
"default": "./fesm2022/mis-crystal-design-system-mis-slider.mjs"
|
|
144
|
+
},
|
|
145
145
|
"./modal": {
|
|
146
146
|
"types": "./modal/index.d.ts",
|
|
147
147
|
"esm2022": "./esm2022/modal/mis-crystal-design-system-modal.mjs",
|
|
@@ -214,18 +214,18 @@
|
|
|
214
214
|
"esm": "./esm2022/switch/mis-crystal-design-system-switch.mjs",
|
|
215
215
|
"default": "./fesm2022/mis-crystal-design-system-switch.mjs"
|
|
216
216
|
},
|
|
217
|
-
"./timepicker": {
|
|
218
|
-
"types": "./timepicker/index.d.ts",
|
|
219
|
-
"esm2022": "./esm2022/timepicker/mis-crystal-design-system-timepicker.mjs",
|
|
220
|
-
"esm": "./esm2022/timepicker/mis-crystal-design-system-timepicker.mjs",
|
|
221
|
-
"default": "./fesm2022/mis-crystal-design-system-timepicker.mjs"
|
|
222
|
-
},
|
|
223
217
|
"./table": {
|
|
224
218
|
"types": "./table/index.d.ts",
|
|
225
219
|
"esm2022": "./esm2022/table/mis-crystal-design-system-table.mjs",
|
|
226
220
|
"esm": "./esm2022/table/mis-crystal-design-system-table.mjs",
|
|
227
221
|
"default": "./fesm2022/mis-crystal-design-system-table.mjs"
|
|
228
222
|
},
|
|
223
|
+
"./timepicker": {
|
|
224
|
+
"types": "./timepicker/index.d.ts",
|
|
225
|
+
"esm2022": "./esm2022/timepicker/mis-crystal-design-system-timepicker.mjs",
|
|
226
|
+
"esm": "./esm2022/timepicker/mis-crystal-design-system-timepicker.mjs",
|
|
227
|
+
"default": "./fesm2022/mis-crystal-design-system-timepicker.mjs"
|
|
228
|
+
},
|
|
229
229
|
"./timerangepicker": {
|
|
230
230
|
"types": "./timerangepicker/index.d.ts",
|
|
231
231
|
"esm2022": "./esm2022/timerangepicker/mis-crystal-design-system-timerangepicker.mjs",
|