myrta-ui 1.1.95 → 1.1.97

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.
@@ -13,10 +13,10 @@ export class BreadcrumbsComponent {
13
13
  }
14
14
  }
15
15
  BreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: BreadcrumbsComponent, selector: "mrx-breadcrumbs", inputs: { type: "type", items: "items", item: "item", customClasses: "customClasses" }, ngImport: i0, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
+ BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: BreadcrumbsComponent, selector: "mrx-breadcrumbs", inputs: { type: "type", items: "items", item: "item", customClasses: "customClasses" }, ngImport: i0, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs-link{display:inline-block}.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
18
18
  type: Component,
19
- args: [{ selector: 'mrx-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"] }]
19
+ args: [{ selector: 'mrx-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs-link{display:inline-block}.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"] }]
20
20
  }], propDecorators: { type: [{
21
21
  type: Input
22
22
  }], items: [{
@@ -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: "13.4.0", ngImpor
219
226
  }], maxDate: [{
220
227
  type: Input
221
228
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2NvbXBvbmVudHMvZGF0ZS1jYWxlbmRhci9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWRhdGUvY29tcG9uZW50cy9kYXRlLWNhbGVuZGFyL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFRdkQsTUFBTSxPQUFPLHFCQUFxQjtJQXlCaEMsWUFBb0IsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUF4QnZDLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0MsaUJBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLGdCQUFXLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxTQUFJLEdBQWdDLE1BQU0sQ0FBQztRQUNsQyxlQUFVLEdBQWE7WUFDOUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3BELE1BQU0sRUFBRSxRQUFRLEVB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LEtBQUs7c0JBQWQsTUFBTTtnQkFrQ0gsT0FBTztzQkFEVixLQUFLO2dCQWNGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsZWFuRGF0ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZGF0ZS1oZWxwZXJzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWRhdGUtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGN1cnJlbnRNb250aDogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRNb250aCgpO1xyXG4gIGN1cnJlbnRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xyXG4gIHJlYWRvbmx5IG1vbnRoTmFtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJyxcclxuICAgICfQmNGO0LvRjCcsICfQkNCy0LPRg9GB0YInLCAn0KHQtdC90YLRj9Cx0YDRjCcsICfQntC60YLRj9Cx0YDRjCcsICfQndC+0Y/QsdGA0YwnLCAn0JTQtdC60LDQsdGA0YwnXHJcbiAgXTtcclxuICByZWFkb25seSBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsn0J/QnScsICfQktCiJywgJ9Ch0KAnLCAn0KfQoicsICfQn9CiJywgJ9Ch0JEnLCAn0JLQoSddO1xyXG4gIHJlYWRvbmx5IG1vbnRoczogbnVtYmVyW10gPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXTtcclxuXHJcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9taW5EYXRlU3RyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9tYXhEYXRlU3RyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNhbGVuZGFyRGF5c0NhY2hlOiB7XHJcbiAgICBtb250aDogbnVtYmVyO1xyXG4gICAgeWVhcjogbnVtYmVyO1xyXG4gICAgZGF5czogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXVxyXG4gIH0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVEYXRlQm91bmRzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fbWluRGF0ZVN0ciAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5fbWluRGF0ZVN0ciA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGVCb3VuZHMoKTtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbWluRGF0ZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5EYXRlU3RyO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuX21heERhdGVTdHIgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX21heERhdGVTdHIgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVEYXRlQm91bmRzKCk7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZVN0cjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0ZUJvdW5kcygpIHtcclxuICAgIHRoaXMuX21pbkRhdGUgPSB0aGlzLl9taW5EYXRlU3RyID8gY2xlYW5EYXRlKHRoaXMuX21pbkRhdGVTdHIpIDogbnVsbDtcclxuICAgIHRoaXMuX21heERhdGUgPSB0aGlzLl9tYXhEYXRlU3RyID8gY2xlYW5EYXRlKHRoaXMuX21heERhdGVTdHIpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBoZWFkZXJUZXh0KCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRoaXMudmlldykge1xyXG4gICAgICBjYXNlICdkYXlzJzpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5tb250aE5hbWVzW3RoaXMuY3VycmVudE1vbnRoXX0gJHt0aGlzLmN1cnJlbnRZZWFyfWA7XHJcbiAgICAgIGNhc2UgJ21vbnRocyc6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY3VycmVudFllYXJ9YDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ9CS0YvQsdC10YDQuNGC0LUg0LPQvtC0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN3aXRjaFZpZXcoKSB7XHJcbiAgICB0aGlzLnZpZXcgPSB0aGlzLnZpZXcgPT09ICdkYXlzJyA/ICdtb250aHMnIDogdGhpcy52aWV3ID09PSAnbW9udGhzJyA/ICd5ZWFycycgOiAnZGF5cyc7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldENhbGVuZGFyRGF5cygpOiB7IGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIgfVtdIHtcclxuICAgIGlmICh0aGlzLmNhbGVuZGFyRGF5c0NhY2hlPy5tb250aCA9PT0gdGhpcy5jdXJyZW50TW9udGggJiYgdGhpcy5jYWxlbmRhckRheXNDYWNoZT8ueWVhciA9PT0gdGhpcy5jdXJyZW50WWVhcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5jYWxlbmRhckRheXNDYWNoZS5kYXlzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBwcmV2TW9udGhEYXlzID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDApLmdldERhdGUoKTtcclxuXHJcbiAgICBjb25zdCBkYXlzOiB7IGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIgfVtdID0gW107XHJcbiAgICBjb25zdCBwcmV2RGF5c0NvdW50ID0gMjtcclxuICAgIGNvbnN0IHByZXZNb250aCA9IHRoaXMuY3VycmVudE1vbnRoID09PSAwID8gMTEgOiB0aGlzLmN1cnJlbnRNb250aCAtIDE7XHJcbiAgICBjb25zdCBwcmV2WWVhciA9IHRoaXMuY3VycmVudE1vbnRoID09PSAwID8gdGhpcy5jdXJyZW50WWVhciAtIDEgOiB0aGlzLmN1cnJlbnRZZWFyO1xyXG4gICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGggPT09IDExID8gMCA6IHRoaXMuY3VycmVudE1vbnRoICsgMTtcclxuICAgIGNvbnN0IG5leHRZZWFyID0gdGhpcy5jdXJyZW50TW9udGggPT09IDExID8gdGhpcy5jdXJyZW50WWVhciArIDEgOiB0aGlzLmN1cnJlbnRZZWFyO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldkRheXNDb3VudDsgaSsrKSB7XHJcbiAgICAgIGRheXMucHVzaCh7ZGF5OiBwcmV2TW9udGhEYXlzIC0gcHJldkRheXNDb3VudCArIDEgKyBpLCBtb250aDogcHJldk1vbnRoLCB5ZWFyOiBwcmV2WWVhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGRheXNJbk1vbnRoOyBpKyspIHtcclxuICAgICAgZGF5cy5wdXNoKHtkYXk6IGksIG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aCwgeWVhcjogdGhpcy5jdXJyZW50WWVhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlbWFpbmluZ0RheXMgPSAzNSAtIGRheXMubGVuZ3RoO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHJlbWFpbmluZ0RheXM7IGkrKykge1xyXG4gICAgICBkYXlzLnB1c2goe2RheTogaSwgbW9udGg6IG5leHRNb250aCwgeWVhcjogbmV4dFllYXJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyRGF5c0NhY2hlID0ge21vbnRoOiB0aGlzLmN1cnJlbnRNb250aCwgeWVhcjogdGhpcy5jdXJyZW50WWVhciwgZGF5c307XHJcbiAgICByZXR1cm4gZGF5cztcclxuICB9XHJcblxyXG4gIGdldFllYXJzKCk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGNlbnRlclllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZT8uZ2V0RnVsbFllYXIoKSA/PyB0aGlzLmN1cnJlbnRZZWFyO1xyXG4gICAgY29uc3Qgc3RhcnRZZWFyID0gY2VudGVyWWVhciAtIDU7XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogMTJ9LCAoXywgaSkgPT4gc3RhcnRZZWFyICsgaSk7XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkKGRheTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCkgJiZcclxuICAgICAgZGF5Lm1vbnRoID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXHJcbiAgICAgIGRheS55ZWFyID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNNb250aFNlbGVjdGVkKG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZT8uZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgdGhpcy5zZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKCkgPT09IHRoaXMuY3VycmVudFllYXI7XHJcbiAgfVxyXG5cclxuICBpc1llYXJTZWxlY3RlZCh5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZT8uZ2V0RnVsbFllYXIoKSA9PT0geWVhcjtcclxuICB9XHJcblxyXG4gIGlzRGF0ZUVuYWJsZWQoZGF5OiB7IGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIgfSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRheS55ZWFyLCBkYXkubW9udGgsIGRheS5kYXkpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKCF0aGlzLl9taW5EYXRlIHx8IGRhdGUgPj0gdGhpcy5fbWluRGF0ZSkgJiZcclxuICAgICAgKCF0aGlzLl9tYXhEYXRlIHx8IGRhdGUgPD0gdGhpcy5fbWF4RGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc01vbnRoRGlzYWJsZWQobW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9taW5EYXRlICYmICF0aGlzLl9tYXhEYXRlKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3QgZW5kT2ZNb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIG1vbnRoICsgMSwgMCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgKCEhdGhpcy5fbWluRGF0ZSAmJiAhaXNOYU4odGhpcy5fbWluRGF0ZS5nZXRUaW1lKCkpICYmIGVuZE9mTW9udGggPCB0aGlzLl9taW5EYXRlKSB8fFxyXG4gICAgICAoISF0aGlzLl9tYXhEYXRlICYmICFpc05hTih0aGlzLl9tYXhEYXRlLmdldFRpbWUoKSkgJiYgc3RhcnRPZk1vbnRoID4gdGhpcy5fbWF4RGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc1llYXJEaXNhYmxlZCh5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSAmJiAhdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IG1pblllYXIgPSB0aGlzLl9taW5EYXRlICYmICFpc05hTih0aGlzLl9taW5EYXRlLmdldFRpbWUoKSkgPyB0aGlzLl9taW5EYXRlLmdldEZ1bGxZZWFyKCkgOiBudWxsO1xyXG4gICAgY29uc3QgbWF4WWVhciA9IHRoaXMuX21heERhdGUgJiYgIWlzTmFOKHRoaXMuX21heERhdGUuZ2V0VGltZSgpKSA/IHRoaXMuX21heERhdGUuZ2V0RnVsbFllYXIoKSA6IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIChtaW5ZZWFyICE9PSBudWxsICYmIHllYXIgPCBtaW5ZZWFyKSB8fCAobWF4WWVhciAhPT0gbnVsbCAmJiB5ZWFyID4gbWF4WWVhcik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3REYXRlKGRheTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH0pIHtcclxuICAgIGlmICghdGhpcy5pc0RhdGVFbmFibGVkKGRheSkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF5LnllYXIsIGRheS5tb250aCwgZGF5LmRheSk7XHJcblxyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChkYXRlKTtcclxuXHJcbiAgICBjb25zdCBuZWVkc1VwZGF0ZSA9IGRheS5tb250aCAhPT0gdGhpcy5jdXJyZW50TW9udGggfHwgZGF5LnllYXIgIT09IHRoaXMuY3VycmVudFllYXI7XHJcblxyXG4gICAgaWYgKG5lZWRzVXBkYXRlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZGF5Lm1vbnRoO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFllYXIgPSBkYXkueWVhcjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuaXNNb250aERpc2FibGVkKG1vbnRoKSkgcmV0dXJuO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IG1vbnRoO1xyXG4gICAgICB0aGlzLnZpZXcgPSAnZGF5cyc7XHJcblxyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmlzWWVhckRpc2FibGVkKHllYXIpKSByZXR1cm47XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFllYXIgPSB5ZWFyO1xyXG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcclxuXHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VNb250aChvZmZzZXQ6IG51bWJlcikge1xyXG4gICAgbGV0IG5ld01vbnRoID0gdGhpcy5jdXJyZW50TW9udGggKyBvZmZzZXQ7XHJcbiAgICBsZXQgbmV3WWVhciA9IHRoaXMuY3VycmVudFllYXI7XHJcblxyXG4gICAgaWYgKG5ld01vbnRoIDwgMCkge1xyXG4gICAgICBuZXdNb250aCA9IDExO1xyXG4gICAgICBuZXdZZWFyLS07XHJcbiAgICB9IGVsc2UgaWYgKG5ld01vbnRoID4gMTEpIHtcclxuICAgICAgbmV3TW9udGggPSAwO1xyXG4gICAgICBuZXdZZWFyKys7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSBuZXdNb250aDtcclxuICAgIHRoaXMuY3VycmVudFllYXIgPSBuZXdZZWFyO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VZZWFyUmFuZ2Uob2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFllYXIgKz0gb2Zmc2V0ICogMTI7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGlzUHJldmlvdXNNb250aERpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9taW5EYXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDApIDwgdGhpcy5fbWluRGF0ZTtcclxuICB9XHJcblxyXG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCArIDEsIDEpID4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIGlzUHJldmlvdXNZZWFyUmFuZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnMoKVswXSA8PSB0aGlzLl9taW5EYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBpc05leHRZZWFyUmFuZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnMoKVt0aGlzLmdldFllYXJzKCkubGVuZ3RoIC0gMV0gPj0gdGhpcy5fbWF4RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJ2aWV3ID09PSAnZGF5cydcIlxyXG4gICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb250aCgtMSlcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1sZWZ0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJ2aWV3ID09PSAneWVhcnMnXCJcclxuICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNZZWFyUmFuZ2VEaXNhYmxlZCgpXCJcclxuICAgICAgKGNsaWNrKT1cImNoYW5nZVllYXJSYW5nZSgtMSlcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1sZWZ0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19idXR0b25cIiAoY2xpY2spPVwic3dpdGNoVmlldygpXCI+XHJcbiAgICAgIHt7IGhlYWRlclRleHQgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJ2aWV3ID09PSAnZGF5cydcIlxyXG4gICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZCgpXCJcclxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vbnRoKDEpXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tcmlnaHQgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInZpZXcgPT09ICd5ZWFycydcIlxyXG4gICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1oZWFkZXJfX2NoZXZyb25cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNOZXh0WWVhclJhbmdlRGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VZZWFyUmFuZ2UoMSlcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1yaWdodCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5XCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid5ZWFycydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQgbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQtLXllYXJzXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIGdldFllYXJzKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtLS15ZWFyXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzWWVhclNlbGVjdGVkKHllYXIpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzWWVhckRpc2FibGVkKHllYXIpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCIhaXNZZWFyRGlzYWJsZWQoeWVhcilcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHllYXIgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aHMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkLS1tb250aHNcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWRfX2l0ZW0gbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWRfX2l0ZW0tLW1vbnRoXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzTW9udGhTZWxlY3RlZChtb250aClcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNNb250aERpc2FibGVkKG1vbnRoKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ob3ZlcmFibGVdPVwiIWlzTW9udGhEaXNhYmxlZChtb250aClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgobW9udGgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgbW9udGhOYW1lc1ttb250aF0gfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQgbXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWQtLWRheXNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrXCIgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9fbGFiZWxcIj5cclxuICAgICAgICAgICAge3sgZGF5IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZ2V0Q2FsZW5kYXJEYXlzKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtLS1kYXlcIlxyXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXkpXCJcclxuICAgICAgICAgICAgW2NsYXNzLm90aGVyLW1vbnRoXT1cImRheS5tb250aCAhPT0gY3VycmVudE1vbnRoXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0RhdGVFbmFibGVkKGRheSlcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cImlzRGF0ZUVuYWJsZWQoZGF5KVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkYXkuZGF5IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2NvbXBvbmVudHMvZGF0ZS1jYWxlbmRhci9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWRhdGUvY29tcG9uZW50cy9kYXRlLWNhbGVuZGFyL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFRdkQsTUFBTSxPQUFPLHFCQUFxQjtJQXlCaEMsWUFBb0IsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUF4QnZDLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0MsaUJBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLGdCQUFXLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxTQUFJLEdBQWdDLE1BQU0sQ0FBQztRQUNsQyxlQUFVLEdBQWE7WUFDOUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztTQUM3RCxDQUFDO1FBQ08sZUFBVSxHQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsV0FBTSxHQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUzRCxhQUFRLEdBQWdCLElBQUksQ0FBQztRQUM3QixhQUFRLEdBQWdCLElBQUksQ0FBQztRQUM3QixnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLHNCQUFpQixHQUlkLElBQUksQ0FBQztJQUdoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLEtBQW9CO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLEtBQW9CO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLEtBQUssTUFBTTtnQkFDVCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JFLEtBQUssUUFBUTtnQkFDWCxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CO2dCQUNFLE9BQU8sY0FBYyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN4RixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzVHLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztTQUNwQztRQUVELHVFQUF1RTtRQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25GLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqRixNQUFNLElBQUksR0FBbUQsRUFBRSxDQUFDO1FBRWhFLDhGQUE4RjtRQUM5RixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7UUFDdEgsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0RBQXNEO1FBRWxHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEYsOEJBQThCO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM3RjtRQUVELHNCQUFzQjtRQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN6RTtRQUVELG9FQUFvRTtRQUNwRSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxhQUFhLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4RSxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWlEO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXJDLE9BQU8sQ0FDTCxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDMUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFHLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsR0FBaUQ7UUFDN0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsRixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNyRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFdEcsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFpRDtRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPO1FBRXJDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyRixJQUFJLFdBQVcsRUFBRTtZQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBRTVCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUV4QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFFbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUV0QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7WUFFckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUMxQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRS9CLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtZQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDthQUFNLElBQUksUUFBUSxHQUFHLEVBQUUsRUFBRTtZQUN4QixRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxRSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlFLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwRixDQUFDOztrSEFwUVUscUJBQXFCO3NHQUFyQixxQkFBcUIsc01DakJsQyx1K0dBaUdBOzJGRGhGYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07d0dBR3RDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBa0NILE9BQU87c0JBRFYsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbGVhbkRhdGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2RhdGUtaGVscGVycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1kYXRlLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBjdXJyZW50WWVhcjogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gIHZpZXc6ICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJyA9ICdkYXlzJztcclxuICByZWFkb25seSBtb250aE5hbWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICfQr9C90LLQsNGA0YwnLCAn0KTQtdCy0YDQsNC70YwnLCAn0JzQsNGA0YInLCAn0JDQv9GA0LXQu9GMJywgJ9Cc0LDQuScsICfQmNGO0L3RjCcsXHJcbiAgICAn0JjRjtC70YwnLCAn0JDQstCz0YPRgdGCJywgJ9Ch0LXQvdGC0Y/QsdGA0YwnLCAn0J7QutGC0Y/QsdGA0YwnLCAn0J3QvtGP0LHRgNGMJywgJ9CU0LXQutCw0LHRgNGMJ1xyXG4gIF07XHJcbiAgcmVhZG9ubHkgZGF5c09mV2Vlazogc3RyaW5nW10gPSBbJ9Cf0J0nLCAn0JLQoicsICfQodCgJywgJ9Cn0KInLCAn0J/QoicsICfQodCRJywgJ9CS0KEnXTtcclxuICByZWFkb25seSBtb250aHM6IG51bWJlcltdID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV07XHJcblxyXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbWluRGF0ZVN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbWF4RGF0ZVN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjYWxlbmRhckRheXNDYWNoZToge1xyXG4gICAgbW9udGg6IG51bWJlcjtcclxuICAgIHllYXI6IG51bWJlcjtcclxuICAgIGRheXM6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9W11cclxuICB9IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRGF0ZUJvdW5kcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWluRGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuX21pbkRhdGVTdHIgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX21pbkRhdGVTdHIgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVEYXRlQm91bmRzKCk7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbkRhdGUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZVN0cjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9tYXhEYXRlU3RyICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9tYXhEYXRlU3RyID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0ZUJvdW5kcygpO1xyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtYXhEYXRlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heERhdGVTdHI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGVCb3VuZHMoKSB7XHJcbiAgICB0aGlzLl9taW5EYXRlID0gdGhpcy5fbWluRGF0ZVN0ciA/IGNsZWFuRGF0ZSh0aGlzLl9taW5EYXRlU3RyKSA6IG51bGw7XHJcbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5fbWF4RGF0ZVN0ciA/IGNsZWFuRGF0ZSh0aGlzLl9tYXhEYXRlU3RyKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVhZGVyVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcclxuICAgICAgY2FzZSAnZGF5cyc6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubW9udGhOYW1lc1t0aGlzLmN1cnJlbnRNb250aF19ICR7dGhpcy5jdXJyZW50WWVhcn1gO1xyXG4gICAgICBjYXNlICdtb250aHMnOlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmN1cnJlbnRZZWFyfWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICfQktGL0LHQtdGA0LjRgtC1INCz0L7QtCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hWaWV3KCkge1xyXG4gICAgdGhpcy52aWV3ID0gdGhpcy52aWV3ID09PSAnZGF5cycgPyAnbW9udGhzJyA6IHRoaXMudmlldyA9PT0gJ21vbnRocycgPyAneWVhcnMnIDogJ2RheXMnO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRheXMoKTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXSB7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckRheXNDYWNoZT8ubW9udGggPT09IHRoaXMuY3VycmVudE1vbnRoICYmIHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGU/LnllYXIgPT09IHRoaXMuY3VycmVudFllYXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGUuZGF5cztcclxuICAgIH1cclxuXHJcbiAgICAvLyDQntC/0YDQtdC00LXQu9GP0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQtNC90LXQuSDQsiDRgtC10LrRg9GJ0LXQvCwg0L/RgNC10LTRi9C00YPRidC10Lwg0Lgg0YHQu9C10LTRg9GO0YnQtdC8INC80LXRgdGP0YbQsNGFXHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgY29uc3QgcHJldk1vbnRoRGF5cyA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCAwKS5nZXREYXRlKCk7XHJcblxyXG4gICAgY29uc3QgZGF5czogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH1bXSA9IFtdO1xyXG5cclxuICAgIC8vINCS0YvRh9C40YHQu9GP0LXQvCwg0YHQutC+0LvRjNC60L4g0LTQvdC10Lkg0LLQt9GP0YLRjCDQuNC3INC/0YDQtdC00YvQtNGD0YnQtdCz0L4g0LzQtdGB0Y/RhtCwLCDRh9GC0L7QsdGLINC90LXQtNC10LvRjyDQvdCw0YfQuNC90LDQu9Cw0YHRjCDRgSDQv9C+0L3QtdC00LXQu9GM0L3QuNC60LBcclxuICAgIGNvbnN0IGZpcnN0RGF5SlMgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSkuZ2V0RGF5KCk7IC8vIDAgPSDQstC+0YHQutGA0LXRgdC10L3RjNC1LCAxID0g0L/QvtC90LXQtNC10LvRjNC90LjQuiwgLi4uXHJcbiAgICBjb25zdCBwcmV2RGF5c0NvdW50ID0gKGZpcnN0RGF5SlMgKyA2KSAlIDc7IC8vIDAuLjYsINCz0LTQtSAwINC+0LfQvdCw0YfQsNC10YIsINGH0YLQviAxLdC1INGH0LjRgdC70L4g0YPQttC1INC/0L7QvdC10LTQtdC70YzQvdC40LpcclxuXHJcbiAgICBjb25zdCBwcmV2TW9udGggPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMCA/IDExIDogdGhpcy5jdXJyZW50TW9udGggLSAxO1xyXG4gICAgY29uc3QgcHJldlllYXIgPSB0aGlzLmN1cnJlbnRNb250aCA9PT0gMCA/IHRoaXMuY3VycmVudFllYXIgLSAxIDogdGhpcy5jdXJyZW50WWVhcjtcclxuICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoID09PSAxMSA/IDAgOiB0aGlzLmN1cnJlbnRNb250aCArIDE7XHJcbiAgICBjb25zdCBuZXh0WWVhciA9IHRoaXMuY3VycmVudE1vbnRoID09PSAxMSA/IHRoaXMuY3VycmVudFllYXIgKyAxIDogdGhpcy5jdXJyZW50WWVhcjtcclxuXHJcbiAgICAvLyDQn9GA0LXQtNGL0LTRg9GJ0LjQtSDQtNC90LggKNC10YHQu9C4INC90YPQttC90YspXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZEYXlzQ291bnQ7IGkrKykge1xyXG4gICAgICBkYXlzLnB1c2goeyBkYXk6IHByZXZNb250aERheXMgLSBwcmV2RGF5c0NvdW50ICsgMSArIGksIG1vbnRoOiBwcmV2TW9udGgsIHllYXI6IHByZXZZZWFyIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vINCU0L3QuCDRgtC10LrRg9GJ0LXQs9C+INC80LXRgdGP0YbQsFxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5c0luTW9udGg7IGkrKykge1xyXG4gICAgICBkYXlzLnB1c2goeyBkYXk6IGksIG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aCwgeWVhcjogdGhpcy5jdXJyZW50WWVhciB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDQlNC+0LfQsNC/0L7Qu9C90Y/QtdC8INC00L4g0L/QvtC70L3QvtCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0Y/Rh9C10LXQuiAoNiDQvdC10LTQtdC70Ywg0L/QviA3INC00L3QtdC5ID0gNDIpXHJcbiAgICBjb25zdCB0b3RhbENlbGxzID0gNDI7XHJcbiAgICBjb25zdCByZW1haW5pbmdEYXlzID0gdG90YWxDZWxscyAtIGRheXMubGVuZ3RoO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHJlbWFpbmluZ0RheXM7IGkrKykge1xyXG4gICAgICBkYXlzLnB1c2goeyBkYXk6IGksIG1vbnRoOiBuZXh0TW9udGgsIHllYXI6IG5leHRZZWFyIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJEYXlzQ2FjaGUgPSB7IG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aCwgeWVhcjogdGhpcy5jdXJyZW50WWVhciwgZGF5cyB9O1xyXG4gICAgcmV0dXJuIGRheXM7XHJcbiAgfVxyXG5cclxuICBnZXRZZWFycygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBjZW50ZXJZZWFyID0gdGhpcy5zZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKCkgPz8gdGhpcy5jdXJyZW50WWVhcjtcclxuICAgIGNvbnN0IHN0YXJ0WWVhciA9IGNlbnRlclllYXIgLSA1O1xyXG5cclxuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IDEyfSwgKF8sIGkpID0+IHN0YXJ0WWVhciArIGkpO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChkYXk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF5LmRheSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpICYmXHJcbiAgICAgIGRheS5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSAmJlxyXG4gICAgICBkYXkueWVhciA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzTW9udGhTZWxlY3RlZChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGU/LmdldE1vbnRoKCkgPT09IG1vbnRoICYmIHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRGdWxsWWVhcigpID09PSB0aGlzLmN1cnJlbnRZZWFyO1xyXG4gIH1cclxuXHJcbiAgaXNZZWFyU2VsZWN0ZWQoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKCkgPT09IHllYXI7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVFbmFibGVkKGRheTogeyBkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXkueWVhciwgZGF5Lm1vbnRoLCBkYXkuZGF5KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICghdGhpcy5fbWluRGF0ZSB8fCBkYXRlID49IHRoaXMuX21pbkRhdGUpICYmXHJcbiAgICAgICghdGhpcy5fbWF4RGF0ZSB8fCBkYXRlIDw9IHRoaXMuX21heERhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNNb250aERpc2FibGVkKG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSAmJiAhdGhpcy5fbWF4RGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIG1vbnRoLCAxKTtcclxuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCBtb250aCArIDEsIDApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICghIXRoaXMuX21pbkRhdGUgJiYgIWlzTmFOKHRoaXMuX21pbkRhdGUuZ2V0VGltZSgpKSAmJiBlbmRPZk1vbnRoIDwgdGhpcy5fbWluRGF0ZSkgfHxcclxuICAgICAgKCEhdGhpcy5fbWF4RGF0ZSAmJiAhaXNOYU4odGhpcy5fbWF4RGF0ZS5nZXRUaW1lKCkpICYmIHN0YXJ0T2ZNb250aCA+IHRoaXMuX21heERhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNZZWFyRGlzYWJsZWQoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21pbkRhdGUgJiYgIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBtaW5ZZWFyID0gdGhpcy5fbWluRGF0ZSAmJiAhaXNOYU4odGhpcy5fbWluRGF0ZS5nZXRUaW1lKCkpID8gdGhpcy5fbWluRGF0ZS5nZXRGdWxsWWVhcigpIDogbnVsbDtcclxuICAgIGNvbnN0IG1heFllYXIgPSB0aGlzLl9tYXhEYXRlICYmICFpc05hTih0aGlzLl9tYXhEYXRlLmdldFRpbWUoKSkgPyB0aGlzLl9tYXhEYXRlLmdldEZ1bGxZZWFyKCkgOiBudWxsO1xyXG5cclxuICAgIHJldHVybiAobWluWWVhciAhPT0gbnVsbCAmJiB5ZWFyIDwgbWluWWVhcikgfHwgKG1heFllYXIgIT09IG51bGwgJiYgeWVhciA+IG1heFllYXIpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IHsgZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciB9KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNEYXRlRW5hYmxlZChkYXkpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRheS55ZWFyLCBkYXkubW9udGgsIGRheS5kYXkpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoZGF0ZSk7XHJcblxyXG4gICAgY29uc3QgbmVlZHNVcGRhdGUgPSBkYXkubW9udGggIT09IHRoaXMuY3VycmVudE1vbnRoIHx8IGRheS55ZWFyICE9PSB0aGlzLmN1cnJlbnRZZWFyO1xyXG5cclxuICAgIGlmIChuZWVkc1VwZGF0ZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRheS5tb250aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF5LnllYXI7XHJcblxyXG4gICAgICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE1vbnRoKG1vbnRoOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmlzTW9udGhEaXNhYmxlZChtb250aCkpIHJldHVybjtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBtb250aDtcclxuICAgICAgdGhpcy52aWV3ID0gJ2RheXMnO1xyXG5cclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5pc1llYXJEaXNhYmxlZCh5ZWFyKSkgcmV0dXJuO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyID0geWVhcjtcclxuICAgICAgdGhpcy52aWV3ID0gJ21vbnRocyc7XHJcblxyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTW9udGgob2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIGxldCBuZXdNb250aCA9IHRoaXMuY3VycmVudE1vbnRoICsgb2Zmc2V0O1xyXG4gICAgbGV0IG5ld1llYXIgPSB0aGlzLmN1cnJlbnRZZWFyO1xyXG5cclxuICAgIGlmIChuZXdNb250aCA8IDApIHtcclxuICAgICAgbmV3TW9udGggPSAxMTtcclxuICAgICAgbmV3WWVhci0tO1xyXG4gICAgfSBlbHNlIGlmIChuZXdNb250aCA+IDExKSB7XHJcbiAgICAgIG5ld01vbnRoID0gMDtcclxuICAgICAgbmV3WWVhcisrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudE1vbnRoID0gbmV3TW9udGg7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyID0gbmV3WWVhcjtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlWWVhclJhbmdlKG9mZnNldDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyICs9IG9mZnNldCAqIDEyO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5fbWluRGF0ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCAwKSA8IHRoaXMuX21pbkRhdGU7XHJcbiAgfVxyXG5cclxuICBpc05leHRNb250aERpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9tYXhEYXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGggKyAxLCAxKSA+IHRoaXMuX21heERhdGU7XHJcbiAgfVxyXG5cclxuICBpc1ByZXZpb3VzWWVhclJhbmdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21pbkRhdGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLmdldFllYXJzKClbMF0gPD0gdGhpcy5fbWluRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxuXHJcbiAgaXNOZXh0WWVhclJhbmdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX21heERhdGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLmdldFllYXJzKClbdGhpcy5nZXRZZWFycygpLmxlbmd0aCAtIDFdID49IHRoaXMuX21heERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwidmlldyA9PT0gJ2RheXMnXCJcclxuICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNNb250aERpc2FibGVkKClcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9udGgoLTEpXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwidmlldyA9PT0gJ3llYXJzJ1wiXHJcbiAgICAgIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWhlYWRlcl9fY2hldnJvblwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzWWVhclJhbmdlRGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VZZWFyUmFuZ2UoLTEpXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tbGVmdCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWhlYWRlcl9fYnV0dG9uXCIgKGNsaWNrKT1cInN3aXRjaFZpZXcoKVwiPlxyXG4gICAgICB7eyBoZWFkZXJUZXh0IH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwidmlldyA9PT0gJ2RheXMnXCJcclxuICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb250aCgxKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jaGV2cm9uLXJpZ2h0IGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJ2aWV3ID09PSAneWVhcnMnXCJcclxuICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItaGVhZGVyX19jaGV2cm9uXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzTmV4dFllYXJSYW5nZURpc2FibGVkKClcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhbmdlWWVhclJhbmdlKDEpXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tcmlnaHQgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmlld1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkLS15ZWFyc1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiBnZXRZZWFycygpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbSBtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbS0teWVhclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1llYXJTZWxlY3RlZCh5ZWFyKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc1llYXJEaXNhYmxlZCh5ZWFyKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ob3ZlcmFibGVdPVwiIWlzWWVhckRpc2FibGVkKHllYXIpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB5ZWFyIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGhzJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZCBtcngtY2FsZW5kYXItYm9keV9fZ3JpZC0tbW9udGhzXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkX19pdGVtLS1tb250aFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc01vbnRoU2VsZWN0ZWQobW9udGgpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzTW9udGhEaXNhYmxlZChtb250aClcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cIiFpc01vbnRoRGlzYWJsZWQobW9udGgpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vbnRoKG1vbnRoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IG1vbnRoTmFtZXNbbW9udGhdIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1jYWxlbmRhci1ib2R5X19ncmlkIG1yeC1jYWxlbmRhci1ib2R5X19ncmlkLS1kYXlzXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mV2Vla1wiIGNsYXNzPVwibXJ4LWNhbGVuZGFyLWJvZHlfX2dyaWRfX2xhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGdldENhbGVuZGFyRGF5cygpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbSBtcngtY2FsZW5kYXItYm9keV9fZ3JpZF9faXRlbS0tZGF5XCJcclxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5vdGhlci1tb250aF09XCJkYXkubW9udGggIT09IGN1cnJlbnRNb250aFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNEYXRlRW5hYmxlZChkYXkpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCJpc0RhdGVFbmFibGVkKGRheSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgZGF5LmRheSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -532,10 +532,10 @@ class BreadcrumbsComponent {
532
532
  }
533
533
  }
534
534
  BreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
535
- BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: BreadcrumbsComponent, selector: "mrx-breadcrumbs", inputs: { type: "type", items: "items", item: "item", customClasses: "customClasses" }, ngImport: i0, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"], directives: [{ type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
535
+ BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: BreadcrumbsComponent, selector: "mrx-breadcrumbs", inputs: { type: "type", items: "items", item: "item", customClasses: "customClasses" }, ngImport: i0, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs-link{display:inline-block}.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"], directives: [{ type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
536
536
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
537
537
  type: Component,
538
- args: [{ selector: 'mrx-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"] }]
538
+ args: [{ selector: 'mrx-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-breadcrumbs\" [class]=\"getClasses\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a class=\"mrx-breadcrumbs__link\" *ngIf=\"item\" [href]=\"item.path\">\r\n <span class=\"mrx-icon icon-arrow-left icon-font-16 mr-1\" *ngIf=\"item.isShowArrow\"></span>\r\n {{item.text}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ul class=\"mrx-breadcrumbs__list\">\r\n <li *ngFor=\"let item of items\" class=\"mrx-breadcrumbs__list-item\">\r\n <ng-container *ngIf=\"item.isLink; else span\">\r\n <a class=\"mrx-breadcrumbs__link mr-1\" [href]=\"item.path\">{{item.text}}</a>\r\n <span class=\"mrx-icon icon-chevron-right icon-font-16 mr-1\"></span>\r\n </ng-container>\r\n\r\n <ng-template #span>\r\n <span class=\"mrx-breadcrumbs__tag\">{{item.text}}</span>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".mrx-breadcrumbs.mrx-breadcrumbs-link{display:inline-block}.mrx-breadcrumbs .mrx-breadcrumbs__link{display:flex;align-items:center;color:var(--brand-bg-primary-default);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__link .mrx-icon{color:var(--brand-bg-primary-default)!important}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover{color:var(--brand-text-controls-hover)}.mrx-breadcrumbs .mrx-breadcrumbs__link:hover .mrx-icon{color:var(--brand-text-controls-hover)!important}.mrx-breadcrumbs .mrx-breadcrumbs__tag{color:var(--neutral-text-tertiary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-breadcrumbs .mrx-breadcrumbs__list{display:flex;align-items:center;justify-content:flex-start;list-style:none;padding-left:0;margin-top:0;margin-bottom:0;flex-wrap:wrap}.mrx-breadcrumbs .mrx-breadcrumbs__list-item{display:flex}.mrx-breadcrumbs .mrx-breadcrumbs__list-item .mrx-icon{color:var(--neutral-icon-default)!important}\n"] }]
539
539
  }], propDecorators: { type: [{
540
540
  type: Input
541
541
  }], items: [{
@@ -9474,21 +9474,28 @@ class DateCalendarComponent {
9474
9474
  if (((_a = this.calendarDaysCache) === null || _a === void 0 ? void 0 : _a.month) === this.currentMonth && ((_b = this.calendarDaysCache) === null || _b === void 0 ? void 0 : _b.year) === this.currentYear) {
9475
9475
  return this.calendarDaysCache.days;
9476
9476
  }
9477
+ // Определяем количество дней в текущем, предыдущем и следующем месяцах
9477
9478
  const daysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();
9478
9479
  const prevMonthDays = new Date(this.currentYear, this.currentMonth, 0).getDate();
9479
9480
  const days = [];
9480
- const prevDaysCount = 2;
9481
+ // Вычисляем, сколько дней взять из предыдущего месяца, чтобы неделя начиналась с понедельника
9482
+ const firstDayJS = new Date(this.currentYear, this.currentMonth, 1).getDay(); // 0 = воскресенье, 1 = понедельник, ...
9483
+ const prevDaysCount = (firstDayJS + 6) % 7; // 0..6, где 0 означает, что 1-е число уже понедельник
9481
9484
  const prevMonth = this.currentMonth === 0 ? 11 : this.currentMonth - 1;
9482
9485
  const prevYear = this.currentMonth === 0 ? this.currentYear - 1 : this.currentYear;
9483
9486
  const nextMonth = this.currentMonth === 11 ? 0 : this.currentMonth + 1;
9484
9487
  const nextYear = this.currentMonth === 11 ? this.currentYear + 1 : this.currentYear;
9488
+ // Предыдущие дни (если нужны)
9485
9489
  for (let i = 0; i < prevDaysCount; i++) {
9486
9490
  days.push({ day: prevMonthDays - prevDaysCount + 1 + i, month: prevMonth, year: prevYear });
9487
9491
  }
9492
+ // Дни текущего месяца
9488
9493
  for (let i = 1; i <= daysInMonth; i++) {
9489
9494
  days.push({ day: i, month: this.currentMonth, year: this.currentYear });
9490
9495
  }
9491
- const remainingDays = 35 - days.length;
9496
+ // Дозаполняем до полного количества ячеек (6 недель по 7 дней = 42)
9497
+ const totalCells = 42;
9498
+ const remainingDays = totalCells - days.length;
9492
9499
  for (let i = 1; i <= remainingDays; i++) {
9493
9500
  days.push({ day: i, month: nextMonth, year: nextYear });
9494
9501
  }