mis-crystal-design-system 18.0.26 → 18.0.27
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.
|
@@ -553,38 +553,42 @@ export class TzDpContainerComponent {
|
|
|
553
553
|
isDisabledDay = maxDate.isBefore(date, "day");
|
|
554
554
|
}
|
|
555
555
|
const currentDateInstance = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate);
|
|
556
|
-
|
|
556
|
+
// Only mark as current day if it's not disabled
|
|
557
|
+
const isCurrentDay = !isDisabledDay && currentDateInstance.format(this.data.dpConfig.format) === dayjs().format(this.data.dpConfig.format);
|
|
557
558
|
let isSelectedDay = false;
|
|
558
|
-
//
|
|
559
|
-
if (
|
|
560
|
-
|
|
561
|
-
this.localSelectedDate
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
if
|
|
569
|
-
|
|
570
|
-
if (
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
// For date-only format, compare the date parts only
|
|
576
|
-
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
577
|
-
if (selectedDate.isValid()) {
|
|
578
|
-
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
559
|
+
// Only set selected day if the date is not disabled
|
|
560
|
+
if (!isDisabledDay) {
|
|
561
|
+
// Prioritize current selection over previously applied date
|
|
562
|
+
if (this.localSelectedDate &&
|
|
563
|
+
this.localSelectedDate.date === currentDate &&
|
|
564
|
+
this.localSelectedDate.month === month &&
|
|
565
|
+
this.localSelectedDate.year === currentYearNumber) {
|
|
566
|
+
isSelectedDay = true;
|
|
567
|
+
}
|
|
568
|
+
else if (this.data.date && !this.localSelectedDate) {
|
|
569
|
+
// Only check previously applied date if no current selection
|
|
570
|
+
try {
|
|
571
|
+
if (this.data.dpConfig.enableTime) {
|
|
572
|
+
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
573
|
+
if (selectedDate.isValid()) {
|
|
574
|
+
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
575
|
+
}
|
|
579
576
|
}
|
|
580
577
|
else {
|
|
581
|
-
//
|
|
582
|
-
|
|
578
|
+
// For date-only format, compare the date parts only
|
|
579
|
+
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
580
|
+
if (selectedDate.isValid()) {
|
|
581
|
+
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
// Fallback to string comparison if parsing fails
|
|
585
|
+
isSelectedDay = dateString === this.data.date;
|
|
586
|
+
}
|
|
583
587
|
}
|
|
584
588
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
589
|
+
catch (error) {
|
|
590
|
+
// Silently handle date comparison error
|
|
591
|
+
}
|
|
588
592
|
}
|
|
589
593
|
}
|
|
590
594
|
dates.push({
|
|
@@ -844,4 +848,4 @@ export class TzDpContainerComponent {
|
|
|
844
848
|
args: ["keydown.esc"]
|
|
845
849
|
}] }); })();
|
|
846
850
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDpContainerComponent, { className: "TzDpContainerComponent" }); })();
|
|
847
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXJfdjIvdHotZHAtY29udGFpbmVyL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyX3YyL3R6LWRwLWNvbnRhaW5lci90ei1kcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUE7Ozs7Ozs7Ozs7Ozs7OztJQ1cxRCwrQkFBbUY7SUFBckQsK0tBQVMsNEJBQXFCLEtBQUM7SUFDM0QsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUscUlBQ0Y7Ozs7SUFDQSwrQkFBa0Y7SUFBbkQsK0tBQVMsMkJBQW9CLEtBQUM7SUFDM0QsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUscUdBQ0Y7Ozs7SUF5QkksK0JBTU87SUFKSCxvU0FBK0IsNEJBQWtCLEtBQUM7SUFLcEQsWUFDRjtJQUFBLGlCQUFNOzs7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Q1IsTUFBTTt1QkFBQyxjQUFjO2dEQXloQmxDLFVBQVU7a0JBRFQsWUFBWTttQkFBQyxhQUFhOztrRkF2akJoQixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX0RBVEEsIERBVEVfRk9STUFUIH0gZnJvbSBcIi4uL2RhdGVwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXkgfSBmcm9tIFwiLi4vbW9kZWxzL2RwLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0TW9udGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3RvYXN0XCI7XG5pbXBvcnQgZGF5anMsIHsgRGF5anMsIHR6IH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IGlzU2FtZU9yQWZ0ZXIgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQWZ0ZXInO1xuaW1wb3J0IGlzU2FtZU9yQmVmb3JlIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckJlZm9yZSc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0J1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10ei1kcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFR6RHBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXRhOiBJRGF0ZVBpY2tlckRhdGE7XG4gIHByaXZhdGUgcGFyc2Vab25lSW5zdGFuY2UgPSAoLi4uYXJncykgPT4ge1xuICAgIHJldHVybiBkYXlqcyguLi5hcmdzKTtcbiAgfTtcbiAgcHJpdmF0ZSByYXdXZWVrRGF5czogc3RyaW5nW10gPSBbXCJTVU5cIiwgXCJNT05cIiwgXCJUVUVcIiwgXCJXRURcIiwgXCJUSFVcIiwgXCJGUklcIiwgXCJTQVRcIl07XG4gIHdlZWtEYXlzOiBJV2Vla0RheVtdID0gW107XG4gIGN1cnJlbnRNb250aE51bWJlcjogbnVtYmVyO1xuICBjdXJyZW50TW9udGg6IElDdXJyZW50TW9udGg7XG4gIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXI7XG4gIGN1cnJlbnRNb250aERhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc05leHRNb250aERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGxvY2FsU2VsZWN0ZWREYXRlOiBJQ3VycmVudE1vbnRoRGF0ZXM7XG4gIGFsbG93Qm9va2luZ09uRGlzYWJsZWREYXk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudFNlbGVjdGlvbjogYW55O1xuICBcbiAgLy8gVGltZSBmdW5jdGlvbmFsaXR5IC0gb25seSB3aGF0J3MgbmVlZGVkXG4gIHNlbGVjdGVkSG91cjogbnVtYmVyID0gMDtcbiAgc2VsZWN0ZWRNaW51dGU6IG51bWJlciA9IDA7XG4gIHNlbGVjdGVkQW1QbTogc3RyaW5nID0gJ0FNJztcblxuICBpc1NlbGVjdGluZ01vbnRoOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU2VsZWN0aW5nWWVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBhdmFpbGFibGVZZWFyczogbnVtYmVyW10gPSBbXTtcbiAgYXZhaWxhYmxlTW9udGhzOiBzdHJpbmdbXSA9IFtdO1xuICBkaXNhYmxlZE1vbnRoczogYm9vbGVhbltdID0gW107XG4gIGRpc2FibGVkWWVhcnM6IGJvb2xlYW5bXSA9IFtdO1xuICBzZWxlY3RlZFllYXI6IG51bWJlcjtcbiAgaXNZZWFyU2VsZWN0aW9uRmxvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIGRhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHBhcnNlWm9uZUluc3RhbmNlIHdpdGggYmV0dGVyIGVycm9yIGhhbmRsaW5nXG4gICAgdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5kYXRhPy5kcENvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgICAgICByZXR1cm4gZGF5anMudHooYXJnc1swXSwgYXJnc1sxXSAgfHwgJ0REL01NL1lZWVknLCB0aGlzLmRhdGEuZHBDb25maWcudGltZXpvbmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBkYXlqcyguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIHRpbWV6b25lIHBhcnNpbmcgZXJyb3IsIGZhbGxiYWNrIHRvIGxvY2FsIHRpbWVcbiAgICAgICAgcmV0dXJuIGRheWpzKC4uLmFyZ3MpO1xuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIHNhZmVseVxuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLm1vbnRoKCk7XG4gICAgdGhpcy5jdXJyZW50TW9udGggPSBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKCk7XG4gICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSk7XG4gICAgXG4gICAgaWYgKCF0aGlzLmRhdGE/LmRwQ29uZmlnPy5mb3JtYXQpIHtcbiAgICAgIHRoaXMuZGF0YS5kcENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXRhLmRwQ29uZmlnLFxuICAgICAgICBmb3JtYXQ6IERBVEVfRk9STUFUXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmKCF0aGlzLmRhdGE/LmRhdGUpe1xuICAgICAgdGhpcy5kYXRhLmRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgIH1cblxuICAgIHRoaXMuYXZhaWxhYmxlTW9udGhzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IGRheWpzKCkubW9udGgoaSkuZm9ybWF0KCdNTU1NJykpO1xuICAgIHRoaXMuYXZhaWxhYmxlWWVhcnMgPSBBcnJheS5mcm9tKFxuICAgICAgeyBsZW5ndGg6IDEyIH0sXG4gICAgICAoXywgaW5kZXgpID0+IHRoaXMuY3VycmVudFllYXJOdW1iZXIgLSA2ICsgaW5kZXhcbiAgICApO1xuICAgIFxuICB9XG5cbiAgb25Ib3VySW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgICBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdXIgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTWludXRlSW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVIb3VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyIDwgMSkgdGhpcy5zZWxlY3RlZEhvdXIgPSAxO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyID4gMTIpIHRoaXMuc2VsZWN0ZWRIb3VyID0gMTI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSG91ciA8IDApIHRoaXMuc2VsZWN0ZWRIb3VyID0gMDtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSG91ciA+IDIzKSB0aGlzLnNlbGVjdGVkSG91ciA9IDIzO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlTWludXRlSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNaW51dGUgPCAwKSB0aGlzLnNlbGVjdGVkTWludXRlID0gMDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbnV0ZSA+IDU5KSB0aGlzLnNlbGVjdGVkTWludXRlID0gNTk7XG4gIH1cblxuICBpczEySG91ckZvcm1hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUgJiYgXG4gICAgICAgICAgICh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdBJykgfHwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdC5pbmNsdWRlcygnYScpKTtcbiAgfVxuXG4gIHJldHJhY3REYXlNb250aChkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcjogYW55KTogYW55IHtcbiAgICByZXR1cm4gYCR7ZGF5fSAke21vbnRofSAke3llYXJ9YDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGVJbnN0YW5jZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlciwgdGhpcy5jdXJyZW50WWVhck51bWJlcik7XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSB0aW1lIGlmIGVuYWJsZWRcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRpbWVWYWx1ZXMoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IHllYXJSYW5nZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkWWVhciAtIDZ9IC0gJHt0aGlzLnNlbGVjdGVkWWVhciArIDV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpbWVWYWx1ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lID09PSB0cnVlKSB7XG4gICAgICBpZiAodGhpcy5kYXRhLmRhdGUpIHtcbiAgICAgICAgLy8gVHJ5IHRvIHBhcnNlIGV4aXN0aW5nIGRhdGUgZm9yIHRpbWUgdmFsdWVzXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICBpZiAoY3VycmVudERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICBsZXQgaG91ciA9IGN1cnJlbnREYXRlLmhvdXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSBjdXJyZW50RGF0ZS5taW51dGUoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAxMjtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9ICdBTSc7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IGhvdXIgLSAxMjtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9ICdQTSc7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9ICdQTSc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG0gPSAnQU0nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyID0gaG91cjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSW52YWxpZCBkYXRlLCB1c2UgZGVmYXVsdHNcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gUGFyc2luZyBlcnJvciwgdXNlIGRlZmF1bHRzXG4gICAgICAgICAgdGhpcy5zZXREZWZhdWx0VGltZVZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyBleGlzdGluZyBkYXRlLCB1c2UgZGVmYXVsdHNcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0VGltZVZhbHVlcygpO1xuICAgICAgfVxuICAgIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0VGltZVZhbHVlcygpOiB2b2lkIHtcbiAgICAvLyBVc2UgY3VycmVudCB0aW1lIGFzIGRlZmF1bHQgaW5zdGVhZCBvZiAxMjowMCBQTVxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgY29uc3QgY3VycmVudEhvdXIgPSBub3cuaG91cigpO1xuICAgIGNvbnN0IGN1cnJlbnRNaW51dGUgPSBub3cubWludXRlKCk7XG4gICAgXG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgLy8gQ29udmVydCBjdXJyZW50IHRpbWUgdG8gMTItaG91ciBmb3JtYXRcbiAgICAgIGxldCBob3VyMTIgPSBjdXJyZW50SG91cjtcbiAgICAgIGxldCBhbVBtID0gJ0FNJztcbiAgICAgIFxuICAgICAgaWYgKGN1cnJlbnRIb3VyID09PSAwKSB7XG4gICAgICAgIGhvdXIxMiA9IDEyO1xuICAgICAgICBhbVBtID0gJ0FNJztcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPT09IDEyKSB7XG4gICAgICAgIGhvdXIxMiA9IDEyO1xuICAgICAgICBhbVBtID0gJ1BNJztcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPiAxMikge1xuICAgICAgICBob3VyMTIgPSBjdXJyZW50SG91ciAtIDEyO1xuICAgICAgICBhbVBtID0gJ1BNJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFtUG0gPSAnQU0nO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IGhvdXIxMjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSBjdXJyZW50TWludXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZEFtUG0gPSBhbVBtO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgY3VycmVudCB0aW1lIGRpcmVjdGx5IGZvciAyNC1ob3VyIGZvcm1hdFxuICAgICAgdGhpcy5zZWxlY3RlZEhvdXIgPSBjdXJyZW50SG91cjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSBjdXJyZW50TWludXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZEFtUG0gPSAnQU0nOyAvLyBOb3QgdXNlZCBpbiAyNC1ob3VyIGZvcm1hdCBidXQga2VlcCBjb25zaXN0ZW50XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZUluc3RhbmNlKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5kYXRhLmRhdGUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gZGF5anModGhpcy5kYXRhLmRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyID0gc2VsZWN0ZWREYXRlLnllYXIoKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlciA9IHNlbGVjdGVkRGF0ZS5tb250aCgpO1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSA9IHtcbiAgICAgICAgICAgICAgZGF0ZTogc2VsZWN0ZWREYXRlLmRhdGUoKSxcbiAgICAgICAgICAgICAgd2Vla0RheTogc2VsZWN0ZWREYXRlLmRheSgpLFxuICAgICAgICAgICAgICBtb250aDogc2VsZWN0ZWREYXRlLm1vbnRoKCksXG4gICAgICAgICAgICAgIHllYXI6IHNlbGVjdGVkRGF0ZS55ZWFyKCksXG4gICAgICAgICAgICAgIGlzU2VsZWN0ZWREYXk6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcigpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkubW9udGgoKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNaW5NYXhEYXlzKCkge1xuICAgICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlcikubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgaWYgKG1pbkRhdGU/LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9IG1pbkRhdGUuaXNTYW1lT3JBZnRlcihjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gICAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAobWF4RGF0ZT8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkID0gbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCkge1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIFxuICAgIHRoaXMuZGlzYWJsZWRNb250aHMgPSB0aGlzLmF2YWlsYWJsZU1vbnRocy5tYXAoKG1vbnRoLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbW9udGhEYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIodGhpcy5zZWxlY3RlZFllYXIpLm1vbnRoKGluZGV4KTtcbiAgICAgIHJldHVybiAobWluRGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQmVmb3JlKG1pbkRhdGUsICdtb250aCcpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpO1xuICAgIH0pO1xuICBcbiAgICB0aGlzLmRpc2FibGVkWWVhcnMgPSB0aGlzLmF2YWlsYWJsZVllYXJzLm1hcCgoeWVhcikgPT4ge1xuICAgICAgY29uc3QgeWVhckRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih5ZWFyKTtcbiAgICAgIHJldHVybiAobWluRGF0ZS5pc1ZhbGlkKCkgJiYgeWVhckRhdGUuaXNCZWZvcmUobWluRGF0ZSwgJ3llYXInKSkgfHwgXG4gICAgICAgICAgICAgKG1heERhdGUuaXNWYWxpZCgpICYmIHllYXJEYXRlLmlzQWZ0ZXIobWF4RGF0ZSwgJ3llYXInKSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZ1llYXIpIHtcbiAgICAgIHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBtaW5EYXRlLmlzVmFsaWQoKSAmJiAoKHRoaXMuc2VsZWN0ZWRZZWFyIC0gNikgPD0gbWluRGF0ZS55ZWFyKCkpO1xuICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkID0gbWF4RGF0ZS5pc1ZhbGlkKCkgJiYgKCh0aGlzLnNlbGVjdGVkWWVhciArIDUpID49IG1heERhdGUueWVhcigpKTtcbiAgICB9XG4gICAgXG4gIH1cblxuICBuYXZpZ2F0ZVZpZXcoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGlmICgoZGlyZWN0aW9uID09PSAnTkVYVCcgJiYgKHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZCB8fCB0aGlzLmlzU2VsZWN0aW5nTW9udGgpKSB8fFxuICAgICAgICAoZGlyZWN0aW9uID09PSAnUFJFVklPVVMnICYmICh0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmKHRoaXMuaXNTZWxlY3RpbmdZZWFyKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyICs9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyAxMiA6IC0xMjtcbiAgICAgIHRoaXMuYXZhaWxhYmxlWWVhcnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogMTIgfSxcbiAgICAgICAgKF8sIGluZGV4KSA9PiB0aGlzLnNlbGVjdGVkWWVhciAtIDYgKyBpbmRleFxuICAgICAgKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGxldCB0aGlzTW9udGggOiBkYXlqcy5EYXlqcyA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyID0gdGhpc01vbnRoLm1vbnRoKCk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5jdXJyZW50WWVhck51bWJlciA9IHRoaXNNb250aC55ZWFyKCk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbGV0IHRoaXNNb250aDogZGF5anMuRGF5anMgPSBkYXlqcygpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlcikubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJORVhUXCIpIHtcbiAgICAgICAgdGhpc01vbnRoID0gdGhpc01vbnRoLmFkZCgxLCBcIm1vbnRoXCIpO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICAgICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyID0gdGhpc01vbnRoLm1vbnRoKCk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIgPSB0aGlzTW9udGgueWVhcigpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlcyA9IHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlciwgdGhpcy5jdXJyZW50WWVhck51bWJlcik7XG4gICAgICBcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbmF2aWdhdGVNb250aCBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEYXRlcyhtb250aDogbnVtYmVyLCBjdXJyZW50WWVhck51bWJlcjogbnVtYmVyKTogSUN1cnJlbnRNb250aERhdGVzW10ge1xuICAgIGNvbnN0IGRhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRheWpzKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgICBcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtaW4gZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtYXggZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgZm9yIChsZXQgY3VycmVudERhdGUgPSAxOyBjdXJyZW50RGF0ZSA8PSBkYXlzSW5Nb250aDsgY3VycmVudERhdGUrKykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpO1xuICAgICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICBcbiAgICAgICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YS5kYXRlc0Rpc2FibGVkPy5zb21lKGQgPT4gZCA9PT0gZGF0ZVN0cmluZykgfHwgZmFsc2U7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGU/LmlzVmFsaWQoKSAmJiB0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSkge1xuICAgICAgICAgICAgaXNEaXNhYmxlZERheSA9IG1pbkRhdGUuaXNBZnRlcihkYXRlLCBcImRheVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1heERhdGU/LmlzVmFsaWQoKSAmJiB0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSkge1xuICAgICAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlSW5zdGFuY2UgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpO1xuICAgICAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGN1cnJlbnREYXRlSW5zdGFuY2UuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpID09PSBkYXlqcygpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICBcbiAgICAgICAgICBsZXQgaXNTZWxlY3RlZERheSA9IGZhbHNlO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIFByaW9yaXRpemUgY3VycmVudCBzZWxlY3Rpb24gb3ZlciBwcmV2aW91c2x5IGFwcGxpZWQgZGF0ZVxuICAgICAgICAgIGlmICh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlICYmIFxuICAgICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlLmRhdGUgPT09IGN1cnJlbnREYXRlICYmXG4gICAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGUubW9udGggPT09IG1vbnRoICYmXG4gICAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGUueWVhciA9PT0gY3VycmVudFllYXJOdW1iZXIpIHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWREYXkgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmRhdGUgJiYgIXRoaXMubG9jYWxTZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgcHJldmlvdXNseSBhcHBsaWVkIGRhdGUgaWYgbm8gY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gc2VsZWN0ZWREYXRlLmlzU2FtZShjdXJyZW50RGF0ZUluc3RhbmNlLCAnZGF5Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZvciBkYXRlLW9ubHkgZm9ybWF0LCBjb21wYXJlIHRoZSBkYXRlIHBhcnRzIG9ubHlcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZERheSA9IHNlbGVjdGVkRGF0ZS5pc1NhbWUoY3VycmVudERhdGVJbnN0YW5jZSwgJ2RheScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzdHJpbmcgY29tcGFyaXNvbiBpZiBwYXJzaW5nIGZhaWxzXG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gZGF0ZVN0cmluZyA9PT0gdGhpcy5kYXRhLmRhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgZGF0ZSBjb21wYXJpc29uIGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgICAgICB3ZWVrRGF5OiBkYXRlLmRheSgpLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXIsXG4gICAgICAgICAgICBpc0N1cnJlbnREYXksXG4gICAgICAgICAgICBpc1NlbGVjdGVkRGF5LFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEubWVzc2FnZXM/LmZpbmQocSA9PiBkYXRlU3RyaW5nID09PSBxLmRhdGUpPy5tZXNzYWdlIHx8IFwiXCIsXG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGRhdGUgcHJvY2Vzc2luZyBlcnJvclxuICAgICAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgICAgICB3ZWVrRGF5OiB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpLmRheSgpLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXIsXG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRhdGVzWzBdLndlZWtEYXk7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICBkYXRlcy51bnNoaWZ0KHsgXG4gICAgICAgICAgICBkYXRlOiAwLCBcbiAgICAgICAgICAgIHdlZWtEYXk6IGkgLSAxLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgZ2VuZXJhdGVEYXRlcyBlcnJvclxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBzZWxlY3REYXkoZGF5OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBpZiAoZGF5LmRhdGUgPD0gMCkgcmV0dXJuO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBDcmVhdGUgdGhlIGJhc2UgZGF0ZSBzZWxlY3Rpb24gd2l0aG91dCB0aW1lXG4gICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcikuZGF0ZShkYXkuZGF0ZSkuaG91cigwKS5taW51dGUoMCkuc2Vjb25kKDApLm1pbGxpc2Vjb25kKDApO1xuICAgICAgXG4gICAgICAvLyBBcHBseSB0aGUgY3VycmVudCB0aW1lIHZhbHVlcyB0byB0aGUgc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgbGV0IGhvdXIgPSB0aGlzLnNlbGVjdGVkSG91cjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG0gPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25cbiAgICAgICAgICAuaG91cihob3VyKVxuICAgICAgICAgIC5taW51dGUodGhpcy5zZWxlY3RlZE1pbnV0ZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLmVuZE9mKFwiZGF5XCIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtYXggZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLnN0YXJ0T2YoXCJkYXlcIik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1pbiBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgPSB0aGlzLmRhdGEuYWxsb3dCb29raW5nT25EaXNhYmxlZERheTtcbiAgICAgIFxuICAgICAgaWYgKCgoIW1pbkRhdGUgfHwgdGhpcy5jdXJyZW50U2VsZWN0aW9uLmlzU2FtZU9yQWZ0ZXIobWluRGF0ZSkpICYmICghbWF4RGF0ZSB8fCB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSkpICYmIHRoaXMuYWxsb3dCb29raW5nT25EaXNhYmxlZERheSkgfHwgKCFkYXkuaXNEaXNhYmxlZERheSAmJiAhdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5KSkge1xuICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlID0ge1xuICAgICAgICAgIC4uLmRheSxcbiAgICAgICAgICBtb250aDogdGhpcy5jdXJyZW50TW9udGhOdW1iZXIsXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgLy8gRm9yY2UgY2FsZW5kYXIgcmUtcmVuZGVyIHRvIHNob3cgaGlnaGxpZ2h0aW5nXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBzaG93IGFwcGx5IGJ1dHRvbiB3aGVuIHRpbWUgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGFwcGx5IGltbWVkaWF0ZWx5XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiAmJiAhdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGF0ZShkYXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkudG9hc3RNZXNzYWdlIHx8ICh0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgJiYgZGF5LnRvYXN0TWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgc2VsZWN0RGF5IGVycm9yXG4gICAgfVxuICB9XG5cbiAgYXBwbHlEYXRlKGRheT86IElDdXJyZW50TW9udGhEYXRlcykge1xuICAgIGxldCBkYXRlOiBzdHJpbmc7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBBbHdheXMgdXNlIHRpbWUgaW5wdXQgdmFsdWVzIHdoZW4gdGltZSBpcyBlbmFibGVkLCByZWdhcmRsZXNzIG9mIGN1cnJlbnRTZWxlY3Rpb25cbiAgICAgICAgbGV0IGhvdXIgPSB0aGlzLnNlbGVjdGVkSG91cjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG0gPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGF0ZSBpbnN0YW5jZSB3aXRoIHRoZSBzZWxlY3RlZCB0aW1lXG4gICAgICAgIGNvbnN0IGZpbmFsU2VsZWN0aW9uID0gZGF5anMoKVxuICAgICAgICAgIC55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKVxuICAgICAgICAgIC5kYXRlKHRoaXMubG9jYWxTZWxlY3RlZERhdGU/LmRhdGUgfHwgZGF5Py5kYXRlIHx8IGRheWpzKCkuZGF0ZSgpKVxuICAgICAgICAgIC5ob3VyKGhvdXIpXG4gICAgICAgICAgLm1pbnV0ZSh0aGlzLnNlbGVjdGVkTWludXRlKVxuICAgICAgICAgIC5zZWNvbmQoMClcbiAgICAgICAgICAubWlsbGlzZWNvbmQoMCk7XG4gICAgICAgIFxuICAgICAgICBkYXRlID0gZmluYWxTZWxlY3Rpb24uZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGF0ZS1vbmx5IGZvcm1hdCAtIG5vIHRpbWVcbiAgICAgICAgZGF0ZSA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKVxuICAgICAgICAgIC5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcilcbiAgICAgICAgICAuZGF0ZShkYXkgPyBkYXkuZGF0ZSA6IHRoaXMubG9jYWxTZWxlY3RlZERhdGU/LmRhdGUgfHwgZGF5anMoKS5kYXRlKCkpXG4gICAgICAgICAgLmhvdXIoMClcbiAgICAgICAgICAubWludXRlKDApXG4gICAgICAgICAgLnNlY29uZCgwKVxuICAgICAgICAgIC5taWxsaXNlY29uZCgwKVxuICAgICAgICAgIC5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkgfHwgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSB8fCAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpKSB7XG4gICAgICAgIHRoaXMuZGF0YS5kYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYW5jZWxEYXRlUGlja2VyKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBhcHBseURhdGUgZXJyb3JcbiAgICAgIHRoaXMuZGF0YS5kYXRlQ2hhbmdlKFwiXCIpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVzY1wiKVxuICBjbG9zZU9uRXNjKCkge1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEuZGF0ZUNoYW5nZShcIlwiKTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRoU2VsZWN0b3IoKSB7XG4gICAgaWYodGhpcy5pc1llYXJTZWxlY3Rpb25GbG93KSByZXR1cm47XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gIXRoaXMuaXNTZWxlY3RpbmdNb250aDtcbiAgICB0aGlzLmlzU2VsZWN0aW5nWWVhciA9IGZhbHNlO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICB9XG5cbiAgdG9nZ2xlWWVhclNlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNTZWxlY3RpbmdZZWFyID0gIXRoaXMuaXNTZWxlY3RpbmdZZWFyO1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5jdXJyZW50WWVhck51bWJlcjtcbiAgICB0aGlzLmF2YWlsYWJsZVllYXJzID0gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiAxMiB9LFxuICAgICAgKF8sIGluZGV4KSA9PiB0aGlzLnNlbGVjdGVkWWVhciAtIDYgKyBpbmRleFxuICAgICk7XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gZmFsc2U7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG5cbiAgfVxuXG4gIHJlc2V0RGF0ZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlID0ge1xuICAgICAgZGF0ZTogMCxcbiAgICAgIHdlZWtEYXk6IDAsXG4gICAgICBpc0N1cnJlbnREYXk6IGZhbHNlLFxuICAgICAgaXNTZWxlY3RlZERheTogZmFsc2UsXG4gICAgICBpc0Rpc2FibGVkRGF5OiBmYWxzZSxcbiAgICAgIHRvYXN0TWVzc2FnZTogJydcbiAgICB9O1xuICAgIHRoaXMuZGF0YS5kYXRlID0gJyc7XG4gIH1cblxuICBzZWxlY3RNb250aChtb250aDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzLmF2YWlsYWJsZU1vbnRocy5pbmRleE9mKG1vbnRoKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGggPSBmYWxzZTtcbiAgICB0aGlzLmlzWWVhclNlbGVjdGlvbkZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0RGF0ZVNlbGVjdGlvbigpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuY3VycmVudFllYXJOdW1iZXIgPSB5ZWFyO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdZZWFyID0gZmFsc2U7XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gdHJ1ZTtcbiAgICB0aGlzLmlzWWVhclNlbGVjdGlvbkZsb3cgPSB0cnVlO1xuICAgIHRoaXMucmVzZXREYXRlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRhdGEuZGlzYWJsZUJveFNoYWRvdz8ncmVtb3ZlLWJveC1zaGFkb3cnOicnXCIgYXJpYS1sYWJlbD1cImRhdGUgcGlja2VyXCIgY2RrVHJhcEZvY3VzIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCI+XG4gIDxkaXYgdGFiaW5kZXg9XCItMVwiIGNka0ZvY3VzSW5pdGlhbD48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVWaWV3KCdQUkVWSU9VUycpXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm5hdmlnYXRlVmlldygnUFJFVklPVVMnKVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkIHx8IGlzU2VsZWN0aW5nTW9udGhcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nWWVhclwiIChjbGljayk9XCJ0b2dnbGVNb250aFNlbGVjdG9yKClcIiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAge3sgaXNZZWFyU2VsZWN0aW9uRmxvdyA/IHNlbGVjdGVkWWVhciA6IGF2YWlsYWJsZU1vbnRoc1tjdXJyZW50TW9udGhOdW1iZXJdIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc1NlbGVjdGluZ01vbnRoXCIgKGNsaWNrKT1cInRvZ2dsZVllYXJTZWxlY3RvcigpXCIgY2xhc3M9XCJ5ZWFyLWhlYWRlclwiPlxuICAgICAge3sgaXNTZWxlY3RpbmdZZWFyID8geWVhclJhbmdlIDogY3VycmVudFllYXJOdW1iZXIgfX1cbiAgICA8L2Rpdj5cblxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVmlldygnTkVYVCcpXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwibmF2aWdhdGVWaWV3KCdORVhUJylcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkIHx8IGlzU2VsZWN0aW5nTW9udGhcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdGluZ01vbnRoICYmICFpc1NlbGVjdGluZ1llYXJcIiBjbGFzcz1cIm1vbnRoLXNlbGVjdG9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1vbnRoIG9mIGF2YWlsYWJsZU1vbnRoczsgbGV0IGkgPSBpbmRleFwiIFxuICAgICAgICAgICAgY2xhc3M9XCJtb250aFwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZE1vbnRoc1tpXSAmJiBzZWxlY3RNb250aChtb250aClcIiBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2Rpc2FibGUtbW9udGgnOiBkaXNhYmxlZE1vbnRoc1tpXSxcbiAgICAgICAgICAgICAgJ3NlbGVjdC1tb250aCc6ICFkaXNhYmxlZE1vbnRoc1tjdXJyZW50TW9udGhOdW1iZXJdICYmIG1vbnRoID09PSBhdmFpbGFibGVNb250aHNbY3VycmVudE1vbnRoTnVtYmVyXVxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIHt7IG1vbnRoIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdGluZ1llYXIgJiYgIWlzU2VsZWN0aW5nTW9udGhcIiBjbGFzcz1cInllYXItc2VsZWN0b3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiBhdmFpbGFibGVZZWFyczsgbGV0IGkgPSBpbmRleFwiIFxuICAgICAgICAgICAgY2xhc3M9XCJ5ZWFyXCIgXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkWWVhcnNbaV0gJiYgc2VsZWN0WWVhcih5ZWFyKVwiIFxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZS15ZWFyJzogZGlzYWJsZWRZZWFyc1tpXSxcbiAgICAgICAgICAgICAgJ3NlbGVjdC15ZWFyJzogeWVhciA9PT0gY3VycmVudFllYXJOdW1iZXJcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nTW9udGggJiYgIWlzU2VsZWN0aW5nWWVhclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5c1wiPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdjdXJyZW50LWRheSc6IHdlZWtEYXkuaXNDdXJyZW50RGF5IH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc1NlbGVjdGluZ01vbnRoICYmICFpc1NlbGVjdGluZ1llYXJcIiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXksXG4gICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmICFkYXkuaXNTZWxlY3RlZERheVxuICAgICAgICB9XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBjdXJyZW50TW9udGhEYXRlc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJkYXkuaXNEaXNhYmxlZERheSA/IC0xIDogMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmV0cmFjdERheU1vbnRoKGRheS5kYXRlLCBjdXJyZW50TW9udGgsIGN1cnJlbnRZZWFyTnVtYmVyKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUaW1lIFBpY2tlciBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3RpbWVcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPlRpbWU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRyb2xzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiaG91cklucHV0XCI+SG91cjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBcbiAgICAgICAgICBpZD1cImhvdXJJbnB1dFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIFttaW5dPVwiaXMxMkhvdXJGb3JtYXQoKSA/IDEgOiAwXCJcbiAgICAgICAgICBbbWF4XT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxMiA6IDIzXCJcbiAgICAgICAgICBbc3RlcF09XCIxXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSG91clwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSG91cklucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlSG91cklucHV0KClcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgW3RpdGxlXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAnRW50ZXIgaG91ciAoMS0xMiknIDogJ0VudGVyIGhvdXIgKDAtMjMpJ1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj46PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWludXRlSW5wdXRcIj5NaW51dGU8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgaWQ9XCJtaW51dGVJbnB1dFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIG1pbj1cIjBcIiBcbiAgICAgICAgICBtYXg9XCI1OVwiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uTWludXRlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVNaW51dGVJbnB1dCgpXCJcbiAgICAgICAgICBjbGFzcz1cInRpbWUtaW5wdXRcIlxuICAgICAgICAgIHRpdGxlPVwiRW50ZXIgbWludXRlICgwLTU5KVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYW0tcG0tc2VsZWN0b3JcIiAqbmdJZj1cImlzMTJIb3VyRm9ybWF0KClcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cImFtUG1TZWxlY3RcIj5BTS9QTTwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3QgXG4gICAgICAgICAgaWQ9XCJhbVBtU2VsZWN0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQW1QbVwiXG4gICAgICAgICAgY2xhc3M9XCJhbS1wbS1zZWxlY3RcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQU1cIj5BTTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQTVwiPlBNPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fZm9vdGVyXCIgKm5nSWY9XCJkYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiB8fCBkYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWVcIj5cbiAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIidub25lJ1wiIChjbGljayk9XCJjYW5jZWxEYXRlUGlja2VyKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHlEYXRlKClcIiBbZGlzYWJsZWRdPVwiIShkYXRhLmRhdGUgfHwgbG9jYWxTZWxlY3RlZERhdGUuZGF0ZSlcIj5BcHBseTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
851
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXJfdjIvdHotZHAtY29udGFpbmVyL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyX3YyL3R6LWRwLWNvbnRhaW5lci90ei1kcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUE7Ozs7Ozs7Ozs7Ozs7OztJQ1cxRCwrQkFBbUY7SUFBckQsK0tBQVMsNEJBQXFCLEtBQUM7SUFDM0QsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUscUlBQ0Y7Ozs7SUFDQSwrQkFBa0Y7SUFBbkQsK0tBQVMsMkJBQW9CLEtBQUM7SUFDM0QsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUscUdBQ0Y7Ozs7SUF5QkksK0JBTU87SUFKSCxvU0FBK0IsNEJBQWtCLEtBQUM7SUFLcEQsWUFDRjtJQUFBLGlCQUFNOzs7OztJQUxGLHNNQUdFO0lBQ0osY0FDRjtJQURFLHlDQUNGOzs7SUFURixBQURGLCtCQUF5RSxjQUN0RDtJQUNmLCtFQU1PO0lBSVgsQUFERSxpQkFBTSxFQUNGOzs7SUFWcUIsZUFBb0I7SUFBcEIsZ0RBQW9COzs7O0lBYzNDLCtCQU1PO0lBSkgscVNBQThCLDJCQUFnQixLQUFDO0lBS2pELFlBQ0Y7SUFBQSxpQkFBTTs7Ozs7SUFMRix3SEFHRTtJQUNKLGNBQ0Y7SUFERSx5Q0FDRjs7O0lBVEYsQUFERiwrQkFBd0UsY0FDckQ7SUFDZiwrRUFNTztJQUlYLEFBREUsaUJBQU0sRUFDRjs7O0lBVm9CLGVBQW1CO0lBQW5CLCtDQUFtQjs7O0lBY3pDLEFBREYsK0JBQTRFLGVBQ2hCO0lBQUEsWUFBbUI7SUFDL0UsQUFEK0UsaUJBQU8sRUFDaEY7OztJQURFLGNBQW1EO0lBQW5ELDhFQUFtRDtJQUFDLGNBQW1CO0lBQW5CLHVDQUFtQjs7O0lBRmpGLCtCQUEwRjtJQUN4RiwrRUFBNEU7SUFHOUUsaUJBQU07OztJQUgyRCxjQUFXO0lBQVgseUNBQVc7OztJQWdCeEUsZ0NBU0M7SUFDQyxZQUNGO0lBQUEsaUJBQU87Ozs7SUFSTCxBQURBLHlEQUF1QywyR0FLckM7O0lBR0YsY0FDRjtJQURFLDZDQUNGOzs7O0lBdEJGLCtCQVVDO0lBREMsQUFEQSxrTkFBUyx5QkFBYyxLQUFDLGlOQUNULHlCQUFjLEtBQUM7SUFFOUIsdUZBU0M7SUFHSCxpQkFBTTs7O0lBckJKLDhJQUlFO0lBTUMsY0FBa0I7SUFBbEIsdUNBQWtCOzs7SUFiekIsK0JBQXNGO0lBQ3BGLCtFQVVDO0lBY0gsaUJBQU07OztJQWpCYyxjQUFvQjtJQUFwQixrREFBb0I7Ozs7SUF3RHBDLEFBREYsK0JBQXFELGdCQUMzQjtJQUFBLHFCQUFLO0lBQUEsaUJBQVE7SUFDckMsa0NBR3VCO0lBRHJCLHlUQUEwQjtJQUUxQixrQ0FBbUI7SUFBQSxrQkFBRTtJQUFBLGlCQUFTO0lBQzlCLGtDQUFtQjtJQUFBLGtCQUFFO0lBRXpCLEFBREUsQUFEdUIsaUJBQVMsRUFDdkIsRUFDTDs7O0lBTEYsZUFBMEI7SUFBMUIsbURBQTBCOzs7O0lBcEM5QixBQURGLEFBREYsK0JBQWtGLGNBQ2hELFdBQ3hCO0lBQUEsb0JBQUk7SUFDWixBQURZLGlCQUFPLEVBQ2I7SUFHRixBQURGLEFBREYsK0JBQWtDLGNBQ0YsZ0JBQ0w7SUFBQSxvQkFBSTtJQUFBLGlCQUFRO0lBQ25DLGlDQVV5RTtJQUp2RSxnVEFBMEI7SUFFMUIsQUFEQSx5TEFBUywwQkFBbUIsS0FBQyxvS0FDckIsMEJBQW1CLEtBQUM7SUFHaEMsQUFYRSxpQkFVeUUsRUFDckU7SUFDTiwrQkFBNEI7SUFBQSxrQkFBQztJQUFBLGlCQUFNO0lBRWpDLEFBREYsZ0NBQThCLGlCQUNIO0lBQUEsdUJBQU07SUFBQSxpQkFBUTtJQUN2QyxrQ0FVOEI7SUFKNUIscVRBQTRCO0lBRTVCLEFBREEsMExBQVMsNEJBQXFCLEtBQUMscUtBQ3ZCLDRCQUFxQixLQUFDO0lBR2xDLEFBWEUsaUJBVThCLEVBQzFCO0lBQ04saUZBQXFEO0lBV3pELEFBREUsaUJBQU0sRUFDRjs7O0lBbkNFLGVBQWdDO0lBRWhDLEFBREEsQUFEQSxxREFBZ0MsMENBQ0UsV0FDeEI7SUFDVixtREFBMEI7SUFJMUIsMkZBQXNFO0lBVXRFLGVBQVU7SUFBVix3QkFBVTtJQUNWLHFEQUE0QjtJQU1ILGNBQXNCO0lBQXRCLDhDQUFzQjs7OztJQWNyRCxBQURGLCtCQUE0RyxpQkFDbEM7SUFBN0Isb0xBQVMseUJBQWtCLEtBQUM7SUFBQyxzQkFBTTtJQUFBLGlCQUFTO0lBQ3ZGLGtDQUFzSDtJQUExRSxvTEFBUyxrQkFBVyxLQUFDO0lBQXFELHFCQUFLO0lBQzdILEFBRDZILGlCQUFTLEVBQ2hJOzs7SUFEOEQsZUFBbUQ7SUFBbkQsK0VBQW1EOztBRHBKekgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVCLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFPN0IsTUFBTSxPQUFPLHNCQUFzQjtJQStCakMsWUFBb0MsSUFBcUIsRUFBVSxLQUFtQjtRQUFuQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBN0I5RSxzQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEYsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUkxQixzQkFBaUIsR0FBeUIsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUN6Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBRzNDLDBDQUEwQztRQUMxQyxpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUU1QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBYyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBYyxFQUFFLENBQUM7UUFFOUIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBR25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQztnQkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUNsQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsaUVBQWlFO2dCQUNqRSxPQUFPLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRCxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMvQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSztTQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ3JCLE1BQU0sRUFBRSxXQUFXO2FBQ3BCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUM5QixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFDZCxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUNqRCxDQUFDO0lBRUosQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBRW5ELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBRW5ELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxJQUFJO1lBQUUsT0FBTztRQUVuRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDO2dCQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFO2dCQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7Z0JBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSTtZQUFFLE9BQU87UUFFbkQsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRTtZQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSTtZQUN0QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxJQUFTO1FBQzdDLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFcEUsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDO29CQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEYsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFFM0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQzs0QkFDMUIsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQ2YsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQ0FDVixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzs0QkFDM0IsQ0FBQztpQ0FBTSxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztnQ0FDckIsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0NBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOzRCQUMzQixDQUFDO2lDQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dDQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzs0QkFDM0IsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOzRCQUMzQixDQUFDO3dCQUNILENBQUM7d0JBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQzNCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTiw2QkFBNkI7d0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO29CQUM5QixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZiw4QkFBOEI7b0JBQzlCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQztRQUNGLENBQUM7YUFBTSxDQUFDO1lBQ0wsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFFTCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLGtEQUFrRDtRQUNsRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUIseUNBQXlDO1lBQ3pDLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUN6QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFFaEIsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxHQUFHLElBQUksQ0FBQztZQUNkLENBQUM7aUJBQU0sSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxHQUFHLElBQUksQ0FBQztZQUNkLENBQUM7aUJBQU0sSUFBSSxXQUFXLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksR0FBRyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTiwrQ0FBK0M7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxpREFBaUQ7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RFLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRXRELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHOzRCQUN2QixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRTs0QkFDekIsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUU7NEJBQzNCLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFOzRCQUMzQixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRTs0QkFDekIsYUFBYSxFQUFFLElBQUk7eUJBQ3BCLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFHTyxtQkFBbUI7UUFDdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU3RyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUYsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlGLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5RSxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCwrQkFBK0I7UUFDN0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hKLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVoSixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hGLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNELENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pELENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUYsQ0FBQztJQUVILENBQUM7SUFFRCxZQUFZLENBQUMsU0FBOEI7UUFDekMsSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0UsQ0FBQyxTQUFTLEtBQUssVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzlCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUNkLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUM1QyxDQUFDO1FBQ0osQ0FBQzthQUNHLENBQUM7WUFDSCxJQUFJLFNBQVMsR0FBaUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuSCxTQUFTLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUE4QjtRQUMxQyxJQUFJLENBQUM7WUFDSCxJQUFJLFNBQVMsR0FBZ0IsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNqRyxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3BDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU3RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLHNDQUFzQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhLEVBQUUsaUJBQXlCO1FBQzVELE1BQU0sS0FBSyxHQUF5QixFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRS9FLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDO29CQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxRixDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YseUNBQXlDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQztvQkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLHlDQUF5QztnQkFDM0MsQ0FBQztZQUNILENBQUM7WUFFRCxLQUFLLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxXQUFXLElBQUksV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQztvQkFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM3RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUUxRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO29CQUVsRixJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDdkUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUMvQyxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN2RSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2hELENBQUM7b0JBRUQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM1RyxnREFBZ0Q7b0JBQ2hELE1BQU0sWUFBWSxHQUFHLENBQUMsYUFBYSxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRTNJLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFFMUIsb0RBQW9EO29CQUNwRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ25CLDREQUE0RDt3QkFDNUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCOzRCQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLFdBQVc7NEJBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssS0FBSzs0QkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRSxDQUFDOzRCQUN0RCxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUN2QixDQUFDOzZCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzs0QkFDckQsNkRBQTZEOzRCQUM3RCxJQUFJLENBQUM7Z0NBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQ0FDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29DQUN2RixJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO3dDQUMzQixhQUFhLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztvQ0FDbEUsQ0FBQztnQ0FDSCxDQUFDO3FDQUFNLENBQUM7b0NBQ04sb0RBQW9EO29DQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0NBQ3ZGLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7d0NBQzNCLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO29DQUNsRSxDQUFDO3lDQUFNLENBQUM7d0NBQ04saURBQWlEO3dDQUNqRCxhQUFhLEdBQUcsVUFBVSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29DQUNoRCxDQUFDO2dDQUNILENBQUM7NEJBQ0gsQ0FBQzs0QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dDQUNmLHdDQUF3Qzs0QkFDMUMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7b0JBRUQsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLEVBQUUsV0FBVzt3QkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ25CLEtBQUssRUFBRSxLQUFLO3dCQUNaLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksRUFBRTt3QkFDakYsYUFBYTtxQkFDZCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLHdDQUF3QztvQkFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLEVBQUUsV0FBVzt3QkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFO3dCQUM5RixLQUFLLEVBQUUsS0FBSzt3QkFDWixJQUFJLEVBQUUsaUJBQWlCO3dCQUN2QixhQUFhLEVBQUUsSUFBSTtxQkFDcEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDO3dCQUNaLElBQUksRUFBRSxDQUFDO3dCQUNQLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQzt3QkFDZCxLQUFLLEVBQUUsS0FBSzt3QkFDWixJQUFJLEVBQUUsaUJBQWlCO3FCQUN4QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLHNDQUFzQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXVCO1FBQy9CLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQUUsT0FBTztRQUUxQixJQUFJLENBQUM7WUFDSCw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkssaURBQWlEO1lBQ2pELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUU3QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO29CQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDOUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDYixDQUFDO3lCQUFNLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO3dCQUNyRCxJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNYLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtxQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDVixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRW5CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQztvQkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZHLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZix5Q0FBeUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDO29CQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekcsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLHlDQUF5QztnQkFDM0MsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUVyRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDO2dCQUM3TixJQUFJLENBQUMsaUJBQWlCLEdBQUc7b0JBQ3ZCLEdBQUcsR0FBRztvQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtvQkFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7aUJBQzdCLENBQUM7Z0JBRUYsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRTdGLG9GQUFvRjtnQkFDcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixrQ0FBa0M7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBd0I7UUFDaEMsSUFBSSxJQUFZLENBQUM7UUFFakIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNDLG9GQUFvRjtnQkFDcEYsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFFN0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7d0JBQzlDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2IsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDckQsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsb0RBQW9EO2dCQUNwRCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUU7cUJBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7cUJBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7cUJBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7cUJBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUM7cUJBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7cUJBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ1QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVsQixJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sNkJBQTZCO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxFQUFFO3FCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7cUJBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7cUJBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7cUJBQ3JFLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ1AsTUFBTSxDQUFDLENBQUMsQ0FBQztxQkFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUNULFdBQVcsQ0FBQyxDQUFDLENBQUM7cUJBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUdELFVBQVU7UUFDUixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFHLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxPQUFPO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDOUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQ2QsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO0lBRXpDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxFQUFFLENBQUM7WUFDVixZQUFZLEVBQUUsS0FBSztZQUNuQixhQUFhLEVBQUUsS0FBSztZQUNwQixhQUFhLEVBQUUsS0FBSztZQUNwQixZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO3VIQXBuQlUsc0JBQXNCLHVCQStCYixjQUFjO29FQS9CdkIsc0JBQXNCO1lBQXRCLHVHQUFBLGdCQUFZLElBQVU7O1lDdkJuQyw4QkFBa0s7WUFDaEsseUJBQXlDO1lBRXZDLEFBREYsOEJBQTBDLGFBVXZDO1lBSkMsQUFIQSxnR0FBUyxpQkFBYSxVQUFVLENBQUMsSUFBQywrRkFHbkIsaUJBQWEsVUFBVSxDQUFDLElBQUM7O1lBS3hDLDhCQUErRjtZQUM3RiwwQkFHUTtZQUVaLEFBREUsaUJBQU0sRUFDRjtZQUtOLEFBSEEsdUVBQW1GLDBEQUdEOztZQUtsRiw4QkFTQztZQUpDLEFBSEEsZ0dBQVMsaUJBQWEsTUFBTSxDQUFDLElBQUMsK0ZBR2YsaUJBQWEsTUFBTSxDQUFDLElBQUM7O1lBS3BDLDhCQUErRjtZQUM3RiwyQkFHUTtZQUdkLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7O1lBQ04sK0JBQXdDO1lBbUN0QyxBQUxBLEFBZEEsQUFkQSwwRUFBeUUsNkRBY0QsNkRBY2tCLDZEQUtKO1lBMEJ4RixpQkFBTTtZQWtETixBQS9DQSwyRUFBa0YsNkRBK0MwQjtZQUk5RyxpQkFBTTs7WUFsSzJILEFBQS9GLDhFQUF3RCxpQ0FBdUU7WUFTM0osZUFFRTtZQUZGLDBHQUVFO1lBVUUsZUFBc0I7WUFBdEIsMkNBQXNCO1lBR3RCLGNBQXVCO1lBQXZCLDRDQUF1QjtZQVczQixjQUVFO1lBRkYsc0dBRUU7WUFZRSxlQUEwQztZQUExQyxtRUFBMEM7WUFjMUMsY0FBMEM7WUFBMUMsbUVBQTBDO1lBYzFDLGNBQTJDO1lBQTNDLG9FQUEyQztZQUszQyxjQUEyQztZQUEzQyxvRUFBMkM7WUE2QlYsY0FBdUM7WUFBdkMsNERBQXVDO1lBK0NyQyxjQUErRDtZQUEvRCx3RkFBK0Q7OztpRkR2SS9GLHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLFdBQVc7O3NCQW1DUixNQUFNO3VCQUFDLGNBQWM7Z0RBNmhCbEMsVUFBVTtrQkFEVCxZQUFZO21CQUFDLGFBQWE7O2tGQTNqQmhCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXBpY2tlci1jb25zdGFudHNcIjtcbmltcG9ydCB7IElDdXJyZW50TW9udGgsIElDdXJyZW50TW9udGhEYXRlcywgSURhdGVQaWNrZXJEYXRhLCBJV2Vla0RheSB9IGZyb20gXCIuLi9tb2RlbHMvZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LWRwXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1kcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRhdGE6IElEYXRlUGlja2VyRGF0YTtcbiAgcHJpdmF0ZSBwYXJzZVpvbmVJbnN0YW5jZSA9ICguLi5hcmdzKSA9PiB7XG4gICAgcmV0dXJuIGRheWpzKC4uLmFyZ3MpO1xuICB9O1xuICBwcml2YXRlIHJhd1dlZWtEYXlzOiBzdHJpbmdbXSA9IFtcIlNVTlwiLCBcIk1PTlwiLCBcIlRVRVwiLCBcIldFRFwiLCBcIlRIVVwiLCBcIkZSSVwiLCBcIlNBVFwiXTtcbiAgd2Vla0RheXM6IElXZWVrRGF5W10gPSBbXTtcbiAgY3VycmVudE1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIGN1cnJlbnRNb250aDogSUN1cnJlbnRNb250aDtcbiAgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcjtcbiAgY3VycmVudE1vbnRoRGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gIGlzUHJldmlvdXNNb250aERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9jYWxTZWxlY3RlZERhdGU6IElDdXJyZW50TW9udGhEYXRlcztcbiAgYWxsb3dCb29raW5nT25EaXNhYmxlZERheTogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50U2VsZWN0aW9uOiBhbnk7XG4gIFxuICAvLyBUaW1lIGZ1bmN0aW9uYWxpdHkgLSBvbmx5IHdoYXQncyBuZWVkZWRcbiAgc2VsZWN0ZWRIb3VyOiBudW1iZXIgPSAwO1xuICBzZWxlY3RlZE1pbnV0ZTogbnVtYmVyID0gMDtcbiAgc2VsZWN0ZWRBbVBtOiBzdHJpbmcgPSAnQU0nO1xuXG4gIGlzU2VsZWN0aW5nTW9udGg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTZWxlY3RpbmdZZWFyOiBib29sZWFuID0gZmFsc2U7XG4gIGF2YWlsYWJsZVllYXJzOiBudW1iZXJbXSA9IFtdO1xuICBhdmFpbGFibGVNb250aHM6IHN0cmluZ1tdID0gW107XG4gIGRpc2FibGVkTW9udGhzOiBib29sZWFuW10gPSBbXTtcbiAgZGlzYWJsZWRZZWFyczogYm9vbGVhbltdID0gW107XG4gIHNlbGVjdGVkWWVhcjogbnVtYmVyO1xuICBpc1llYXJTZWxlY3Rpb25GbG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05UQUlORVJfREFUQSkgZGF0YTogSURhdGVQaWNrZXJEYXRhLCBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIFxuICAgIC8vIEluaXRpYWxpemUgcGFyc2Vab25lSW5zdGFuY2Ugd2l0aCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmdcbiAgICB0aGlzLnBhcnNlWm9uZUluc3RhbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGE/LmRwQ29uZmlnPy50aW1lem9uZSkge1xuICAgICAgICAgIHJldHVybiBkYXlqcy50eihhcmdzWzBdLCBhcmdzWzFdICB8fCAnREQvTU0vWVlZWScsIHRoaXMuZGF0YS5kcENvbmZpZy50aW1lem9uZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGRheWpzKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgdGltZXpvbmUgcGFyc2luZyBlcnJvciwgZmFsbGJhY2sgdG8gbG9jYWwgdGltZVxuICAgICAgICByZXR1cm4gZGF5anMoLi4uYXJncyk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgc2FmZWx5XG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkubW9udGgoKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoKTtcbiAgICB0aGlzLndlZWtEYXlzID0gdGhpcy5yYXdXZWVrRGF5cy5tYXAoKGRheSwgaW5kZXgpID0+ICh7XG4gICAgICBsYWJlbDogYCR7ZGF5WzBdfSR7ZGF5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGlzQ3VycmVudERheTogdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKTtcbiAgICBcbiAgICBpZiAoIXRoaXMuZGF0YT8uZHBDb25maWc/LmZvcm1hdCkge1xuICAgICAgdGhpcy5kYXRhLmRwQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRhdGEuZHBDb25maWcsXG4gICAgICAgIGZvcm1hdDogREFURV9GT1JNQVRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYoIXRoaXMuZGF0YT8uZGF0ZSl7XG4gICAgICB0aGlzLmRhdGEuZGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdmFpbGFibGVNb250aHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gZGF5anMoKS5tb250aChpKS5mb3JtYXQoJ01NTU0nKSk7XG4gICAgdGhpcy5hdmFpbGFibGVZZWFycyA9IEFycmF5LmZyb20oXG4gICAgICB7IGxlbmd0aDogMTIgfSxcbiAgICAgIChfLCBpbmRleCkgPT4gdGhpcy5jdXJyZW50WWVhck51bWJlciAtIDYgKyBpbmRleFxuICAgICk7XG4gICAgXG4gIH1cblxuICBvbkhvdXJJbnB1dChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIGlmICghaXNOYU4odmFsdWUpKSB7XG4gICAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAgIGlmICh2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDEyKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdXIgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMjMpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NaW51dGVJbnB1dChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIGlmICghaXNOYU4odmFsdWUpICYmIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUhvdXJJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgIT09IHRydWUpIHJldHVybjtcbiAgICBcbiAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXIgPCAxKSB0aGlzLnNlbGVjdGVkSG91ciA9IDE7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXIgPiAxMikgdGhpcy5zZWxlY3RlZEhvdXIgPSAxMjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyIDwgMCkgdGhpcy5zZWxlY3RlZEhvdXIgPSAwO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyID4gMjMpIHRoaXMuc2VsZWN0ZWRIb3VyID0gMjM7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVNaW51dGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgIT09IHRydWUpIHJldHVybjtcbiAgICBcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbnV0ZSA8IDApIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTWludXRlID4gNTkpIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSA1OTtcbiAgfVxuXG4gIGlzMTJIb3VyRm9ybWF0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSAmJiBcbiAgICAgICAgICAgKHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQuaW5jbHVkZXMoJ0EnKSB8fCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdhJykpO1xuICB9XG5cbiAgcmV0cmFjdERheU1vbnRoKGRheTogYW55LCBtb250aDogYW55LCB5ZWFyOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBgJHtkYXl9ICR7bW9udGh9ICR7eWVhcn1gO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0ZUluc3RhbmNlKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gICAgdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHRpbWUgaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplVGltZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuICBnZXQgeWVhclJhbmdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0ZWRZZWFyIC0gNn0gLSAke3RoaXMuc2VsZWN0ZWRZZWFyICsgNX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGltZVZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEuZGF0ZSkge1xuICAgICAgICAvLyBUcnkgdG8gcGFyc2UgZXhpc3RpbmcgZGF0ZSBmb3IgdGltZSB2YWx1ZXNcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIGxldCBob3VyID0gY3VycmVudERhdGUuaG91cigpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IGN1cnJlbnREYXRlLm1pbnV0ZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAgICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDEyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtID0gJ0FNJztcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gaG91ciAtIDEyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtID0gJ1BNJztcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtID0gJ1BNJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9ICdBTSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdXIgPSBob3VyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJbnZhbGlkIGRhdGUsIHVzZSBkZWZhdWx0c1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VGltZVZhbHVlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBQYXJzaW5nIGVycm9yLCB1c2UgZGVmYXVsdHNcbiAgICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIGV4aXN0aW5nIGRhdGUsIHVzZSBkZWZhdWx0c1xuICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lVmFsdWVzKCk7XG4gICAgICB9XG4gICAgXG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRUaW1lVmFsdWVzKCk6IHZvaWQge1xuICAgIC8vIFVzZSBjdXJyZW50IHRpbWUgYXMgZGVmYXVsdCBpbnN0ZWFkIG9mIDEyOjAwIFBNXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICBjb25zdCBjdXJyZW50SG91ciA9IG5vdy5ob3VyKCk7XG4gICAgY29uc3QgY3VycmVudE1pbnV0ZSA9IG5vdy5taW51dGUoKTtcbiAgICBcbiAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAvLyBDb252ZXJ0IGN1cnJlbnQgdGltZSB0byAxMi1ob3VyIGZvcm1hdFxuICAgICAgbGV0IGhvdXIxMiA9IGN1cnJlbnRIb3VyO1xuICAgICAgbGV0IGFtUG0gPSAnQU0nO1xuICAgICAgXG4gICAgICBpZiAoY3VycmVudEhvdXIgPT09IDApIHtcbiAgICAgICAgaG91cjEyID0gMTI7XG4gICAgICAgIGFtUG0gPSAnQU0nO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgaG91cjEyID0gMTI7XG4gICAgICAgIGFtUG0gPSAnUE0nO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA+IDEyKSB7XG4gICAgICAgIGhvdXIxMiA9IGN1cnJlbnRIb3VyIC0gMTI7XG4gICAgICAgIGFtUG0gPSAnUE0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW1QbSA9ICdBTSc7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyID0gaG91cjEyO1xuICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IGN1cnJlbnRNaW51dGU7XG4gICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9IGFtUG07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBjdXJyZW50IHRpbWUgZGlyZWN0bHkgZm9yIDI0LWhvdXIgZm9ybWF0XG4gICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IGN1cnJlbnRIb3VyO1xuICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IGN1cnJlbnRNaW51dGU7XG4gICAgICB0aGlzLnNlbGVjdGVkQW1QbSA9ICdBTSc7IC8vIE5vdCB1c2VkIGluIDI0LWhvdXIgZm9ybWF0IGJ1dCBrZWVwIGNvbnNpc3RlbnRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnREYXRlSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRhdGEuZGF0ZSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBkYXlqcyh0aGlzLmRhdGEuZGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuY3VycmVudFllYXJOdW1iZXIgPSBzZWxlY3RlZERhdGUueWVhcigpO1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyID0gc2VsZWN0ZWREYXRlLm1vbnRoKCk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKCF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlID0ge1xuICAgICAgICAgICAgICBkYXRlOiBzZWxlY3RlZERhdGUuZGF0ZSgpLFxuICAgICAgICAgICAgICB3ZWVrRGF5OiBzZWxlY3RlZERhdGUuZGF5KCksXG4gICAgICAgICAgICAgIG1vbnRoOiBzZWxlY3RlZERhdGUubW9udGgoKSxcbiAgICAgICAgICAgICAgeWVhcjogc2VsZWN0ZWREYXRlLnllYXIoKSxcbiAgICAgICAgICAgICAgaXNTZWxlY3RlZERheTogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKCk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5tb250aCgpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICB9XG5cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1pbk1heERheXMoKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5zdGFuY2UgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSkge1xuICAgICAgICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICBpZiAobWluRGF0ZT8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkID0gbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSkge1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgIGlmIChtYXhEYXRlPy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWQgPSBtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKSB7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgY29uc3QgbWF4RGF0ZSA9ICEhdGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgXG4gICAgdGhpcy5kaXNhYmxlZE1vbnRocyA9IHRoaXMuYXZhaWxhYmxlTW9udGhzLm1hcCgobW9udGgsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtb250aERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLnNlbGVjdGVkWWVhcikubW9udGgoaW5kZXgpO1xuICAgICAgcmV0dXJuIChtaW5EYXRlLmlzVmFsaWQoKSAmJiBtb250aERhdGUuaXNCZWZvcmUobWluRGF0ZSwgJ21vbnRoJykpIHx8IFxuICAgICAgICAgICAgIChtYXhEYXRlLmlzVmFsaWQoKSAmJiBtb250aERhdGUuaXNBZnRlcihtYXhEYXRlLCAnbW9udGgnKSk7XG4gICAgfSk7XG4gIFxuICAgIHRoaXMuZGlzYWJsZWRZZWFycyA9IHRoaXMuYXZhaWxhYmxlWWVhcnMubWFwKCh5ZWFyKSA9PiB7XG4gICAgICBjb25zdCB5ZWFyRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHllYXIpO1xuICAgICAgcmV0dXJuIChtaW5EYXRlLmlzVmFsaWQoKSAmJiB5ZWFyRGF0ZS5pc0JlZm9yZShtaW5EYXRlLCAneWVhcicpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgeWVhckRhdGUuaXNBZnRlcihtYXhEYXRlLCAneWVhcicpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nWWVhcikge1xuICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9IG1pbkRhdGUuaXNWYWxpZCgpICYmICgodGhpcy5zZWxlY3RlZFllYXIgLSA2KSA8PSBtaW5EYXRlLnllYXIoKSk7XG4gICAgICB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWQgPSBtYXhEYXRlLmlzVmFsaWQoKSAmJiAoKHRoaXMuc2VsZWN0ZWRZZWFyICsgNSkgPj0gbWF4RGF0ZS55ZWFyKCkpO1xuICAgIH1cbiAgICBcbiAgfVxuXG4gIG5hdmlnYXRlVmlldyhkaXJlY3Rpb246IFwiTkVYVFwiIHwgXCJQUkVWSU9VU1wiKTogdm9pZCB7XG4gICAgaWYgKChkaXJlY3Rpb24gPT09ICdORVhUJyAmJiAodGhpcy5pc05leHRNb250aERpc2FibGVkIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aCkpIHx8XG4gICAgICAgIChkaXJlY3Rpb24gPT09ICdQUkVWSU9VUycgJiYgKHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgfHwgdGhpcy5pc1NlbGVjdGluZ01vbnRoKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYodGhpcy5pc1NlbGVjdGluZ1llYXIpe1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgKz0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IDEyIDogLTEyO1xuICAgICAgdGhpcy5hdmFpbGFibGVZZWFycyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAxMiB9LFxuICAgICAgICAoXywgaW5kZXgpID0+IHRoaXMuc2VsZWN0ZWRZZWFyIC0gNiArIGluZGV4XG4gICAgICApO1xuICAgIH1cbiAgICBlbHNle1xuICAgICAgbGV0IHRoaXNNb250aCA6IGRheWpzLkRheWpzID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlcikubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzTW9udGgubW9udGgoKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyID0gdGhpc01vbnRoLnllYXIoKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgIH1cbiAgICB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgdGhpc01vbnRoOiBkYXlqcy5EYXlqcyA9IGRheWpzKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBcIk5FWFRcIikge1xuICAgICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIik7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJQUkVWSU9VU1wiKSB7XG4gICAgICAgIHRoaXNNb250aCA9IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzTW9udGgubW9udGgoKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlciA9IHRoaXNNb250aC55ZWFyKCk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICAgIFxuICAgICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBuYXZpZ2F0ZU1vbnRoIGVycm9yXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgY29uc3QgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gZGF5anMoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF5c0luTW9udGgoKTtcbiAgICAgIFxuICAgICAgbGV0IG1pbkRhdGUgPSBudWxsO1xuICAgICAgbGV0IG1heERhdGUgPSBudWxsO1xuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtaW5EYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1pbiBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtYXhEYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1heCBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBmb3IgKGxldCBjdXJyZW50RGF0ZSA9IDE7IGN1cnJlbnREYXRlIDw9IGRheXNJbk1vbnRoOyBjdXJyZW50RGF0ZSsrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgIFxuICAgICAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhLmRhdGVzRGlzYWJsZWQ/LnNvbWUoZCA9PiBkID09PSBkYXRlU3RyaW5nKSB8fCBmYWxzZTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWluRGF0ZT8uaXNWYWxpZCgpICYmIHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWluRGF0ZS5pc0FmdGVyKGRhdGUsIFwiZGF5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZT8uaXNWYWxpZCgpICYmIHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKSB7XG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWF4RGF0ZS5pc0JlZm9yZShkYXRlLCBcImRheVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgY3VycmVudERhdGVJbnN0YW5jZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgICAgICAgLy8gT25seSBtYXJrIGFzIGN1cnJlbnQgZGF5IGlmIGl0J3Mgbm90IGRpc2FibGVkXG4gICAgICAgICAgY29uc3QgaXNDdXJyZW50RGF5ID0gIWlzRGlzYWJsZWREYXkgJiYgY3VycmVudERhdGVJbnN0YW5jZS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgPT09IGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgIFxuICAgICAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gZmFsc2U7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gT25seSBzZXQgc2VsZWN0ZWQgZGF5IGlmIHRoZSBkYXRlIGlzIG5vdCBkaXNhYmxlZFxuICAgICAgICAgIGlmICghaXNEaXNhYmxlZERheSkge1xuICAgICAgICAgICAgLy8gUHJpb3JpdGl6ZSBjdXJyZW50IHNlbGVjdGlvbiBvdmVyIHByZXZpb3VzbHkgYXBwbGllZCBkYXRlXG4gICAgICAgICAgICBpZiAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSAmJiBcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlLmRhdGUgPT09IGN1cnJlbnREYXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZS5tb250aCA9PT0gbW9udGggJiZcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlLnllYXIgPT09IGN1cnJlbnRZZWFyTnVtYmVyKSB7XG4gICAgICAgICAgICAgIGlzU2VsZWN0ZWREYXkgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuZGF0ZSAmJiAhdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSkge1xuICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHByZXZpb3VzbHkgYXBwbGllZCBkYXRlIGlmIG5vIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWREYXkgPSBzZWxlY3RlZERhdGUuaXNTYW1lKGN1cnJlbnREYXRlSW5zdGFuY2UsICdkYXknKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gRm9yIGRhdGUtb25seSBmb3JtYXQsIGNvbXBhcmUgdGhlIGRhdGUgcGFydHMgb25seVxuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gc2VsZWN0ZWREYXRlLmlzU2FtZShjdXJyZW50RGF0ZUluc3RhbmNlLCAnZGF5Jyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzdHJpbmcgY29tcGFyaXNvbiBpZiBwYXJzaW5nIGZhaWxzXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWREYXkgPSBkYXRlU3RyaW5nID09PSB0aGlzLmRhdGEuZGF0ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGRhdGUgY29tcGFyaXNvbiBlcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgICAgICB3ZWVrRGF5OiBkYXRlLmRheSgpLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXIsXG4gICAgICAgICAgICBpc0N1cnJlbnREYXksXG4gICAgICAgICAgICBpc1NlbGVjdGVkRGF5LFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEubWVzc2FnZXM/LmZpbmQocSA9PiBkYXRlU3RyaW5nID09PSBxLmRhdGUpPy5tZXNzYWdlIHx8IFwiXCIsXG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGRhdGUgcHJvY2Vzc2luZyBlcnJvclxuICAgICAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgICAgICB3ZWVrRGF5OiB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpLmRheSgpLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXIsXG4gICAgICAgICAgICBpc0Rpc2FibGVkRGF5OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRhdGVzWzBdLndlZWtEYXk7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICBkYXRlcy51bnNoaWZ0KHsgXG4gICAgICAgICAgICBkYXRlOiAwLCBcbiAgICAgICAgICAgIHdlZWtEYXk6IGkgLSAxLFxuICAgICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgICAgeWVhcjogY3VycmVudFllYXJOdW1iZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgZ2VuZXJhdGVEYXRlcyBlcnJvclxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBzZWxlY3REYXkoZGF5OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBpZiAoZGF5LmRhdGUgPD0gMCkgcmV0dXJuO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBDcmVhdGUgdGhlIGJhc2UgZGF0ZSBzZWxlY3Rpb24gd2l0aG91dCB0aW1lXG4gICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcikuZGF0ZShkYXkuZGF0ZSkuaG91cigwKS5taW51dGUoMCkuc2Vjb25kKDApLm1pbGxpc2Vjb25kKDApO1xuICAgICAgXG4gICAgICAvLyBBcHBseSB0aGUgY3VycmVudCB0aW1lIHZhbHVlcyB0byB0aGUgc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgbGV0IGhvdXIgPSB0aGlzLnNlbGVjdGVkSG91cjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG0gPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25cbiAgICAgICAgICAuaG91cihob3VyKVxuICAgICAgICAgIC5taW51dGUodGhpcy5zZWxlY3RlZE1pbnV0ZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLmVuZE9mKFwiZGF5XCIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtYXggZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLnN0YXJ0T2YoXCJkYXlcIik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1pbiBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgPSB0aGlzLmRhdGEuYWxsb3dCb29raW5nT25EaXNhYmxlZERheTtcbiAgICAgIFxuICAgICAgaWYgKCgoIW1pbkRhdGUgfHwgdGhpcy5jdXJyZW50U2VsZWN0aW9uLmlzU2FtZU9yQWZ0ZXIobWluRGF0ZSkpICYmICghbWF4RGF0ZSB8fCB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSkpICYmIHRoaXMuYWxsb3dCb29raW5nT25EaXNhYmxlZERheSkgfHwgKCFkYXkuaXNEaXNhYmxlZERheSAmJiAhdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5KSkge1xuICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlID0ge1xuICAgICAgICAgIC4uLmRheSxcbiAgICAgICAgICBtb250aDogdGhpcy5jdXJyZW50TW9udGhOdW1iZXIsXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgLy8gRm9yY2UgY2FsZW5kYXIgcmUtcmVuZGVyIHRvIHNob3cgaGlnaGxpZ2h0aW5nXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBzaG93IGFwcGx5IGJ1dHRvbiB3aGVuIHRpbWUgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGFwcGx5IGltbWVkaWF0ZWx5XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiAmJiAhdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGF0ZShkYXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkudG9hc3RNZXNzYWdlIHx8ICh0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgJiYgZGF5LnRvYXN0TWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgc2VsZWN0RGF5IGVycm9yXG4gICAgfVxuICB9XG5cbiAgYXBwbHlEYXRlKGRheT86IElDdXJyZW50TW9udGhEYXRlcykge1xuICAgIGxldCBkYXRlOiBzdHJpbmc7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBBbHdheXMgdXNlIHRpbWUgaW5wdXQgdmFsdWVzIHdoZW4gdGltZSBpcyBlbmFibGVkLCByZWdhcmRsZXNzIG9mIGN1cnJlbnRTZWxlY3Rpb25cbiAgICAgICAgbGV0IGhvdXIgPSB0aGlzLnNlbGVjdGVkSG91cjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG0gPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGF0ZSBpbnN0YW5jZSB3aXRoIHRoZSBzZWxlY3RlZCB0aW1lXG4gICAgICAgIGNvbnN0IGZpbmFsU2VsZWN0aW9uID0gZGF5anMoKVxuICAgICAgICAgIC55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKVxuICAgICAgICAgIC5kYXRlKHRoaXMubG9jYWxTZWxlY3RlZERhdGU/LmRhdGUgfHwgZGF5Py5kYXRlIHx8IGRheWpzKCkuZGF0ZSgpKVxuICAgICAgICAgIC5ob3VyKGhvdXIpXG4gICAgICAgICAgLm1pbnV0ZSh0aGlzLnNlbGVjdGVkTWludXRlKVxuICAgICAgICAgIC5zZWNvbmQoMClcbiAgICAgICAgICAubWlsbGlzZWNvbmQoMCk7XG4gICAgICAgIFxuICAgICAgICBkYXRlID0gZmluYWxTZWxlY3Rpb24uZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGF0ZS1vbmx5IGZvcm1hdCAtIG5vIHRpbWVcbiAgICAgICAgZGF0ZSA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKVxuICAgICAgICAgIC5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcilcbiAgICAgICAgICAuZGF0ZShkYXkgPyBkYXkuZGF0ZSA6IHRoaXMubG9jYWxTZWxlY3RlZERhdGU/LmRhdGUgfHwgZGF5anMoKS5kYXRlKCkpXG4gICAgICAgICAgLmhvdXIoMClcbiAgICAgICAgICAubWludXRlKDApXG4gICAgICAgICAgLnNlY29uZCgwKVxuICAgICAgICAgIC5taWxsaXNlY29uZCgwKVxuICAgICAgICAgIC5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkgfHwgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZSB8fCAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpKSB7XG4gICAgICAgIHRoaXMuZGF0YS5kYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYW5jZWxEYXRlUGlja2VyKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBhcHBseURhdGUgZXJyb3JcbiAgICAgIHRoaXMuZGF0YS5kYXRlQ2hhbmdlKFwiXCIpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVzY1wiKVxuICBjbG9zZU9uRXNjKCkge1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEuZGF0ZUNoYW5nZShcIlwiKTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRoU2VsZWN0b3IoKSB7XG4gICAgaWYodGhpcy5pc1llYXJTZWxlY3Rpb25GbG93KSByZXR1cm47XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gIXRoaXMuaXNTZWxlY3RpbmdNb250aDtcbiAgICB0aGlzLmlzU2VsZWN0aW5nWWVhciA9IGZhbHNlO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICB9XG5cbiAgdG9nZ2xlWWVhclNlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNTZWxlY3RpbmdZZWFyID0gIXRoaXMuaXNTZWxlY3RpbmdZZWFyO1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5jdXJyZW50WWVhck51bWJlcjtcbiAgICB0aGlzLmF2YWlsYWJsZVllYXJzID0gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiAxMiB9LFxuICAgICAgKF8sIGluZGV4KSA9PiB0aGlzLnNlbGVjdGVkWWVhciAtIDYgKyBpbmRleFxuICAgICk7XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gZmFsc2U7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG5cbiAgfVxuXG4gIHJlc2V0RGF0ZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlID0ge1xuICAgICAgZGF0ZTogMCxcbiAgICAgIHdlZWtEYXk6IDAsXG4gICAgICBpc0N1cnJlbnREYXk6IGZhbHNlLFxuICAgICAgaXNTZWxlY3RlZERheTogZmFsc2UsXG4gICAgICBpc0Rpc2FibGVkRGF5OiBmYWxzZSxcbiAgICAgIHRvYXN0TWVzc2FnZTogJydcbiAgICB9O1xuICAgIHRoaXMuZGF0YS5kYXRlID0gJyc7XG4gIH1cblxuICBzZWxlY3RNb250aChtb250aDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSB0aGlzLmF2YWlsYWJsZU1vbnRocy5pbmRleE9mKG1vbnRoKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGggPSBmYWxzZTtcbiAgICB0aGlzLmlzWWVhclNlbGVjdGlvbkZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0RGF0ZVNlbGVjdGlvbigpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuY3VycmVudFllYXJOdW1iZXIgPSB5ZWFyO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdZZWFyID0gZmFsc2U7XG4gICAgdGhpcy5pc1NlbGVjdGluZ01vbnRoID0gdHJ1ZTtcbiAgICB0aGlzLmlzWWVhclNlbGVjdGlvbkZsb3cgPSB0cnVlO1xuICAgIHRoaXMucmVzZXREYXRlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRhdGEuZGlzYWJsZUJveFNoYWRvdz8ncmVtb3ZlLWJveC1zaGFkb3cnOicnXCIgYXJpYS1sYWJlbD1cImRhdGUgcGlja2VyXCIgY2RrVHJhcEZvY3VzIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCI+XG4gIDxkaXYgdGFiaW5kZXg9XCItMVwiIGNka0ZvY3VzSW5pdGlhbD48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVWaWV3KCdQUkVWSU9VUycpXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm5hdmlnYXRlVmlldygnUFJFVklPVVMnKVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkIHx8IGlzU2VsZWN0aW5nTW9udGhcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nWWVhclwiIChjbGljayk9XCJ0b2dnbGVNb250aFNlbGVjdG9yKClcIiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAge3sgaXNZZWFyU2VsZWN0aW9uRmxvdyA/IHNlbGVjdGVkWWVhciA6IGF2YWlsYWJsZU1vbnRoc1tjdXJyZW50TW9udGhOdW1iZXJdIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc1NlbGVjdGluZ01vbnRoXCIgKGNsaWNrKT1cInRvZ2dsZVllYXJTZWxlY3RvcigpXCIgY2xhc3M9XCJ5ZWFyLWhlYWRlclwiPlxuICAgICAge3sgaXNTZWxlY3RpbmdZZWFyID8geWVhclJhbmdlIDogY3VycmVudFllYXJOdW1iZXIgfX1cbiAgICA8L2Rpdj5cblxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVmlldygnTkVYVCcpXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwibmF2aWdhdGVWaWV3KCdORVhUJylcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkIHx8IGlzU2VsZWN0aW5nTW9udGhcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICA+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdGluZ01vbnRoICYmICFpc1NlbGVjdGluZ1llYXJcIiBjbGFzcz1cIm1vbnRoLXNlbGVjdG9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1vbnRoIG9mIGF2YWlsYWJsZU1vbnRoczsgbGV0IGkgPSBpbmRleFwiIFxuICAgICAgICAgICAgY2xhc3M9XCJtb250aFwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZE1vbnRoc1tpXSAmJiBzZWxlY3RNb250aChtb250aClcIiBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2Rpc2FibGUtbW9udGgnOiBkaXNhYmxlZE1vbnRoc1tpXSxcbiAgICAgICAgICAgICAgJ3NlbGVjdC1tb250aCc6ICFkaXNhYmxlZE1vbnRoc1tjdXJyZW50TW9udGhOdW1iZXJdICYmIG1vbnRoID09PSBhdmFpbGFibGVNb250aHNbY3VycmVudE1vbnRoTnVtYmVyXVxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIHt7IG1vbnRoIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdGluZ1llYXIgJiYgIWlzU2VsZWN0aW5nTW9udGhcIiBjbGFzcz1cInllYXItc2VsZWN0b3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiBhdmFpbGFibGVZZWFyczsgbGV0IGkgPSBpbmRleFwiIFxuICAgICAgICAgICAgY2xhc3M9XCJ5ZWFyXCIgXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkWWVhcnNbaV0gJiYgc2VsZWN0WWVhcih5ZWFyKVwiIFxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZS15ZWFyJzogZGlzYWJsZWRZZWFyc1tpXSxcbiAgICAgICAgICAgICAgJ3NlbGVjdC15ZWFyJzogeWVhciA9PT0gY3VycmVudFllYXJOdW1iZXJcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nTW9udGggJiYgIWlzU2VsZWN0aW5nWWVhclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5c1wiPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdjdXJyZW50LWRheSc6IHdlZWtEYXkuaXNDdXJyZW50RGF5IH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc1NlbGVjdGluZ01vbnRoICYmICFpc1NlbGVjdGluZ1llYXJcIiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXksXG4gICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmICFkYXkuaXNTZWxlY3RlZERheVxuICAgICAgICB9XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBjdXJyZW50TW9udGhEYXRlc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJkYXkuaXNEaXNhYmxlZERheSA/IC0xIDogMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmV0cmFjdERheU1vbnRoKGRheS5kYXRlLCBjdXJyZW50TW9udGgsIGN1cnJlbnRZZWFyTnVtYmVyKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUaW1lIFBpY2tlciBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3RpbWVcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPlRpbWU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRyb2xzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiaG91cklucHV0XCI+SG91cjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBcbiAgICAgICAgICBpZD1cImhvdXJJbnB1dFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIFttaW5dPVwiaXMxMkhvdXJGb3JtYXQoKSA/IDEgOiAwXCJcbiAgICAgICAgICBbbWF4XT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxMiA6IDIzXCJcbiAgICAgICAgICBbc3RlcF09XCIxXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSG91clwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSG91cklucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlSG91cklucHV0KClcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgW3RpdGxlXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAnRW50ZXIgaG91ciAoMS0xMiknIDogJ0VudGVyIGhvdXIgKDAtMjMpJ1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj46PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWludXRlSW5wdXRcIj5NaW51dGU8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgaWQ9XCJtaW51dGVJbnB1dFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIG1pbj1cIjBcIiBcbiAgICAgICAgICBtYXg9XCI1OVwiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uTWludXRlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVNaW51dGVJbnB1dCgpXCJcbiAgICAgICAgICBjbGFzcz1cInRpbWUtaW5wdXRcIlxuICAgICAgICAgIHRpdGxlPVwiRW50ZXIgbWludXRlICgwLTU5KVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYW0tcG0tc2VsZWN0b3JcIiAqbmdJZj1cImlzMTJIb3VyRm9ybWF0KClcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cImFtUG1TZWxlY3RcIj5BTS9QTTwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3QgXG4gICAgICAgICAgaWQ9XCJhbVBtU2VsZWN0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQW1QbVwiXG4gICAgICAgICAgY2xhc3M9XCJhbS1wbS1zZWxlY3RcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQU1cIj5BTTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQTVwiPlBNPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fZm9vdGVyXCIgKm5nSWY9XCJkYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiB8fCBkYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWVcIj5cbiAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIidub25lJ1wiIChjbGljayk9XCJjYW5jZWxEYXRlUGlja2VyKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHlEYXRlKClcIiBbZGlzYWJsZWRdPVwiIShkYXRhLmRhdGUgfHwgbG9jYWxTZWxlY3RlZERhdGUuZGF0ZSlcIj5BcHBseTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -617,38 +617,42 @@ class TzDpContainerComponent {
|
|
|
617
617
|
isDisabledDay = maxDate.isBefore(date, "day");
|
|
618
618
|
}
|
|
619
619
|
const currentDateInstance = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate);
|
|
620
|
-
|
|
620
|
+
// Only mark as current day if it's not disabled
|
|
621
|
+
const isCurrentDay = !isDisabledDay && currentDateInstance.format(this.data.dpConfig.format) === dayjs().format(this.data.dpConfig.format);
|
|
621
622
|
let isSelectedDay = false;
|
|
622
|
-
//
|
|
623
|
-
if (
|
|
624
|
-
|
|
625
|
-
this.localSelectedDate
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
if
|
|
633
|
-
|
|
634
|
-
if (
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
// For date-only format, compare the date parts only
|
|
640
|
-
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
641
|
-
if (selectedDate.isValid()) {
|
|
642
|
-
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
623
|
+
// Only set selected day if the date is not disabled
|
|
624
|
+
if (!isDisabledDay) {
|
|
625
|
+
// Prioritize current selection over previously applied date
|
|
626
|
+
if (this.localSelectedDate &&
|
|
627
|
+
this.localSelectedDate.date === currentDate &&
|
|
628
|
+
this.localSelectedDate.month === month &&
|
|
629
|
+
this.localSelectedDate.year === currentYearNumber) {
|
|
630
|
+
isSelectedDay = true;
|
|
631
|
+
}
|
|
632
|
+
else if (this.data.date && !this.localSelectedDate) {
|
|
633
|
+
// Only check previously applied date if no current selection
|
|
634
|
+
try {
|
|
635
|
+
if (this.data.dpConfig.enableTime) {
|
|
636
|
+
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
637
|
+
if (selectedDate.isValid()) {
|
|
638
|
+
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
639
|
+
}
|
|
643
640
|
}
|
|
644
641
|
else {
|
|
645
|
-
//
|
|
646
|
-
|
|
642
|
+
// For date-only format, compare the date parts only
|
|
643
|
+
const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
|
|
644
|
+
if (selectedDate.isValid()) {
|
|
645
|
+
isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');
|
|
646
|
+
}
|
|
647
|
+
else {
|
|
648
|
+
// Fallback to string comparison if parsing fails
|
|
649
|
+
isSelectedDay = dateString === this.data.date;
|
|
650
|
+
}
|
|
647
651
|
}
|
|
648
652
|
}
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
653
|
+
catch (error) {
|
|
654
|
+
// Silently handle date comparison error
|
|
655
|
+
}
|
|
652
656
|
}
|
|
653
657
|
}
|
|
654
658
|
dates.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-datepicker_v2.mjs","sources":["../../../projects/mis-components/datepicker_v2/datepicker-constants.ts","../../../projects/mis-components/datepicker_v2/utils/index.ts","../../../projects/mis-components/datepicker_v2/tz-dp-container/tz-dp-container.component.html","../../../projects/mis-components/datepicker_v2/tz-dp-container/tz-dp-container.component.ts","../../../projects/mis-components/datepicker_v2/tz-datepicker.directive.ts","../../../projects/mis-components/datepicker_v2/datepicker.module.ts","../../../projects/mis-components/datepicker_v2/mis-crystal-design-system-datepicker_v2.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\";\nexport const TIME_FORMAT_12 = \"hh:mm A\";\nexport const TIME_FORMAT_24 = \"HH:mm\";\nexport const DATETIME_FORMAT_12 = \"DD-MM-YYYY hh:mm A\";\nexport const DATETIME_FORMAT_24 = \"DD-MM-YYYY HH:mm\";\nexport const FORMAT_12 = \"12\";\nexport const FORMAT_24 = \"24\";\n","import { ICurrentMonth } from \"../models/dp-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=\"datepicker-container\" [ngClass]=\"data.disableBoxShadow?'remove-box-shadow':''\" aria-label=\"date picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"datepicker-container__header\">\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('PREVIOUS')\"\n tabindex=\"0\"\n aria-label=\"Previous Month\"\n (keyup.enter)=\"navigateView('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled || isSelectingMonth\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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 </div>\n\n <div *ngIf=\"!isSelectingYear\" (click)=\"toggleMonthSelector()\" class=\"month-header\">\n {{ isYearSelectionFlow ? selectedYear : availableMonths[currentMonthNumber] }}\n </div>\n <div *ngIf=\"!isSelectingMonth\" (click)=\"toggleYearSelector()\" class=\"year-header\">\n {{ isSelectingYear ? yearRange : currentYearNumber }}\n </div>\n\n\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('NEXT')\"\n tabindex=\"0\"\n aria-label=\"Next Month\"\n (keyup.enter)=\"navigateView('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled || isSelectingMonth\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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 </div>\n </div>\n <div class=\"datepicker-container__body\">\n\n <div *ngIf=\"isSelectingMonth && !isSelectingYear\" class=\"month-selector\">\n <div class=\"row\">\n <div *ngFor=\"let month of availableMonths; let i = index\" \n class=\"month\" \n (click)=\"!disabledMonths[i] && selectMonth(month)\" \n [ngClass]=\"{\n 'disable-month': disabledMonths[i],\n 'select-month': !disabledMonths[currentMonthNumber] && month === availableMonths[currentMonthNumber]\n }\">\n {{ month }}\n </div>\n </div>\n </div>\n \n <div *ngIf=\"isSelectingYear && !isSelectingMonth\" class=\"year-selector\">\n <div class=\"row\">\n <div *ngFor=\"let year of availableYears; let i = index\" \n class=\"year\" \n (click)=\"!disabledYears[i] && selectYear(year)\" \n [ngClass]=\"{\n 'disable-year': disabledYears[i],\n 'select-year': year === currentYearNumber\n }\">\n {{ year }}\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!isSelectingMonth && !isSelectingYear\" class=\"datepicker-container__weekdays\">\n <div class=\"datepicker-container__weekday\" *ngFor=\"let weekDay of weekDays\">\n <span [ngClass]=\"{ 'current-day': weekDay.isCurrentDay }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div *ngIf=\"!isSelectingMonth && !isSelectingYear\" class=\"datepicker-container__days\">\n <div\n class=\"datepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay,\n 'is-valid-date': day.date > 0 && !day.isSelectedDay\n }\"\n *ngFor=\"let day of currentMonthDates\"\n (click)=\"selectDay(day)\"\n (keyup.enter)=\"selectDay(day)\"\n >\n <span\n *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay\n }\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth, currentYearNumber)\"\n >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"datepicker-container__time\" *ngIf=\"data.dpConfig.enableTime === true\">\n <div class=\"time-picker-header\">\n <span>Time</span>\n </div>\n <div class=\"time-picker-controls\">\n <div class=\"time-input-group\">\n <label for=\"hourInput\">Hour</label>\n <input \n id=\"hourInput\"\n type=\"number\" \n [min]=\"is12HourFormat() ? 1 : 0\"\n [max]=\"is12HourFormat() ? 12 : 23\"\n [step]=\"1\"\n [(ngModel)]=\"selectedHour\"\n (input)=\"onHourInput($event)\"\n (blur)=\"validateHourInput()\"\n class=\"time-input\"\n [title]=\"is12HourFormat() ? 'Enter hour (1-12)' : 'Enter hour (0-23)'\">\n </div>\n <div class=\"time-separator\">:</div>\n <div class=\"time-input-group\">\n <label for=\"minuteInput\">Minute</label>\n <input \n id=\"minuteInput\"\n type=\"number\" \n min=\"0\" \n max=\"59\"\n [step]=\"1\"\n [(ngModel)]=\"selectedMinute\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"validateMinuteInput()\"\n class=\"time-input\"\n title=\"Enter minute (0-59)\">\n </div>\n <div class=\"am-pm-selector\" *ngIf=\"is12HourFormat()\">\n <label for=\"amPmSelect\">AM/PM</label>\n <select \n id=\"amPmSelect\"\n [(ngModel)]=\"selectedAmPm\"\n class=\"am-pm-select\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"datepicker-container__footer\" *ngIf=\"data.dpConfig.showApplyButton || data.dpConfig.enableTime\">\n <button mis-button size=\"md\" type=\"'none'\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button size=\"md\" type=\"primary\" (click)=\"applyDate()\" [disabled]=\"!(data.date || localSelectedDate.date)\">Apply</button>\n </div>\n</div>\n","import { Component, HostListener, Inject, OnInit } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../datepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay } from \"../models/dp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\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'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\n@Component({\n selector: \"mis-tz-dp\",\n templateUrl: \"./tz-dp-container.component.html\",\n styleUrls: [\"./tz-dp-container.component.scss\"]\n})\nexport class TzDpContainerComponent implements OnInit {\n data: IDatePickerData;\n private parseZoneInstance = (...args) => {\n return dayjs(...args);\n };\n private rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n weekDays: IWeekDay[] = [];\n currentMonthNumber: number;\n currentMonth: ICurrentMonth;\n currentYearNumber: number;\n currentMonthDates: ICurrentMonthDates[] = [];\n isPreviousMonthDisabled: boolean = false;\n isNextMonthDisabled: boolean = false;\n localSelectedDate: ICurrentMonthDates;\n allowBookingOnDisabledDay: boolean = false;\n currentSelection: any;\n \n // Time functionality - only what's needed\n selectedHour: number = 0;\n selectedMinute: number = 0;\n selectedAmPm: string = 'AM';\n\n isSelectingMonth: boolean = false;\n isSelectingYear: boolean = false;\n availableYears: number[] = [];\n availableMonths: string[] = [];\n disabledMonths: boolean[] = [];\n disabledYears: boolean[] = [];\n selectedYear: number;\n isYearSelectionFlow: boolean = false;\n\n constructor(@Inject(CONTAINER_DATA) data: IDatePickerData, private toast: ToastService) {\n this.data = data;\n \n // Initialize parseZoneInstance with better error handling\n this.parseZoneInstance = (...args) => {\n try {\n if (this.data?.dpConfig?.timezone) {\n return dayjs.tz(args[0], args[1] || 'DD/MM/YYYY', this.data.dpConfig.timezone);\n } else {\n return dayjs(...args);\n }\n } catch (error) {\n // Silently handle timezone parsing error, fallback to local time\n return dayjs(...args);\n }\n };\n \n // Set default values safely\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.currentYearNumber = this.parseZoneInstance().year();\n this.weekDays = this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.parseZoneInstance().day() === index\n }));\n \n if (!this.data?.dpConfig?.format) {\n this.data.dpConfig = {\n ...this.data.dpConfig,\n format: DATE_FORMAT\n };\n }\n\n if(!this.data?.date){\n this.data.date = this.parseZoneInstance().format(this.data.dpConfig.format);\n }\n\n this.availableMonths = Array.from({ length: 12 }, (_, i) => dayjs().month(i).format('MMMM'));\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.currentYearNumber - 6 + index\n );\n \n }\n\n onHourInput(event: any): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n const value = parseInt(event.target.value);\n if (!isNaN(value)) {\n if (this.is12HourFormat()) {\n if (value >= 1 && value <= 12) {\n this.selectedHour = value;\n }\n } else {\n if (value >= 0 && value <= 23) {\n this.selectedHour = value;\n }\n }\n }\n }\n\n onMinuteInput(event: any): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n const value = parseInt(event.target.value);\n if (!isNaN(value) && value >= 0 && value <= 59) {\n this.selectedMinute = value;\n }\n }\n\n validateHourInput(): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n if (this.is12HourFormat()) {\n if (this.selectedHour < 1) this.selectedHour = 1;\n if (this.selectedHour > 12) this.selectedHour = 12;\n } else {\n if (this.selectedHour < 0) this.selectedHour = 0;\n if (this.selectedHour > 23) this.selectedHour = 23;\n }\n }\n\n validateMinuteInput(): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n if (this.selectedMinute < 0) this.selectedMinute = 0;\n if (this.selectedMinute > 59) this.selectedMinute = 59;\n }\n\n is12HourFormat(): boolean {\n return this.data.dpConfig.enableTime === true && \n (this.data.dpConfig.format.includes('A') || this.data.dpConfig.format.includes('a'));\n }\n\n retractDayMonth(day: any, month: any, year: any): any {\n return `${day} ${month} ${year}`;\n }\n\n ngOnInit(): void {\n this.currentDateInstance();\n this.calculateMinMaxDays();\n this.calculateDisabledMonthsAndYears();\n this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n // Initialize time if enabled\n if (this.data.dpConfig.enableTime === true) {\n this.initializeTimeValues();\n }\n }\n get yearRange(): string {\n return `${this.selectedYear - 6} - ${this.selectedYear + 5}`;\n }\n\n private initializeTimeValues(): void {\n if (this.data.dpConfig.enableTime === true) {\n if (this.data.date) {\n // Try to parse existing date for time values\n try {\n const currentDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (currentDate.isValid()) {\n let hour = currentDate.hour();\n this.selectedMinute = currentDate.minute();\n \n if (this.is12HourFormat()) {\n if (hour === 0) {\n hour = 12;\n this.selectedAmPm = 'AM';\n } else if (hour > 12) {\n hour = hour - 12;\n this.selectedAmPm = 'PM';\n } else if (hour === 12) {\n this.selectedAmPm = 'PM';\n } else {\n this.selectedAmPm = 'AM';\n }\n }\n \n this.selectedHour = hour;\n } else {\n // Invalid date, use defaults\n this.setDefaultTimeValues();\n }\n } catch (error) {\n // Parsing error, use defaults\n this.setDefaultTimeValues();\n }\n } \n } else {\n // No existing date, use defaults\n this.setDefaultTimeValues();\n }\n \n }\n\n private setDefaultTimeValues(): void {\n // Use current time as default instead of 12:00 PM\n const now = dayjs();\n const currentHour = now.hour();\n const currentMinute = now.minute();\n \n if (this.is12HourFormat()) {\n // Convert current time to 12-hour format\n let hour12 = currentHour;\n let amPm = 'AM';\n \n if (currentHour === 0) {\n hour12 = 12;\n amPm = 'AM';\n } else if (currentHour === 12) {\n hour12 = 12;\n amPm = 'PM';\n } else if (currentHour > 12) {\n hour12 = currentHour - 12;\n amPm = 'PM';\n } else {\n amPm = 'AM';\n }\n \n this.selectedHour = hour12;\n this.selectedMinute = currentMinute;\n this.selectedAmPm = amPm;\n } else {\n // Use current time directly for 24-hour format\n this.selectedHour = currentHour;\n this.selectedMinute = currentMinute;\n this.selectedAmPm = 'AM'; // Not used in 24-hour format but keep consistent\n }\n }\n\n private currentDateInstance(): void {\n try {\n if (this.data.date) {\n const selectedDate = dayjs(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n this.selectedYear = this.currentYearNumber = selectedDate.year();\n this.currentMonthNumber = selectedDate.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n \n if (!this.localSelectedDate) {\n this.localSelectedDate = {\n date: selectedDate.date(),\n weekDay: selectedDate.day(),\n month: selectedDate.month(),\n year: selectedDate.year(),\n isSelectedDay: true\n };\n }\n }\n }\n } catch (error) {\n this.currentYearNumber = this.parseZoneInstance().year();\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n }\n \n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n }\n\n\n private calculateMinMaxDays() {\n const currentInstance = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n \n if (this.data.dpConfig.minDate) {\n const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n if (minDate?.isValid()) {\n this.isPreviousMonthDisabled = minDate.isSameOrAfter(currentInstance, \"month\");\n }\n }\n \n if (this.data.dpConfig.maxDate) {\n const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n if (maxDate?.isValid()) {\n this.isNextMonthDisabled = maxDate.isSameOrBefore(currentInstance, \"month\");\n }\n }\n }\n\n calculateDisabledMonthsAndYears() {\n const minDate = !!this.data.dpConfig.minDate ? this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format) : dayjs('invalid');\n const maxDate = !!this.data.dpConfig.maxDate ? this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format) : dayjs('invalid');\n \n this.disabledMonths = this.availableMonths.map((month, index) => {\n const monthDate = this.parseZoneInstance().year(this.selectedYear).month(index);\n return (minDate.isValid() && monthDate.isBefore(minDate, 'month')) || \n (maxDate.isValid() && monthDate.isAfter(maxDate, 'month'));\n });\n \n this.disabledYears = this.availableYears.map((year) => {\n const yearDate = this.parseZoneInstance().year(year);\n return (minDate.isValid() && yearDate.isBefore(minDate, 'year')) || \n (maxDate.isValid() && yearDate.isAfter(maxDate, 'year'));\n });\n\n if (this.isSelectingYear) {\n this.isPreviousMonthDisabled = minDate.isValid() && ((this.selectedYear - 6) <= minDate.year());\n this.isNextMonthDisabled = maxDate.isValid() && ((this.selectedYear + 5) >= maxDate.year());\n }\n \n }\n\n navigateView(direction: \"NEXT\" | \"PREVIOUS\"): void {\n if ((direction === 'NEXT' && (this.isNextMonthDisabled || this.isSelectingMonth)) ||\n (direction === 'PREVIOUS' && (this.isPreviousMonthDisabled || this.isSelectingMonth))) {\n return;\n }\n if(this.isSelectingYear){\n this.selectedYear += direction === \"NEXT\" ? 12 : -12;\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.selectedYear - 6 + index\n );\n }\n else{\n let thisMonth : dayjs.Dayjs = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n thisMonth = direction === \"NEXT\" ? thisMonth.add(1, \"month\") : thisMonth.subtract(1, \"month\");\n this.currentMonthNumber = thisMonth.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.selectedYear = this.currentYearNumber = thisMonth.year();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n }\n this.calculateMinMaxDays();\n this.calculateDisabledMonthsAndYears();\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n try {\n let thisMonth: dayjs.Dayjs = dayjs().year(this.currentYearNumber).month(this.currentMonthNumber);\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumber = thisMonth.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.currentYearNumber = thisMonth.year();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n this.calculateMinMaxDays();\n } catch (error) {\n // Silently handle navigateMonth error\n }\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n const dates: ICurrentMonthDates[] = [];\n \n try {\n const daysInMonth = dayjs().year(currentYearNumber).month(month).daysInMonth();\n \n let minDate = null;\n let maxDate = null;\n \n if (this.data.dpConfig.minDate) {\n try {\n minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n } catch (error) {\n // Silently handle min date parsing error\n }\n }\n \n if (this.data.dpConfig.maxDate) {\n try {\n maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n } catch (error) {\n // Silently handle max date parsing error\n }\n }\n \n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n try {\n const date = this.parseZoneInstance().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) || false;\n \n if (!isDisabledDay && minDate?.isValid() && this.data.dpConfig.minDate) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n if (!isDisabledDay && maxDate?.isValid() && this.data.dpConfig.maxDate) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n \n const currentDateInstance = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate);\n const isCurrentDay = currentDateInstance.format(this.data.dpConfig.format) === dayjs().format(this.data.dpConfig.format);\n \n let isSelectedDay = false;\n \n // Prioritize current selection over previously applied date\n if (this.localSelectedDate && \n this.localSelectedDate.date === currentDate &&\n this.localSelectedDate.month === month &&\n this.localSelectedDate.year === currentYearNumber) {\n isSelectedDay = true;\n } else if (this.data.date && !this.localSelectedDate) {\n // Only check previously applied date if no current selection\n try {\n if (this.data.dpConfig.enableTime) {\n const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');\n }\n } else {\n // For date-only format, compare the date parts only\n const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');\n } else {\n // Fallback to string comparison if parsing fails\n isSelectedDay = dateString === this.data.date;\n }\n }\n } catch (error) {\n // Silently handle date comparison error\n }\n }\n \n dates.push({\n date: currentDate,\n weekDay: date.day(),\n month: month,\n year: currentYearNumber,\n isCurrentDay,\n isSelectedDay,\n toastMessage: this.data.messages?.find(q => dateString === q.date)?.message || \"\",\n isDisabledDay\n });\n } catch (error) {\n // Silently handle date processing error\n dates.push({\n date: currentDate,\n weekDay: this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate).day(),\n month: month,\n year: currentYearNumber,\n isDisabledDay: true\n });\n }\n }\n \n if (dates.length > 0) {\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ \n date: 0, \n weekDay: i - 1,\n month: month,\n year: currentYearNumber\n });\n }\n }\n } catch (error) {\n // Silently handle generateDates error\n }\n \n return dates;\n }\n\n selectDay(day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n \n try {\n // Create the base date selection without time\n this.currentSelection = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber).date(day.date).hour(0).minute(0).second(0).millisecond(0);\n \n // Apply the current time values to the selection\n if (this.data.dpConfig.enableTime === true) {\n let hour = this.selectedHour;\n \n if (this.is12HourFormat()) {\n if (this.selectedAmPm === 'PM' && hour !== 12) {\n hour += 12;\n } else if (this.selectedAmPm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n \n this.currentSelection = this.currentSelection\n .hour(hour)\n .minute(this.selectedMinute);\n }\n \n let maxDate = null;\n let minDate = null;\n \n if (this.data.dpConfig.maxDate) {\n try {\n maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format).endOf(\"day\");\n } catch (error) {\n // Silently handle max date parsing error\n }\n }\n \n if (this.data.dpConfig.minDate) {\n try {\n minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format).startOf(\"day\");\n } catch (error) {\n // Silently handle min date parsing error\n }\n }\n \n this.allowBookingOnDisabledDay = this.data.allowBookingOnDisabledDay;\n \n if (((!minDate || this.currentSelection.isSameOrAfter(minDate)) && (!maxDate || this.currentSelection.isSameOrBefore(maxDate)) && this.allowBookingOnDisabledDay) || (!day.isDisabledDay && !this.allowBookingOnDisabledDay)) {\n this.localSelectedDate = {\n ...day,\n month: this.currentMonthNumber,\n year: this.currentYearNumber\n };\n \n // Force calendar re-render to show highlighting\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n // Automatically show apply button when time is enabled, otherwise apply immediately\n if (!this.data.dpConfig.showApplyButton && !this.data.dpConfig.enableTime) {\n this.applyDate(day);\n }\n }\n \n if (day.toastMessage || (this.allowBookingOnDisabledDay && day.toastMessage)) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n } catch (error) {\n // Silently handle selectDay error\n }\n }\n\n applyDate(day?: ICurrentMonthDates) {\n let date: string;\n \n try {\n if (this.data.dpConfig.enableTime === true) {\n // Always use time input values when time is enabled, regardless of currentSelection\n let hour = this.selectedHour;\n \n if (this.is12HourFormat()) {\n if (this.selectedAmPm === 'PM' && hour !== 12) {\n hour += 12;\n } else if (this.selectedAmPm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n \n // Create a new date instance with the selected time\n const finalSelection = dayjs()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber)\n .date(this.localSelectedDate?.date || day?.date || dayjs().date())\n .hour(hour)\n .minute(this.selectedMinute)\n .second(0)\n .millisecond(0);\n \n date = finalSelection.format(this.data.dpConfig.format);\n } else {\n // Date-only format - no time\n date = dayjs()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber)\n .date(day ? day.date : this.localSelectedDate?.date || dayjs().date())\n .hour(0)\n .minute(0)\n .second(0)\n .millisecond(0)\n .format(this.data.dpConfig.format);\n }\n \n if (day || this.localSelectedDate || (this.data.dpConfig.enableTime === true)) {\n this.data.dateChange(date);\n } else {\n this.cancelDatePicker();\n }\n } catch (error) {\n // Silently handle applyDate error\n this.data.dateChange(\"\");\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n this.cancelDatePicker();\n }\n\n cancelDatePicker() {\n this.data.dateChange(\"\");\n }\n\n toggleMonthSelector() {\n if(this.isYearSelectionFlow) return;\n this.isSelectingMonth = !this.isSelectingMonth;\n this.isSelectingYear = false;\n this.calculateDisabledMonthsAndYears();\n }\n\n toggleYearSelector() {\n this.isSelectingYear = !this.isSelectingYear;\n this.selectedYear = this.currentYearNumber;\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.selectedYear - 6 + index\n );\n this.isSelectingMonth = false;\n this.calculateDisabledMonthsAndYears();\n\n }\n\n resetDateSelection() {\n this.localSelectedDate = {\n date: 0,\n weekDay: 0,\n isCurrentDay: false,\n isSelectedDay: false,\n isDisabledDay: false,\n toastMessage: ''\n };\n this.data.date = '';\n }\n\n selectMonth(month: string) {\n this.currentMonthNumber = this.availableMonths.indexOf(month);\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.isSelectingMonth = false;\n this.isYearSelectionFlow = false;\n this.resetDateSelection();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n this.calculateMinMaxDays();\n }\n\n selectYear(year: number) {\n this.selectedYear = this.currentYearNumber = year;\n this.isSelectingYear = false;\n this.isSelectingMonth = true;\n this.isYearSelectionFlow = true;\n this.resetDateSelection();\n this.calculateDisabledMonthsAndYears();\n }\n}\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, EventEmitter, HostListener, Injector, Input, OnInit, Optional, Output, Self, SimpleChanges, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./datepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText } from \"./models/dp-config.model\";\nimport { TzDpContainerComponent } from \"./tz-dp-container/tz-dp-container.component\";\n\n@Directive({\n selector: \"input[misTzDp]\"\n})\nexport class TzDatepickerDirective implements OnInit {\n @Input() dpConfig: Partial<IDatePickerConfig>;\n // dd-mm-yyyy 01-12-2022\n @Input() set selectedDate(date: string) {\n this.date = date;\n }\n @Input() set datesDisabled(dates: string[]) {\n this.dpDisabledDates = dates;\n }\n @Input() dateMessages: IDatePickerToastText[] = [];\n @Input() positionX: \"start\" | \"center\" | \"end\" = \"center\";\n @Input() positionY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n @Input() allowBookingOnDisabledDay: boolean = false;\n @Output() dateChange = new EventEmitter<string>(true);\n //to be passed from Specific date picker\n @Input() disableBoxShadow:boolean=false;\n @Input() disableOverLay:boolean = false;\n @Input() openElement:boolean=false;\n private overlayRef: OverlayRef;\n\n private isOpen = false;\n date: string;\n\n private dpDisabledDates: string[] = [];\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['openElement']?.currentValue) {\n this.open()\n }else if(!changes['openElement']?.currentValue)\n {\n this.close()\n }\n }\n ngOnInit(): void {}\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.dpConfig = {\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n showApplyButton: false,\n ...this.dpConfig\n };\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: this.positionX,\n positionY: this.positionY,\n offsetX: this.offsetX,\n offsetY: this.offsetY\n },\n true\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: !this.disableOverLay,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages,\n date: this.control?.control.value || this.date,\n allowBookingOnDisabledDay: this.allowBookingOnDisabledDay,\n dpConfig: this.dpConfig,\n datesDisabled: this.dpDisabledDates,\n dateChange: this.applyDate.bind(this),\n disableBoxShadow:this.disableBoxShadow,\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(date: string = \"\") {\n if (!date) {\n this.close();\n return;\n }\n this.dateChange.emit(date);\n this.control?.control.patchValue(date);\n this.date = date;\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { TzDpContainerComponent } from \"./tz-dp-container/tz-dp-container.component\";\nimport { TzDatepickerDirective } from \"./tz-datepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [TzDpContainerComponent, TzDatepickerDirective],\n imports: [CommonModule, FormsModule, OverlayModule, ToastModule.forRoot(), ButtonModule, A11yModule],\n exports: [TzDpContainerComponent, TzDatepickerDirective]\n})\nexport class DatepickerModuleV2 {}\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-datepicker_v2.mjs","sources":["../../../projects/mis-components/datepicker_v2/datepicker-constants.ts","../../../projects/mis-components/datepicker_v2/utils/index.ts","../../../projects/mis-components/datepicker_v2/tz-dp-container/tz-dp-container.component.html","../../../projects/mis-components/datepicker_v2/tz-dp-container/tz-dp-container.component.ts","../../../projects/mis-components/datepicker_v2/tz-datepicker.directive.ts","../../../projects/mis-components/datepicker_v2/datepicker.module.ts","../../../projects/mis-components/datepicker_v2/mis-crystal-design-system-datepicker_v2.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\";\nexport const TIME_FORMAT_12 = \"hh:mm A\";\nexport const TIME_FORMAT_24 = \"HH:mm\";\nexport const DATETIME_FORMAT_12 = \"DD-MM-YYYY hh:mm A\";\nexport const DATETIME_FORMAT_24 = \"DD-MM-YYYY HH:mm\";\nexport const FORMAT_12 = \"12\";\nexport const FORMAT_24 = \"24\";\n","import { ICurrentMonth } from \"../models/dp-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=\"datepicker-container\" [ngClass]=\"data.disableBoxShadow?'remove-box-shadow':''\" aria-label=\"date picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"datepicker-container__header\">\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('PREVIOUS')\"\n tabindex=\"0\"\n aria-label=\"Previous Month\"\n (keyup.enter)=\"navigateView('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled || isSelectingMonth\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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 </div>\n\n <div *ngIf=\"!isSelectingYear\" (click)=\"toggleMonthSelector()\" class=\"month-header\">\n {{ isYearSelectionFlow ? selectedYear : availableMonths[currentMonthNumber] }}\n </div>\n <div *ngIf=\"!isSelectingMonth\" (click)=\"toggleYearSelector()\" class=\"year-header\">\n {{ isSelectingYear ? yearRange : currentYearNumber }}\n </div>\n\n\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('NEXT')\"\n tabindex=\"0\"\n aria-label=\"Next Month\"\n (keyup.enter)=\"navigateView('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled || isSelectingMonth\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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 </div>\n </div>\n <div class=\"datepicker-container__body\">\n\n <div *ngIf=\"isSelectingMonth && !isSelectingYear\" class=\"month-selector\">\n <div class=\"row\">\n <div *ngFor=\"let month of availableMonths; let i = index\" \n class=\"month\" \n (click)=\"!disabledMonths[i] && selectMonth(month)\" \n [ngClass]=\"{\n 'disable-month': disabledMonths[i],\n 'select-month': !disabledMonths[currentMonthNumber] && month === availableMonths[currentMonthNumber]\n }\">\n {{ month }}\n </div>\n </div>\n </div>\n \n <div *ngIf=\"isSelectingYear && !isSelectingMonth\" class=\"year-selector\">\n <div class=\"row\">\n <div *ngFor=\"let year of availableYears; let i = index\" \n class=\"year\" \n (click)=\"!disabledYears[i] && selectYear(year)\" \n [ngClass]=\"{\n 'disable-year': disabledYears[i],\n 'select-year': year === currentYearNumber\n }\">\n {{ year }}\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!isSelectingMonth && !isSelectingYear\" class=\"datepicker-container__weekdays\">\n <div class=\"datepicker-container__weekday\" *ngFor=\"let weekDay of weekDays\">\n <span [ngClass]=\"{ 'current-day': weekDay.isCurrentDay }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div *ngIf=\"!isSelectingMonth && !isSelectingYear\" class=\"datepicker-container__days\">\n <div\n class=\"datepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay,\n 'is-valid-date': day.date > 0 && !day.isSelectedDay\n }\"\n *ngFor=\"let day of currentMonthDates\"\n (click)=\"selectDay(day)\"\n (keyup.enter)=\"selectDay(day)\"\n >\n <span\n *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay\n }\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth, currentYearNumber)\"\n >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"datepicker-container__time\" *ngIf=\"data.dpConfig.enableTime === true\">\n <div class=\"time-picker-header\">\n <span>Time</span>\n </div>\n <div class=\"time-picker-controls\">\n <div class=\"time-input-group\">\n <label for=\"hourInput\">Hour</label>\n <input \n id=\"hourInput\"\n type=\"number\" \n [min]=\"is12HourFormat() ? 1 : 0\"\n [max]=\"is12HourFormat() ? 12 : 23\"\n [step]=\"1\"\n [(ngModel)]=\"selectedHour\"\n (input)=\"onHourInput($event)\"\n (blur)=\"validateHourInput()\"\n class=\"time-input\"\n [title]=\"is12HourFormat() ? 'Enter hour (1-12)' : 'Enter hour (0-23)'\">\n </div>\n <div class=\"time-separator\">:</div>\n <div class=\"time-input-group\">\n <label for=\"minuteInput\">Minute</label>\n <input \n id=\"minuteInput\"\n type=\"number\" \n min=\"0\" \n max=\"59\"\n [step]=\"1\"\n [(ngModel)]=\"selectedMinute\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"validateMinuteInput()\"\n class=\"time-input\"\n title=\"Enter minute (0-59)\">\n </div>\n <div class=\"am-pm-selector\" *ngIf=\"is12HourFormat()\">\n <label for=\"amPmSelect\">AM/PM</label>\n <select \n id=\"amPmSelect\"\n [(ngModel)]=\"selectedAmPm\"\n class=\"am-pm-select\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"datepicker-container__footer\" *ngIf=\"data.dpConfig.showApplyButton || data.dpConfig.enableTime\">\n <button mis-button size=\"md\" type=\"'none'\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button size=\"md\" type=\"primary\" (click)=\"applyDate()\" [disabled]=\"!(data.date || localSelectedDate.date)\">Apply</button>\n </div>\n</div>\n","import { Component, HostListener, Inject, OnInit } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../datepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay } from \"../models/dp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\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'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\n@Component({\n selector: \"mis-tz-dp\",\n templateUrl: \"./tz-dp-container.component.html\",\n styleUrls: [\"./tz-dp-container.component.scss\"]\n})\nexport class TzDpContainerComponent implements OnInit {\n data: IDatePickerData;\n private parseZoneInstance = (...args) => {\n return dayjs(...args);\n };\n private rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n weekDays: IWeekDay[] = [];\n currentMonthNumber: number;\n currentMonth: ICurrentMonth;\n currentYearNumber: number;\n currentMonthDates: ICurrentMonthDates[] = [];\n isPreviousMonthDisabled: boolean = false;\n isNextMonthDisabled: boolean = false;\n localSelectedDate: ICurrentMonthDates;\n allowBookingOnDisabledDay: boolean = false;\n currentSelection: any;\n \n // Time functionality - only what's needed\n selectedHour: number = 0;\n selectedMinute: number = 0;\n selectedAmPm: string = 'AM';\n\n isSelectingMonth: boolean = false;\n isSelectingYear: boolean = false;\n availableYears: number[] = [];\n availableMonths: string[] = [];\n disabledMonths: boolean[] = [];\n disabledYears: boolean[] = [];\n selectedYear: number;\n isYearSelectionFlow: boolean = false;\n\n constructor(@Inject(CONTAINER_DATA) data: IDatePickerData, private toast: ToastService) {\n this.data = data;\n \n // Initialize parseZoneInstance with better error handling\n this.parseZoneInstance = (...args) => {\n try {\n if (this.data?.dpConfig?.timezone) {\n return dayjs.tz(args[0], args[1] || 'DD/MM/YYYY', this.data.dpConfig.timezone);\n } else {\n return dayjs(...args);\n }\n } catch (error) {\n // Silently handle timezone parsing error, fallback to local time\n return dayjs(...args);\n }\n };\n \n // Set default values safely\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.currentYearNumber = this.parseZoneInstance().year();\n this.weekDays = this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.parseZoneInstance().day() === index\n }));\n \n if (!this.data?.dpConfig?.format) {\n this.data.dpConfig = {\n ...this.data.dpConfig,\n format: DATE_FORMAT\n };\n }\n\n if(!this.data?.date){\n this.data.date = this.parseZoneInstance().format(this.data.dpConfig.format);\n }\n\n this.availableMonths = Array.from({ length: 12 }, (_, i) => dayjs().month(i).format('MMMM'));\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.currentYearNumber - 6 + index\n );\n \n }\n\n onHourInput(event: any): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n const value = parseInt(event.target.value);\n if (!isNaN(value)) {\n if (this.is12HourFormat()) {\n if (value >= 1 && value <= 12) {\n this.selectedHour = value;\n }\n } else {\n if (value >= 0 && value <= 23) {\n this.selectedHour = value;\n }\n }\n }\n }\n\n onMinuteInput(event: any): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n const value = parseInt(event.target.value);\n if (!isNaN(value) && value >= 0 && value <= 59) {\n this.selectedMinute = value;\n }\n }\n\n validateHourInput(): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n if (this.is12HourFormat()) {\n if (this.selectedHour < 1) this.selectedHour = 1;\n if (this.selectedHour > 12) this.selectedHour = 12;\n } else {\n if (this.selectedHour < 0) this.selectedHour = 0;\n if (this.selectedHour > 23) this.selectedHour = 23;\n }\n }\n\n validateMinuteInput(): void {\n if (this.data.dpConfig.enableTime !== true) return;\n \n if (this.selectedMinute < 0) this.selectedMinute = 0;\n if (this.selectedMinute > 59) this.selectedMinute = 59;\n }\n\n is12HourFormat(): boolean {\n return this.data.dpConfig.enableTime === true && \n (this.data.dpConfig.format.includes('A') || this.data.dpConfig.format.includes('a'));\n }\n\n retractDayMonth(day: any, month: any, year: any): any {\n return `${day} ${month} ${year}`;\n }\n\n ngOnInit(): void {\n this.currentDateInstance();\n this.calculateMinMaxDays();\n this.calculateDisabledMonthsAndYears();\n this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n // Initialize time if enabled\n if (this.data.dpConfig.enableTime === true) {\n this.initializeTimeValues();\n }\n }\n get yearRange(): string {\n return `${this.selectedYear - 6} - ${this.selectedYear + 5}`;\n }\n\n private initializeTimeValues(): void {\n if (this.data.dpConfig.enableTime === true) {\n if (this.data.date) {\n // Try to parse existing date for time values\n try {\n const currentDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (currentDate.isValid()) {\n let hour = currentDate.hour();\n this.selectedMinute = currentDate.minute();\n \n if (this.is12HourFormat()) {\n if (hour === 0) {\n hour = 12;\n this.selectedAmPm = 'AM';\n } else if (hour > 12) {\n hour = hour - 12;\n this.selectedAmPm = 'PM';\n } else if (hour === 12) {\n this.selectedAmPm = 'PM';\n } else {\n this.selectedAmPm = 'AM';\n }\n }\n \n this.selectedHour = hour;\n } else {\n // Invalid date, use defaults\n this.setDefaultTimeValues();\n }\n } catch (error) {\n // Parsing error, use defaults\n this.setDefaultTimeValues();\n }\n } \n } else {\n // No existing date, use defaults\n this.setDefaultTimeValues();\n }\n \n }\n\n private setDefaultTimeValues(): void {\n // Use current time as default instead of 12:00 PM\n const now = dayjs();\n const currentHour = now.hour();\n const currentMinute = now.minute();\n \n if (this.is12HourFormat()) {\n // Convert current time to 12-hour format\n let hour12 = currentHour;\n let amPm = 'AM';\n \n if (currentHour === 0) {\n hour12 = 12;\n amPm = 'AM';\n } else if (currentHour === 12) {\n hour12 = 12;\n amPm = 'PM';\n } else if (currentHour > 12) {\n hour12 = currentHour - 12;\n amPm = 'PM';\n } else {\n amPm = 'AM';\n }\n \n this.selectedHour = hour12;\n this.selectedMinute = currentMinute;\n this.selectedAmPm = amPm;\n } else {\n // Use current time directly for 24-hour format\n this.selectedHour = currentHour;\n this.selectedMinute = currentMinute;\n this.selectedAmPm = 'AM'; // Not used in 24-hour format but keep consistent\n }\n }\n\n private currentDateInstance(): void {\n try {\n if (this.data.date) {\n const selectedDate = dayjs(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n this.selectedYear = this.currentYearNumber = selectedDate.year();\n this.currentMonthNumber = selectedDate.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n \n if (!this.localSelectedDate) {\n this.localSelectedDate = {\n date: selectedDate.date(),\n weekDay: selectedDate.day(),\n month: selectedDate.month(),\n year: selectedDate.year(),\n isSelectedDay: true\n };\n }\n }\n }\n } catch (error) {\n this.currentYearNumber = this.parseZoneInstance().year();\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n }\n \n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n }\n\n\n private calculateMinMaxDays() {\n const currentInstance = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n \n if (this.data.dpConfig.minDate) {\n const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n if (minDate?.isValid()) {\n this.isPreviousMonthDisabled = minDate.isSameOrAfter(currentInstance, \"month\");\n }\n }\n \n if (this.data.dpConfig.maxDate) {\n const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n if (maxDate?.isValid()) {\n this.isNextMonthDisabled = maxDate.isSameOrBefore(currentInstance, \"month\");\n }\n }\n }\n\n calculateDisabledMonthsAndYears() {\n const minDate = !!this.data.dpConfig.minDate ? this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format) : dayjs('invalid');\n const maxDate = !!this.data.dpConfig.maxDate ? this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format) : dayjs('invalid');\n \n this.disabledMonths = this.availableMonths.map((month, index) => {\n const monthDate = this.parseZoneInstance().year(this.selectedYear).month(index);\n return (minDate.isValid() && monthDate.isBefore(minDate, 'month')) || \n (maxDate.isValid() && monthDate.isAfter(maxDate, 'month'));\n });\n \n this.disabledYears = this.availableYears.map((year) => {\n const yearDate = this.parseZoneInstance().year(year);\n return (minDate.isValid() && yearDate.isBefore(minDate, 'year')) || \n (maxDate.isValid() && yearDate.isAfter(maxDate, 'year'));\n });\n\n if (this.isSelectingYear) {\n this.isPreviousMonthDisabled = minDate.isValid() && ((this.selectedYear - 6) <= minDate.year());\n this.isNextMonthDisabled = maxDate.isValid() && ((this.selectedYear + 5) >= maxDate.year());\n }\n \n }\n\n navigateView(direction: \"NEXT\" | \"PREVIOUS\"): void {\n if ((direction === 'NEXT' && (this.isNextMonthDisabled || this.isSelectingMonth)) ||\n (direction === 'PREVIOUS' && (this.isPreviousMonthDisabled || this.isSelectingMonth))) {\n return;\n }\n if(this.isSelectingYear){\n this.selectedYear += direction === \"NEXT\" ? 12 : -12;\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.selectedYear - 6 + index\n );\n }\n else{\n let thisMonth : dayjs.Dayjs = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n thisMonth = direction === \"NEXT\" ? thisMonth.add(1, \"month\") : thisMonth.subtract(1, \"month\");\n this.currentMonthNumber = thisMonth.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.selectedYear = this.currentYearNumber = thisMonth.year();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n }\n this.calculateMinMaxDays();\n this.calculateDisabledMonthsAndYears();\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n try {\n let thisMonth: dayjs.Dayjs = dayjs().year(this.currentYearNumber).month(this.currentMonthNumber);\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumber = thisMonth.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.currentYearNumber = thisMonth.year();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n this.calculateMinMaxDays();\n } catch (error) {\n // Silently handle navigateMonth error\n }\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n const dates: ICurrentMonthDates[] = [];\n \n try {\n const daysInMonth = dayjs().year(currentYearNumber).month(month).daysInMonth();\n \n let minDate = null;\n let maxDate = null;\n \n if (this.data.dpConfig.minDate) {\n try {\n minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n } catch (error) {\n // Silently handle min date parsing error\n }\n }\n \n if (this.data.dpConfig.maxDate) {\n try {\n maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n } catch (error) {\n // Silently handle max date parsing error\n }\n }\n \n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n try {\n const date = this.parseZoneInstance().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) || false;\n \n if (!isDisabledDay && minDate?.isValid() && this.data.dpConfig.minDate) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n if (!isDisabledDay && maxDate?.isValid() && this.data.dpConfig.maxDate) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n \n const currentDateInstance = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate);\n // Only mark as current day if it's not disabled\n const isCurrentDay = !isDisabledDay && currentDateInstance.format(this.data.dpConfig.format) === dayjs().format(this.data.dpConfig.format);\n \n let isSelectedDay = false;\n \n // Only set selected day if the date is not disabled\n if (!isDisabledDay) {\n // Prioritize current selection over previously applied date\n if (this.localSelectedDate && \n this.localSelectedDate.date === currentDate &&\n this.localSelectedDate.month === month &&\n this.localSelectedDate.year === currentYearNumber) {\n isSelectedDay = true;\n } else if (this.data.date && !this.localSelectedDate) {\n // Only check previously applied date if no current selection\n try {\n if (this.data.dpConfig.enableTime) {\n const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');\n }\n } else {\n // For date-only format, compare the date parts only\n const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n isSelectedDay = selectedDate.isSame(currentDateInstance, 'day');\n } else {\n // Fallback to string comparison if parsing fails\n isSelectedDay = dateString === this.data.date;\n }\n }\n } catch (error) {\n // Silently handle date comparison error\n }\n }\n }\n \n dates.push({\n date: currentDate,\n weekDay: date.day(),\n month: month,\n year: currentYearNumber,\n isCurrentDay,\n isSelectedDay,\n toastMessage: this.data.messages?.find(q => dateString === q.date)?.message || \"\",\n isDisabledDay\n });\n } catch (error) {\n // Silently handle date processing error\n dates.push({\n date: currentDate,\n weekDay: this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate).day(),\n month: month,\n year: currentYearNumber,\n isDisabledDay: true\n });\n }\n }\n \n if (dates.length > 0) {\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ \n date: 0, \n weekDay: i - 1,\n month: month,\n year: currentYearNumber\n });\n }\n }\n } catch (error) {\n // Silently handle generateDates error\n }\n \n return dates;\n }\n\n selectDay(day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n \n try {\n // Create the base date selection without time\n this.currentSelection = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber).date(day.date).hour(0).minute(0).second(0).millisecond(0);\n \n // Apply the current time values to the selection\n if (this.data.dpConfig.enableTime === true) {\n let hour = this.selectedHour;\n \n if (this.is12HourFormat()) {\n if (this.selectedAmPm === 'PM' && hour !== 12) {\n hour += 12;\n } else if (this.selectedAmPm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n \n this.currentSelection = this.currentSelection\n .hour(hour)\n .minute(this.selectedMinute);\n }\n \n let maxDate = null;\n let minDate = null;\n \n if (this.data.dpConfig.maxDate) {\n try {\n maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format).endOf(\"day\");\n } catch (error) {\n // Silently handle max date parsing error\n }\n }\n \n if (this.data.dpConfig.minDate) {\n try {\n minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format).startOf(\"day\");\n } catch (error) {\n // Silently handle min date parsing error\n }\n }\n \n this.allowBookingOnDisabledDay = this.data.allowBookingOnDisabledDay;\n \n if (((!minDate || this.currentSelection.isSameOrAfter(minDate)) && (!maxDate || this.currentSelection.isSameOrBefore(maxDate)) && this.allowBookingOnDisabledDay) || (!day.isDisabledDay && !this.allowBookingOnDisabledDay)) {\n this.localSelectedDate = {\n ...day,\n month: this.currentMonthNumber,\n year: this.currentYearNumber\n };\n \n // Force calendar re-render to show highlighting\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n \n // Automatically show apply button when time is enabled, otherwise apply immediately\n if (!this.data.dpConfig.showApplyButton && !this.data.dpConfig.enableTime) {\n this.applyDate(day);\n }\n }\n \n if (day.toastMessage || (this.allowBookingOnDisabledDay && day.toastMessage)) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n } catch (error) {\n // Silently handle selectDay error\n }\n }\n\n applyDate(day?: ICurrentMonthDates) {\n let date: string;\n \n try {\n if (this.data.dpConfig.enableTime === true) {\n // Always use time input values when time is enabled, regardless of currentSelection\n let hour = this.selectedHour;\n \n if (this.is12HourFormat()) {\n if (this.selectedAmPm === 'PM' && hour !== 12) {\n hour += 12;\n } else if (this.selectedAmPm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n \n // Create a new date instance with the selected time\n const finalSelection = dayjs()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber)\n .date(this.localSelectedDate?.date || day?.date || dayjs().date())\n .hour(hour)\n .minute(this.selectedMinute)\n .second(0)\n .millisecond(0);\n \n date = finalSelection.format(this.data.dpConfig.format);\n } else {\n // Date-only format - no time\n date = dayjs()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber)\n .date(day ? day.date : this.localSelectedDate?.date || dayjs().date())\n .hour(0)\n .minute(0)\n .second(0)\n .millisecond(0)\n .format(this.data.dpConfig.format);\n }\n \n if (day || this.localSelectedDate || (this.data.dpConfig.enableTime === true)) {\n this.data.dateChange(date);\n } else {\n this.cancelDatePicker();\n }\n } catch (error) {\n // Silently handle applyDate error\n this.data.dateChange(\"\");\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n this.cancelDatePicker();\n }\n\n cancelDatePicker() {\n this.data.dateChange(\"\");\n }\n\n toggleMonthSelector() {\n if(this.isYearSelectionFlow) return;\n this.isSelectingMonth = !this.isSelectingMonth;\n this.isSelectingYear = false;\n this.calculateDisabledMonthsAndYears();\n }\n\n toggleYearSelector() {\n this.isSelectingYear = !this.isSelectingYear;\n this.selectedYear = this.currentYearNumber;\n this.availableYears = Array.from(\n { length: 12 },\n (_, index) => this.selectedYear - 6 + index\n );\n this.isSelectingMonth = false;\n this.calculateDisabledMonthsAndYears();\n\n }\n\n resetDateSelection() {\n this.localSelectedDate = {\n date: 0,\n weekDay: 0,\n isCurrentDay: false,\n isSelectedDay: false,\n isDisabledDay: false,\n toastMessage: ''\n };\n this.data.date = '';\n }\n\n selectMonth(month: string) {\n this.currentMonthNumber = this.availableMonths.indexOf(month);\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.isSelectingMonth = false;\n this.isYearSelectionFlow = false;\n this.resetDateSelection();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n this.calculateMinMaxDays();\n }\n\n selectYear(year: number) {\n this.selectedYear = this.currentYearNumber = year;\n this.isSelectingYear = false;\n this.isSelectingMonth = true;\n this.isYearSelectionFlow = true;\n this.resetDateSelection();\n this.calculateDisabledMonthsAndYears();\n }\n}\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, EventEmitter, HostListener, Injector, Input, OnInit, Optional, Output, Self, SimpleChanges, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./datepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText } from \"./models/dp-config.model\";\nimport { TzDpContainerComponent } from \"./tz-dp-container/tz-dp-container.component\";\n\n@Directive({\n selector: \"input[misTzDp]\"\n})\nexport class TzDatepickerDirective implements OnInit {\n @Input() dpConfig: Partial<IDatePickerConfig>;\n // dd-mm-yyyy 01-12-2022\n @Input() set selectedDate(date: string) {\n this.date = date;\n }\n @Input() set datesDisabled(dates: string[]) {\n this.dpDisabledDates = dates;\n }\n @Input() dateMessages: IDatePickerToastText[] = [];\n @Input() positionX: \"start\" | \"center\" | \"end\" = \"center\";\n @Input() positionY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n @Input() allowBookingOnDisabledDay: boolean = false;\n @Output() dateChange = new EventEmitter<string>(true);\n //to be passed from Specific date picker\n @Input() disableBoxShadow:boolean=false;\n @Input() disableOverLay:boolean = false;\n @Input() openElement:boolean=false;\n private overlayRef: OverlayRef;\n\n private isOpen = false;\n date: string;\n\n private dpDisabledDates: string[] = [];\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['openElement']?.currentValue) {\n this.open()\n }else if(!changes['openElement']?.currentValue)\n {\n this.close()\n }\n }\n ngOnInit(): void {}\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.dpConfig = {\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n showApplyButton: false,\n ...this.dpConfig\n };\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: this.positionX,\n positionY: this.positionY,\n offsetX: this.offsetX,\n offsetY: this.offsetY\n },\n true\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: !this.disableOverLay,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages,\n date: this.control?.control.value || this.date,\n allowBookingOnDisabledDay: this.allowBookingOnDisabledDay,\n dpConfig: this.dpConfig,\n datesDisabled: this.dpDisabledDates,\n dateChange: this.applyDate.bind(this),\n disableBoxShadow:this.disableBoxShadow,\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(date: string = \"\") {\n if (!date) {\n this.close();\n return;\n }\n this.dateChange.emit(date);\n this.control?.control.patchValue(date);\n this.date = date;\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { TzDpContainerComponent } from \"./tz-dp-container/tz-dp-container.component\";\nimport { TzDatepickerDirective } from \"./tz-datepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [TzDpContainerComponent, TzDatepickerDirective],\n imports: [CommonModule, FormsModule, OverlayModule, ToastModule.forRoot(), ButtonModule, A11yModule],\n exports: [TzDpContainerComponent, TzDatepickerDirective]\n})\nexport class DatepickerModuleV2 {}\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.0.
|
|
3
|
+
"version": "18.0.27",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "*",
|
|
6
6
|
"@angular/core": "*",
|
|
@@ -40,6 +40,18 @@
|
|
|
40
40
|
"esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
|
|
41
41
|
"default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
|
|
42
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
|
+
"./checkbox": {
|
|
50
|
+
"types": "./checkbox/index.d.ts",
|
|
51
|
+
"esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
|
|
52
|
+
"esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
|
|
53
|
+
"default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
|
|
54
|
+
},
|
|
43
55
|
"./chip": {
|
|
44
56
|
"types": "./chip/index.d.ts",
|
|
45
57
|
"esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
|
|
@@ -52,18 +64,6 @@
|
|
|
52
64
|
"esm": "./esm2022/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs",
|
|
53
65
|
"default": "./fesm2022/mis-crystal-design-system-datepicker_v2.mjs"
|
|
54
66
|
},
|
|
55
|
-
"./checkbox": {
|
|
56
|
-
"types": "./checkbox/index.d.ts",
|
|
57
|
-
"esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
|
|
58
|
-
"esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
|
|
59
|
-
"default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
|
|
60
|
-
},
|
|
61
|
-
"./button": {
|
|
62
|
-
"types": "./button/index.d.ts",
|
|
63
|
-
"esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
64
|
-
"esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
65
|
-
"default": "./fesm2022/mis-crystal-design-system-button.mjs"
|
|
66
|
-
},
|
|
67
67
|
"./daterangepicker_v2": {
|
|
68
68
|
"types": "./daterangepicker_v2/index.d.ts",
|
|
69
69
|
"esm2022": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|