myrta-ui 17.1.56 → 17.1.57

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.
@@ -72,21 +72,28 @@ export class DateCalendarComponent {
72
72
  if (this.calendarDaysCache?.month === this.currentMonth && this.calendarDaysCache?.year === this.currentYear) {
73
73
  return this.calendarDaysCache.days;
74
74
  }
75
+ // Определяем количество дней в текущем, предыдущем и следующем месяцах
75
76
  const daysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();
76
77
  const prevMonthDays = new Date(this.currentYear, this.currentMonth, 0).getDate();
77
78
  const days = [];
78
- const prevDaysCount = 2;
79
+ // Вычисляем, сколько дней взять из предыдущего месяца, чтобы неделя начиналась с понедельника
80
+ const firstDayJS = new Date(this.currentYear, this.currentMonth, 1).getDay(); // 0 = воскресенье, 1 = понедельник, ...
81
+ const prevDaysCount = (firstDayJS + 6) % 7; // 0..6, где 0 означает, что 1-е число уже понедельник
79
82
  const prevMonth = this.currentMonth === 0 ? 11 : this.currentMonth - 1;
80
83
  const prevYear = this.currentMonth === 0 ? this.currentYear - 1 : this.currentYear;
81
84
  const nextMonth = this.currentMonth === 11 ? 0 : this.currentMonth + 1;
82
85
  const nextYear = this.currentMonth === 11 ? this.currentYear + 1 : this.currentYear;
86
+ // Предыдущие дни (если нужны)
83
87
  for (let i = 0; i < prevDaysCount; i++) {
84
88
  days.push({ day: prevMonthDays - prevDaysCount + 1 + i, month: prevMonth, year: prevYear });
85
89
  }
90
+ // Дни текущего месяца
86
91
  for (let i = 1; i <= daysInMonth; i++) {
87
92
  days.push({ day: i, month: this.currentMonth, year: this.currentYear });
88
93
  }
89
- const remainingDays = 35 - days.length;
94
+ // Дозаполняем до полного количества ячеек (6 недель по 7 дней = 42)
95
+ const totalCells = 42;
96
+ const remainingDays = totalCells - days.length;
90
97
  for (let i = 1; i <= remainingDays; i++) {
91
98
  days.push({ day: i, month: nextMonth, year: nextYear });
92
99
  }
@@ -219,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
219
226
  }], maxDate: [{
220
227
  type: Input
221
228
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2NvbXBvbmVudHMvZGF0ZS1jYWxlbmRhci9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWRhdGUvY29tcG9uZW50cy9kYXRlLWNhbGVuZGFyL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFRdEUsTUFBTSxPQUFPLHFCQUFxQjtJQXFCWjtJQXBCWCxZQUFZLEdBQWdCLElBQUksQ0FBQztJQUNoQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN4QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUUzQyxZQUFZLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QyxXQUFXLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQyxJQUFJLEdBQWdDLE1BQU0sQ0FBQztJQUNsQyxVQUFVLEdBQWE7UUFDOUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztLQUM3RCxD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LENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXBGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUV2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFD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bUJBR1osdUJBQXVCLENBQUMsTUFBTTtzRkFHdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkE2QkgsT0FBTztzQkFEVixLQUFLO2dCQWNGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsZWFuRGF0ZSwgaXNEYXRlSW5SYW5nZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZGF0ZS1oZWxwZXJzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWRhdGUtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQubGVzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGN1cnJlbnRNb250aDogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRNb250aCgpO1xyXG4gIGN1cnJlbnRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xyXG4gIHJlYWRvbmx5IG1vbnRoTmFtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJyxcclxuICAgICfQmNGO0LvRjCcsICfQkNCy0LPRg9GB0YInLCAn0KHQtdC90YLRj9Cx0YDRjCcsICfQntC60YLRj9Cx0YDRjCcsICfQndC+0Y/QsdGA0YwnLCAn0JTQtdC60LDQsdGA0YwnXHJcbiAgXTtcclxuICByZWFkb25seSBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsn0J/QnScsICfQktCiJywgJ9Ch0KAnLCAn0KfQoicsICfQn9CiJywgJ9Ch0JEnLCAn0JLQoSddO1xyXG4gIHJlYWRvbmx5IG1vbnRoczogbnVtYmVyW10gPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXTtcclxuXHJcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9taW5EYXRlU3RyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9tYXhEYXRlU3RyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNhbGVuZGFyRGF5c0NhY2hlOiB7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlcjsgZGF5czogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXSB9IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRGF0ZUJvdW5kcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWluRGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuX21pbkRhdGVTdHIgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX21pbkRhdGVTdHIgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVEYXRlQm91bmRzKCk7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbkRhdGUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZVN0cjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9tYXhEYXRlU3RyICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9tYXhEYXRlU3RyID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0ZUJvdW5kcygpO1xyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtYXhEYXRlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heERhdGVTdHI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGVCb3VuZHMoKSB7XHJcbiAgICB0aGlzLl9taW5EYXRlID0gdGhpcy5fbWluRGF0ZVN0ciA/IGNsZWFuRGF0ZSh0aGlzLl9taW5EYXRlU3RyKSA6IG51bGw7XHJcbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5fbWF4RGF0ZVN0ciA/IGNsZWFuRGF0ZSh0aGlzLl9tYXhEYXRlU3RyKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVhZGVyVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcclxuICAgICAgY2FzZSAnZGF5cyc6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubW9udGhOYW1lc1t0aGlzLmN1cnJlbnRNb250aF19ICR7dGhpcy5jdXJyZW50WWVhcn1gO1xyXG4gICAgICBjYXNlICdtb250aHMnOlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmN1cnJlbnRZZWFyfWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICfQktGL0LHQtdGA0LjRgtC1INCz0L7QtCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hWaWV3KCkge1xyXG4gICAgdGhpcy52aWV3ID0gdGhpcy52aWV3ID09PSAnZGF5cycgPyAnbW9udGhzJyA6IHRoaXMudmlldyA9PT0gJ21vbnRocycgPyAneWVhcnMnIDogJ2RheXMnO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRheXMoKTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXSB7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckRheXNDYWNoZT8ubW9udGggPT09IHRoaXMuY3VycmVudE1vbnRoICYmIHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGU/LnllYXIgPT09IHRoaXMuY3VycmVudFllYXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGUuZGF5cztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgY29uc3QgcHJldk1vbnRoRGF5cyA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCAwKS5nZXREYXRlKCk7XHJcblxyXG4gICAgY29uc3QgZGF5czogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXSA9IFtdO1xyXG4gICAgY29uc3QgcHJldkRheXNDb3VudCA9IDI7XHJcbiAgICBjb25zdCBwcmV2TW9udGggPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMCA/IDExIDogdGhpcy5jdXJyZW50TW9udGggLSAxO1xyXG4gICAgY29uc3QgcHJldlllYXIgPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMCA/IHRoaXMuY3VycmVudFllYXIgLSAxIDogdGhpcy5jdXJyZW50WWVhcjtcclxuICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoID09PSAxMSA/IDAgOiB0aGlzLmN1cnJlbnRNb250aCArIDE7XHJcbiAgICBjb25zdCBuZXh0WWVhciA9IHRoaXMuY3VycmVudE1vbnRoID09PSAxMSA/IHRoaXMuY3VycmVudFllYXIgKyAxIDogdGhpcy5jdXJyZW50WWVhcjtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZEYXlzQ291bnQ7IGkrKykge1xyXG4gICAgICBkYXlzLnB1c2goeyBkYXk6IHByZXZNb250aERheXMgLSBwcmV2RGF5c0NvdW50ICsgMSArIGksIG1vbnRoOiBwcmV2TW9udGgsIHllYXI6IHByZXZZZWFyIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGRheXNJbk1vbnRoOyBpKyspIHtcclxuICAgICAgZGF5cy5wdXNoKHsgZGF5OiBpLCBtb250aDogdGhpcy5jdXJyZW50TW9udGgsIHllYXI6IHRoaXMuY3VycmVudFllYXIgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVtYWluaW5nRGF5cyA9IDM1IC0gZGF5cy5sZW5ndGg7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcmVtYWluaW5nRGF5czsgaSsrKSB7XHJcbiAgICAgIGRheXMucHVzaCh7IGRheTogaSwgbW9udGg6IG5leHRNb250aCwgeWVhcjogbmV4dFllYXIgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhckRheXNDYWNoZSA9IHsgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoLCB5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyLCBkYXlzIH07XHJcbiAgICByZXR1cm4gZGF5cztcclxuICB9XHJcblxyXG4gIGdldFllYXJzKCk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGNlbnRlclllYXIgPSB0aGlzLmN1cnJlbnRZZWFyO1xyXG4gICAgY29uc3Qgc3RhcnRZZWFyID0gY2VudGVyWWVhciAtIDU7XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiBzdGFydFllYXIgKyBpKTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZGF5OiB7IGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIgfSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGRheS5kYXkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxyXG4gICAgICBkYXkubW9udGggPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgJiZcclxuICAgICAgZGF5LnllYXIgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc01vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRNb250aCgpID09PSBtb250aCAmJiB0aGlzLnNlbGVjdGVkRGF0ZT8uZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy5jdXJyZW50WWVhcjtcclxuICB9XHJcblxyXG4gIGlzWWVhclNlbGVjdGVkKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRGdWxsWWVhcigpID09PSB5ZWFyO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlRW5hYmxlZChkYXk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF5LnllYXIsIGRheS5tb250aCwgZGF5LmRheSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoIXRoaXMuX21pbkRhdGUgfHwgZGF0ZSA+PSB0aGlzLl9taW5EYXRlKSAmJlxyXG4gICAgICAoIXRoaXMuX21heERhdGUgfHwgZGF0ZSA8PSB0aGlzLl9tYXhEYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzTW9udGhEaXNhYmxlZChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21pbkRhdGUgJiYgIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCBtb250aCwgMSk7XHJcbiAgICBjb25zdCBlbmRPZk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgbW9udGggKyAxLCAwKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoISF0aGlzLl9taW5EYXRlICYmICFpc05hTih0aGlzLl9taW5EYXRlLmdldFRpbWUoKSkgJiYgZW5kT2ZNb250aCA8IHRoaXMuX21pbkRhdGUpIHx8XHJcbiAgICAgICghIXRoaXMuX21heERhdGUgJiYgIWlzTmFOKHRoaXMuX21heERhdGUuZ2V0VGltZSgpKSAmJiBzdGFydE9mTW9udGggPiB0aGlzLl9tYXhEYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzWWVhckRpc2FibGVkKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9taW5EYXRlICYmICF0aGlzLl9tYXhEYXRlKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgbWluWWVhciA9IHRoaXMuX21pbkRhdGUgJiYgIWlzTmFOKHRoaXMuX21pbkRhdGUuZ2V0VGltZSgpKSA/IHRoaXMuX21pbkRhdGUuZ2V0RnVsbFllYXIoKSA6IG51bGw7XHJcbiAgICBjb25zdCBtYXhZZWFyID0gdGhpcy5fbWF4RGF0ZSAmJiAhaXNOYU4odGhpcy5fbWF4RGF0ZS5nZXRUaW1lKCkpID8gdGhpcy5fbWF4RGF0ZS5nZXRGdWxsWWVhcigpIDogbnVsbDtcclxuXHJcbiAgICByZXR1cm4gKG1pblllYXIgIT09IG51bGwgJiYgeWVhciA8IG1pblllYXIpIHx8IChtYXhZZWFyICE9PSBudWxsICYmIHllYXIgPiBtYXhZZWFyKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdERhdGUoZGF5OiB7IGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIgfSkge1xyXG4gICAgaWYgKCF0aGlzLmlzRGF0ZUVuYWJsZWQoZGF5KSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXkueWVhciwgZGF5Lm1vbnRoLCBkYXkuZGF5KTtcclxuXHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGRhdGUpO1xyXG5cclxuICAgIGNvbnN0IG5lZWRzVXBkYXRlID0gZGF5Lm1vbnRoICE9PSB0aGlzLmN1cnJlbnRNb250aCB8fCBkYXkueWVhciAhPT0gdGhpcy5jdXJyZW50WWVhcjtcclxuXHJcbiAgICBpZiAobmVlZHNVcGRhdGUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBkYXkubW9udGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhciA9IGRheS55ZWFyO1xyXG5cclxuICAgICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE1vbnRoKG1vbnRoOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmlzTW9udGhEaXNhYmxlZChtb250aCkpIHJldHVybjtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBtb250aDtcclxuICAgICAgdGhpcy52aWV3ID0gJ2RheXMnO1xyXG5cclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmlzWWVhckRpc2FibGVkKHllYXIpKSByZXR1cm47XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFllYXIgPSB5ZWFyO1xyXG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcclxuXHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNoYW5nZU1vbnRoKG9mZnNldDogbnVtYmVyKSB7XHJcbiAgICBsZXQgbmV3TW9udGggPSB0aGlzLmN1cnJlbnRNb250aCArIG9mZnNldDtcclxuICAgIGxldCBuZXdZZWFyID0gdGhpcy5jdXJyZW50WWVhcjtcclxuXHJcbiAgICBpZiAobmV3TW9udGggPCAwKSB7XHJcbiAgICAgIG5ld01vbnRoID0gMTE7XHJcbiAgICAgIG5ld1llYXItLTtcclxuICAgIH0gZWxzZSBpZiAobmV3TW9udGggPiAxMSkge1xyXG4gICAgICBuZXdNb250aCA9IDA7XHJcbiAgICAgIG5ld1llYXIrKztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IG5ld01vbnRoO1xyXG4gICAgdGhpcy5jdXJyZW50WWVhciA9IG5ld1llYXI7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVllYXJSYW5nZShvZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50WWVhciArPSBvZmZzZXQgKiAxMjtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzUHJldmlvdXNNb250aERpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9taW5EYXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDApIDwgdGhpcy5fbWluRGF0ZTtcclxuICB9XHJcblxyXG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCArIDEsIDEpID4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIGlzUHJldmlvdXNZZWFyUmFuZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnMoKVswXSA8PSB0aGlzLl9taW5EYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBpc05leHRZZWFyUmFuZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnMoKVt0aGlzLmdldFllYXJzKCkubGVuZ3RoIC0gMV0gPj0gdGhpcy5fbWF4RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJcIj5cclxuICAgIEBpZiAodmlldyA9PT0gJ2RheXMnKSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCIgKGNsaWNrKT1cImNoYW5nZU1vbnRoKC0xKVwiIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAodmlldyA9PT0gJ3llYXJzJykge1xyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWhlYWRlcl9fY2hldnJvblwiIChjbGljayk9XCJjaGFuZ2VZZWFyUmFuZ2UoLTEpXCIgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNZZWFyUmFuZ2VEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19idXR0b25cIiAoY2xpY2spPVwic3dpdGNoVmlldygpXCI+XHJcbiAgICAgIHt7IGhlYWRlclRleHQgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIEBpZiAodmlldyA9PT0gJ2RheXMnKSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCIgKGNsaWNrKT1cImNoYW5nZU1vbnRoKDEpXCIgW2Rpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jaGV2cm9uLXJpZ2h0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICh2aWV3ID09PSAneWVhcnMnKSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCIgKGNsaWNrKT1cImNoYW5nZVllYXJSYW5nZSgxKVwiIFtkaXNhYmxlZF09XCJpc05leHRZZWFyUmFuZ2VEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tcmlnaHQgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5XCI+XHJcbiAgICBAc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgIEBjYXNlICgneWVhcnMnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkLS15ZWFyc1wiPlxyXG4gICAgICAgICAgQGZvciAoeWVhciBvZiBnZXRZZWFycygpOyBsZXQgaWR4ID0gJGluZGV4OyB0cmFjayBpZHgpIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWRfX2l0ZW0gbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWRfX2l0ZW0tLXllYXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1llYXJTZWxlY3RlZCh5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzWWVhckRpc2FibGVkKHllYXIpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cIiFpc1llYXJEaXNhYmxlZCh5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgeWVhciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRocycpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQgbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQtLW1vbnRoc1wiPlxyXG4gICAgICAgICAgQGZvciAobW9udGggb2YgbW9udGhzOyB0cmFjayBtb250aCkge1xyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbSBtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbS0tbW9udGhcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc01vbnRoU2VsZWN0ZWQobW9udGgpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNNb250aERpc2FibGVkKG1vbnRoKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCIhaXNNb250aERpc2FibGVkKG1vbnRoKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vbnRoKG1vbnRoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBtb250aE5hbWVzW21vbnRoXSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAZGVmYXVsdCB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkLS1kYXlzXCI+XHJcbiAgICAgICAgICBAZm9yIChkYXkgb2YgZGF5c09mV2VlazsgdHJhY2sgZGF5KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9fbGFiZWxcIj57eyBkYXkgfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAZm9yIChkYXkgb2YgZ2V0Q2FsZW5kYXJEYXlzKCk7IHRyYWNrIGRheSkge1xyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbSBtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbS0tZGF5XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXkpXCJcclxuICAgICAgICAgICAgICBbY2xhc3Mub3RoZXItbW9udGhdPVwiZGF5Lm1vbnRoICE9PSBjdXJyZW50TW9udGhcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNEYXRlRW5hYmxlZChkYXkpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cImlzRGF0ZUVuYWJsZWQoZGF5KVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF5KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXkuZGF5IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2NvbXBvbmVudHMvZGF0ZS1jYWxlbmRhci9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWRhdGUvY29tcG9uZW50cy9kYXRlLWNhbGVuZGFyL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFRdEUsTUFBTSxPQUFPLHFCQUFxQjtJQXFCWjtJQXBCWCxZQUFZLEdBQWdCLElBQUksQ0FBQztJQUNoQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN4QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUUzQyxZQUFZLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QyxXQUFXLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQyxJQUFJLEdBQWdDLE1BQU0sQ0FBQztJQUNsQyxVQUFVLEdBQWE7UUFDOUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztLQUM3RCxD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Q0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwRixDQUFDO3dHQS9QVSxxQkFBcUI7NEZBQXJCLHFCQUFxQixzTUNqQmxDLHkzR0FzRkE7OzRGRHJFYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07c0ZBR3RDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBNkJILE9BQU87c0JBRFYsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbGVhbkRhdGUsIGlzRGF0ZUluUmFuZ2UgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2RhdGUtaGVscGVycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1kYXRlLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBjdXJyZW50WWVhcjogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gIHZpZXc6ICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJyA9ICdkYXlzJztcclxuICByZWFkb25seSBtb250aE5hbWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICfQr9C90LLQsNGA0YwnLCAn0KTQtdCy0YDQsNC70YwnLCAn0JzQsNGA0YInLCAn0JDQv9GA0LXQu9GMJywgJ9Cc0LDQuScsICfQmNGO0L3RjCcsXHJcbiAgICAn0JjRjtC70YwnLCAn0JDQstCz0YPRgdGCJywgJ9Ch0LXQvdGC0Y/QsdGA0YwnLCAn0J7QutGC0Y/QsdGA0YwnLCAn0J3QvtGP0LHRgNGMJywgJ9CU0LXQutCw0LHRgNGMJ1xyXG4gIF07XHJcbiAgcmVhZG9ubHkgZGF5c09mV2Vlazogc3RyaW5nW10gPSBbJ9Cf0J0nLCAn0JLQoicsICfQodCgJywgJ9Cn0KInLCAn0J/QoicsICfQodCRJywgJ9CS0KEnXTtcclxuICByZWFkb25seSBtb250aHM6IG51bWJlcltdID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV07XHJcblxyXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbWluRGF0ZVN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbWF4RGF0ZVN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjYWxlbmRhckRheXNDYWNoZTogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXI7IGRheXM6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9W10gfSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZURhdGVCb3VuZHMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1pbkRhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9taW5EYXRlU3RyICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9taW5EYXRlU3RyID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0ZUJvdW5kcygpO1xyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtaW5EYXRlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGVTdHI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fbWF4RGF0ZVN0ciAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5fbWF4RGF0ZVN0ciA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGVCb3VuZHMoKTtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4RGF0ZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhEYXRlU3RyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRlQm91bmRzKCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMuX21pbkRhdGVTdHIgPyBjbGVhbkRhdGUodGhpcy5fbWluRGF0ZVN0cikgOiBudWxsO1xyXG4gICAgdGhpcy5fbWF4RGF0ZSA9IHRoaXMuX21heERhdGVTdHIgPyBjbGVhbkRhdGUodGhpcy5fbWF4RGF0ZVN0cikgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlYWRlclRleHQoKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGhpcy52aWV3KSB7XHJcbiAgICAgIGNhc2UgJ2RheXMnOlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLm1vbnRoTmFtZXNbdGhpcy5jdXJyZW50TW9udGhdfSAke3RoaXMuY3VycmVudFllYXJ9YDtcclxuICAgICAgY2FzZSAnbW9udGhzJzpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW50WWVhcn1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAn0JLRi9Cx0LXRgNC40YLQtSDQs9C+0LQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3dpdGNoVmlldygpIHtcclxuICAgIHRoaXMudmlldyA9IHRoaXMudmlldyA9PT0gJ2RheXMnID8gJ21vbnRocycgOiB0aGlzLnZpZXcgPT09ICdtb250aHMnID8gJ3llYXJzJyA6ICdkYXlzJztcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2FsZW5kYXJEYXlzKCk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9W10ge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGU/Lm1vbnRoID09PSB0aGlzLmN1cnJlbnRNb250aCAmJiB0aGlzLmNhbGVuZGFyRGF5c0NhY2hlPy55ZWFyID09PSB0aGlzLmN1cnJlbnRZZWFyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNhbGVuZGFyRGF5c0NhY2hlLmRheXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0J7Qv9GA0LXQtNC10LvRj9C10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LTQvdC10Lkg0LIg0YLQtdC60YPRidC10LwsINC/0YDQtdC00YvQtNGD0YnQtdC8INC4INGB0LvQtdC00YPRjtGJ0LXQvCDQvNC10YHRj9GG0LDRhVxyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICAgIGNvbnN0IHByZXZNb250aERheXMgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMCkuZ2V0RGF0ZSgpO1xyXG5cclxuICAgIGNvbnN0IGRheXM6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9W10gPSBbXTtcclxuXHJcbiAgICAvLyDQktGL0YfQuNGB0LvRj9C10LwsINGB0LrQvtC70YzQutC+INC00L3QtdC5INCy0LfRj9GC0Ywg0LjQtyDQv9GA0LXQtNGL0LTRg9GJ0LXQs9C+INC80LXRgdGP0YbQsCwg0YfRgtC+0LHRiyDQvdC10LTQtdC70Y8g0L3QsNGH0LjQvdCw0LvQsNGB0Ywg0YEg0L/QvtC90LXQtNC10LvRjNC90LjQutCwXHJcbiAgICBjb25zdCBmaXJzdERheUpTID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDEpLmdldERheSgpOyAvLyAwID0g0LLQvtGB0LrRgNC10YHQtdC90YzQtSwgMSA9INC/0L7QvdC10LTQtdC70YzQvdC40LosIC4uLlxyXG4gICAgY29uc3QgcHJldkRheXNDb3VudCA9IChmaXJzdERheUpTICsgNikgJSA3OyAvLyAwLi42LCDQs9C00LUgMCDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4gMS3QtSDRh9C40YHQu9C+INGD0LbQtSDQv9C+0L3QtdC00LXQu9GM0L3QuNC6XHJcblxyXG4gICAgY29uc3QgcHJldk1vbnRoID0gdGhpcy5jdXJyZW50TW9udGggPT09IDAgPyAxMSA6IHRoaXMuY3VycmVudE1vbnRoIC0gMTtcclxuICAgIGNvbnN0IHByZXZZZWFyID0gdGhpcy5jdXJyZW50TW9udGggPT09IDAgPyB0aGlzLmN1cnJlbnRZZWFyIC0gMSA6IHRoaXMuY3VycmVudFllYXI7XHJcbiAgICBjb25zdCBuZXh0TW9udGggPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEgPyAwIDogdGhpcy5jdXJyZW50TW9udGggKyAxO1xyXG4gICAgY29uc3QgbmV4dFllYXIgPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEgPyB0aGlzLmN1cnJlbnRZZWFyICsgMSA6IHRoaXMuY3VycmVudFllYXI7XHJcblxyXG4gICAgLy8g0J/RgNC10LTRi9C00YPRidC40LUg0LTQvdC4ICjQtdGB0LvQuCDQvdGD0LbQvdGLKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2RGF5c0NvdW50OyBpKyspIHtcclxuICAgICAgZGF5cy5wdXNoKHsgZGF5OiBwcmV2TW9udGhEYXlzIC0gcHJldkRheXNDb3VudCArIDEgKyBpLCBtb250aDogcHJldk1vbnRoLCB5ZWFyOiBwcmV2WWVhciB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDQlNC90Lgg0YLQtdC60YPRidC10LPQviDQvNC10YHRj9GG0LBcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGRheXNJbk1vbnRoOyBpKyspIHtcclxuICAgICAgZGF5cy5wdXNoKHsgZGF5OiBpLCBtb250aDogdGhpcy5jdXJyZW50TW9udGgsIHllYXI6IHRoaXMuY3VycmVudFllYXIgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0JTQvtC30LDQv9C+0LvQvdGP0LXQvCDQtNC+INC/0L7Qu9C90L7Qs9C+INC60L7Qu9C40YfQtdGB0YLQstCwINGP0YfQtdC10LogKDYg0L3QtdC00LXQu9GMINC/0L4gNyDQtNC90LXQuSA9IDQyKVxyXG4gICAgY29uc3QgdG90YWxDZWxscyA9IDQyO1xyXG4gICAgY29uc3QgcmVtYWluaW5nRGF5cyA9IHRvdGFsQ2VsbHMgLSBkYXlzLmxlbmd0aDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSByZW1haW5pbmdEYXlzOyBpKyspIHtcclxuICAgICAgZGF5cy5wdXNoKHsgZGF5OiBpLCBtb250aDogbmV4dE1vbnRoLCB5ZWFyOiBuZXh0WWVhciB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyRGF5c0NhY2hlID0geyBtb250aDogdGhpcy5jdXJyZW50TW9udGgsIHllYXI6IHRoaXMuY3VycmVudFllYXIsIGRheXMgfTtcclxuICAgIHJldHVybiBkYXlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0WWVhcnMoKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgY2VudGVyWWVhciA9IHRoaXMuY3VycmVudFllYXI7XHJcbiAgICBjb25zdCBzdGFydFllYXIgPSBjZW50ZXJZZWFyIC0gNTtcclxuXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IHN0YXJ0WWVhciArIGkpO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChkYXk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF5LmRheSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpICYmXHJcbiAgICAgIGRheS5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSAmJlxyXG4gICAgICBkYXkueWVhciA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzTW9udGhTZWxlY3RlZChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGU/LmdldE1vbnRoKCkgPT09IG1vbnRoICYmIHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRGdWxsWWVhcigpID09PSB0aGlzLmN1cnJlbnRZZWFyO1xyXG4gIH1cclxuXHJcbiAgaXNZZWFyU2VsZWN0ZWQoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKCkgPT09IHllYXI7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVFbmFibGVkKGRheTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXkueWVhciwgZGF5Lm1vbnRoLCBkYXkuZGF5KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICghdGhpcy5fbWluRGF0ZSB8fCBkYXRlID49IHRoaXMuX21pbkRhdGUpICYmXHJcbiAgICAgICghdGhpcy5fbWF4RGF0ZSB8fCBkYXRlIDw9IHRoaXMuX21heERhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNNb250aERpc2FibGVkKG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSAmJiAhdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIG1vbnRoLCAxKTtcclxuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCBtb250aCArIDEsIDApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICghIXRoaXMuX21pbkRhdGUgJiYgIWlzTmFOKHRoaXMuX21pbkRhdGUuZ2V0VGltZSgpKSAmJiBlbmRPZk1vbnRoIDwgdGhpcy5fbWluRGF0ZSkgfHxcclxuICAgICAgKCEhdGhpcy5fbWF4RGF0ZSAmJiAhaXNOYU4odGhpcy5fbWF4RGF0ZS5nZXRUaW1lKCkpICYmIHN0YXJ0T2ZNb250aCA+IHRoaXMuX21heERhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNZZWFyRGlzYWJsZWQoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21pbkRhdGUgJiYgIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBtaW5ZZWFyID0gdGhpcy5fbWluRGF0ZSAmJiAhaXNOYU4odGhpcy5fbWluRGF0ZS5nZXRUaW1lKCkpID8gdGhpcy5fbWluRGF0ZS5nZXRGdWxsWWVhcigpIDogbnVsbDtcclxuICAgIGNvbnN0IG1heFllYXIgPSB0aGlzLl9tYXhEYXRlICYmICFpc05hTih0aGlzLl9tYXhEYXRlLmdldFRpbWUoKSkgPyB0aGlzLl9tYXhEYXRlLmdldEZ1bGxZZWFyKCkgOiBudWxsO1xyXG5cclxuICAgIHJldHVybiAobWluWWVhciAhPT0gbnVsbCAmJiB5ZWFyIDwgbWluWWVhcikgfHwgKG1heFllYXIgIT09IG51bGwgJiYgeWVhciA+IG1heFllYXIpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNEYXRlRW5hYmxlZChkYXkpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRheS55ZWFyLCBkYXkubW9udGgsIGRheS5kYXkpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoZGF0ZSk7XHJcblxyXG4gICAgY29uc3QgbmVlZHNVcGRhdGUgPSBkYXkubW9udGggIT09IHRoaXMuY3VycmVudE1vbnRoIHx8IGRheS55ZWFyICE9PSB0aGlzLmN1cnJlbnRZZWFyO1xyXG5cclxuICAgIGlmIChuZWVkc1VwZGF0ZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRheS5tb250aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF5LnllYXI7XHJcblxyXG4gICAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuaXNNb250aERpc2FibGVkKG1vbnRoKSkgcmV0dXJuO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IG1vbnRoO1xyXG4gICAgICB0aGlzLnZpZXcgPSAnZGF5cyc7XHJcblxyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZWxlY3RZZWFyKHllYXI6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuaXNZZWFyRGlzYWJsZWQoeWVhcikpIHJldHVybjtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHllYXI7XHJcbiAgICAgIHRoaXMudmlldyA9ICdtb250aHMnO1xyXG5cclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlTW9udGgob2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIGxldCBuZXdNb250aCA9IHRoaXMuY3VycmVudE1vbnRoICsgb2Zmc2V0O1xyXG4gICAgbGV0IG5ld1llYXIgPSB0aGlzLmN1cnJlbnRZZWFyO1xyXG5cclxuICAgIGlmIChuZXdNb250aCA8IDApIHtcclxuICAgICAgbmV3TW9udGggPSAxMTtcclxuICAgICAgbmV3WWVhci0tO1xyXG4gICAgfSBlbHNlIGlmIChuZXdNb250aCA+IDExKSB7XHJcbiAgICAgIG5ld01vbnRoID0gMDtcclxuICAgICAgbmV3WWVhcisrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudE1vbnRoID0gbmV3TW9udGg7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyID0gbmV3WWVhcjtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlWWVhclJhbmdlKG9mZnNldDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyICs9IG9mZnNldCAqIDEyO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21pbkRhdGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMCkgPCB0aGlzLl9taW5EYXRlO1xyXG4gIH1cclxuXHJcbiAgaXNOZXh0TW9udGhEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMSkgPiB0aGlzLl9tYXhEYXRlO1xyXG4gIH1cclxuXHJcbiAgaXNQcmV2aW91c1llYXJSYW5nZURpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9taW5EYXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRZZWFycygpWzBdIDw9IHRoaXMuX21pbkRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4gIGlzTmV4dFllYXJSYW5nZURpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9tYXhEYXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRZZWFycygpW3RoaXMuZ2V0WWVhcnMoKS5sZW5ndGggLSAxXSA+PSB0aGlzLl9tYXhEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXJcIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgQGlmICh2aWV3ID09PSAnZGF5cycpIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIiAoY2xpY2spPVwiY2hhbmdlTW9udGgoLTEpXCIgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNNb250aERpc2FibGVkKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1sZWZ0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICh2aWV3ID09PSAneWVhcnMnKSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCIgKGNsaWNrKT1cImNoYW5nZVllYXJSYW5nZSgtMSlcIiBbZGlzYWJsZWRdPVwiaXNQcmV2aW91c1llYXJSYW5nZURpc2FibGVkKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1sZWZ0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2J1dHRvblwiIChjbGljayk9XCJzd2l0Y2hWaWV3KClcIj5cclxuICAgICAge3sgaGVhZGVyVGV4dCB9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgQGlmICh2aWV3ID09PSAnZGF5cycpIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIiAoY2xpY2spPVwiY2hhbmdlTW9udGgoMSlcIiBbZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tcmlnaHQgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKHZpZXcgPT09ICd5ZWFycycpIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIiAoY2xpY2spPVwiY2hhbmdlWWVhclJhbmdlKDEpXCIgW2Rpc2FibGVkXT1cImlzTmV4dFllYXJSYW5nZURpc2FibGVkKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1yaWdodCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlcIj5cclxuICAgIEBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgQGNhc2UgKCd5ZWFycycpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQgbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQtLXllYXJzXCI+XHJcbiAgICAgICAgICBAZm9yICh5ZWFyIG9mIGdldFllYXJzKCk7IGxldCBpZHggPSAkaW5kZXg7IHRyYWNrIGlkeCkge1xyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbSBtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbS0teWVhclwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzWWVhclNlbGVjdGVkKHllYXIpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNZZWFyRGlzYWJsZWQoeWVhcilcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ob3ZlcmFibGVdPVwiIWlzWWVhckRpc2FibGVkKHllYXIpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyB5ZWFyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnbW9udGhzJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZCBtcngtY2FsZW5kYXItYm9keV9fZ3JpZC0tbW9udGhzXCI+XHJcbiAgICAgICAgICBAZm9yIChtb250aCBvZiBtb250aHM7IHRyYWNrIG1vbnRoKSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtLS1tb250aFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzTW9udGhTZWxlY3RlZChtb250aClcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc01vbnRoRGlzYWJsZWQobW9udGgpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cIiFpc01vbnRoRGlzYWJsZWQobW9udGgpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgobW9udGgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IG1vbnRoTmFtZXNbbW9udGhdIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQgbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQtLWRheXNcIj5cclxuICAgICAgICAgIEBmb3IgKGRheSBvZiBkYXlzT2ZXZWVrOyB0cmFjayBkYXkpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19sYWJlbFwiPnt7IGRheSB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBmb3IgKGRheSBvZiBnZXRDYWxlbmRhckRheXMoKTsgdHJhY2sgZGF5KSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtLS1kYXlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheSlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5vdGhlci1tb250aF09XCJkYXkubW9udGggIT09IGN1cnJlbnRNb250aFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0RhdGVFbmFibGVkKGRheSlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ob3ZlcmFibGVdPVwiaXNEYXRlRW5hYmxlZChkYXkpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGRheS5kYXkgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -9682,21 +9682,28 @@ class DateCalendarComponent {
9682
9682
  if (this.calendarDaysCache?.month === this.currentMonth && this.calendarDaysCache?.year === this.currentYear) {
9683
9683
  return this.calendarDaysCache.days;
9684
9684
  }
9685
+ // Определяем количество дней в текущем, предыдущем и следующем месяцах
9685
9686
  const daysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();
9686
9687
  const prevMonthDays = new Date(this.currentYear, this.currentMonth, 0).getDate();
9687
9688
  const days = [];
9688
- const prevDaysCount = 2;
9689
+ // Вычисляем, сколько дней взять из предыдущего месяца, чтобы неделя начиналась с понедельника
9690
+ const firstDayJS = new Date(this.currentYear, this.currentMonth, 1).getDay(); // 0 = воскресенье, 1 = понедельник, ...
9691
+ const prevDaysCount = (firstDayJS + 6) % 7; // 0..6, где 0 означает, что 1-е число уже понедельник
9689
9692
  const prevMonth = this.currentMonth === 0 ? 11 : this.currentMonth - 1;
9690
9693
  const prevYear = this.currentMonth === 0 ? this.currentYear - 1 : this.currentYear;
9691
9694
  const nextMonth = this.currentMonth === 11 ? 0 : this.currentMonth + 1;
9692
9695
  const nextYear = this.currentMonth === 11 ? this.currentYear + 1 : this.currentYear;
9696
+ // Предыдущие дни (если нужны)
9693
9697
  for (let i = 0; i < prevDaysCount; i++) {
9694
9698
  days.push({ day: prevMonthDays - prevDaysCount + 1 + i, month: prevMonth, year: prevYear });
9695
9699
  }
9700
+ // Дни текущего месяца
9696
9701
  for (let i = 1; i <= daysInMonth; i++) {
9697
9702
  days.push({ day: i, month: this.currentMonth, year: this.currentYear });
9698
9703
  }
9699
- const remainingDays = 35 - days.length;
9704
+ // Дозаполняем до полного количества ячеек (6 недель по 7 дней = 42)
9705
+ const totalCells = 42;
9706
+ const remainingDays = totalCells - days.length;
9700
9707
  for (let i = 1; i <= remainingDays; i++) {
9701
9708
  days.push({ day: i, month: nextMonth, year: nextYear });
9702
9709
  }