@coreui/angular-pro 4.4.2 → 4.4.4

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.
@@ -57,7 +57,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
57
57
  useExisting: forwardRef(() => DatePickerComponent),
58
58
  multi: true
59
59
  }
60
- ], exportAs: ["cDatePicker"], usesInheritance: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }] });
60
+ ], exportAs: ["cDatePicker"], usesInheritance: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }] });
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatePickerComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'c-date-picker', exportAs: 'cDatePicker', standalone: true, imports: [
@@ -81,7 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
81
81
  useExisting: forwardRef(() => DatePickerComponent),
82
82
  multi: true
83
83
  }
84
- ], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
84
+ ], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
85
85
  }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { placeholder: [{
86
86
  type: Input
87
87
  }], startDateChange: [{
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
90
90
  }], date: [{
91
91
  type: Input
92
92
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE4QnJELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx3QkFBd0I7SUFFL0QsWUFDRSxrQkFBc0M7UUFFdEMsS0FBSyxDQUFDLGtCQUFr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ZFJlZiwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9idXR0b24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXInO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgRHJvcGRvd25NZW51RGlyZWN0aXZlLCBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IEZvcm1Db250cm9sRGlyZWN0aXZlLCBJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0nO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL3RpbWUtcGlja2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBleHBvcnRBczogJ2NEYXRlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSxcbiAgICBEcm9wZG93bk1lbnVEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cENvbXBvbmVudCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZVxuICBdLCBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7XG4gICAgc3VwZXIoYnJlYWtwb2ludE9ic2VydmVyKTtcbiAgfVxuXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGRhdGUnO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQE91dHB1dCgnZGF0ZUNoYW5nZScpIG92ZXJyaWRlIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgb3ZlcnJpZGUgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBjYWxlbmRhcnMoKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc3RhcnREYXRlID0gdmFsdWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuZGF0ZSA/IHRoaXMuZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpIDogJyc7XG4gIH1cblxuICBvdmVycmlkZSBzdWJzY3JpYmVEYXRlQ2hhbmdlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdGFydERhdGVDaGFuZ2Uuc3Vic2NyaWJlKG5leHQgPT4ge1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXh0O1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5leHQpO1xuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIGNsYXNzPVwiZGF0ZS1waWNrZXIgcGlja2VyXCIgW25nQ2xhc3NdPVwiZGF0ZVBpY2tlckNsYXNzZXNcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbcG9wcGVyT3B0aW9uc109XCJwb3BwZXJqc09wdGlvbnNcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIlxuICA+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMF1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICBbdmFsaWRdPVwicmFuZ2UgPyB1bmRlZmluZWQgOiB2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwicmFuZ2UgJiYgc2VwYXJhdG9yICE9PSBmYWxzZVwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaWNvbiBkYXRlLXBpY2tlci1hcnJvdy1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDxpbnB1dCAoY2hhbmdlKT1cImhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRFbmRIb3ZlclZhbHVlfVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbmREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMV1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI2VuZERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJpbmRpY2F0b3IgfHwgY2xlYW5lclwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yXCIgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaW5kaWNhdG9yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItaW5wdXQtaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIChjbGljayk9XCIhZGlzYWJsZWQgJiYgaGFuZGxlQ2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwiY2xlYW5lciAmJiBzdGFydERhdGVFbGVtZW50UmVmLnZhbHVlICYmICFkaXNhYmxlZFwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItY2xlYW5lci1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cblxuICA8L2MtaW5wdXQtZ3JvdXA+XG4gIDxkaXYgY0Ryb3Bkb3duTWVudT5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItYm9keVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFpc01vYmlsZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmFuZ2VzXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cInJhbmdlc0J1dHRvbnNWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICB7e2dldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlKX19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxjLWNhbGVuZGFyXG4gICAgICAgIChjYWxlbmRhckNlbGxIb3Zlcik9XCJoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChlbmREYXRlQ2hhbmdlKT1cImhhbmRsZUVuZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbY2FsZW5kYXJEYXRlXT1cImNhbGVuZGFyRGF0ZVwiXG4gICAgICAgIFtjYWxlbmRhcnNdPVwiaXNNb2JpbGUgPyAxIDogY2FsZW5kYXJzXCJcbiAgICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICBbZW5kRGF0ZV09XCJlbmREYXRlXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb25cIlxuICAgICAgICBbcmFuZ2VdPVwicmFuZ2VcIlxuICAgICAgICBbc3RhcnREYXRlXT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgIFtuYXZZZWFyRmlyc3RdPVwibmF2WWVhckZpcnN0XCJcbiAgICAgICAgW2RheUZvcm1hdF09XCJkYXlGb3JtYXRcIlxuICAgICAgICBbd2Vla2RheUZvcm1hdF09XCJ3ZWVrZGF5Rm9ybWF0XCJcbiAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1jYWxlbmRhcnNcIlxuICAgICAgPjwvYy1jYWxlbmRhcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmYWxzZSAmJiB0aW1lcGlja2VyXCIgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgICAgICA8IS0tIHRvZG8tLT5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdGFydERhdGVcIlxuICAgICAgICAgIFt0aW1lXT1cInN0YXJ0RGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJlbmREYXRlID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXJcIiBjbGFzcz1cInBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRyb3Bkb3dufVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9jLWRyb3Bkb3duPlxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE4QnJELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx3QkFBd0I7SUFFL0QsWUFDRSxrQkFBc0M7UUFFdEMsS0FBSyxDQUFDLGtCQUFr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ZFJlZiwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9idXR0b24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXInO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgRHJvcGRvd25NZW51RGlyZWN0aXZlLCBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IEZvcm1Db250cm9sRGlyZWN0aXZlLCBJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0nO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL3RpbWUtcGlja2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBleHBvcnRBczogJ2NEYXRlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSxcbiAgICBEcm9wZG93bk1lbnVEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cENvbXBvbmVudCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZVxuICBdLCBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7XG4gICAgc3VwZXIoYnJlYWtwb2ludE9ic2VydmVyKTtcbiAgfVxuXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGRhdGUnO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQE91dHB1dCgnZGF0ZUNoYW5nZScpIG92ZXJyaWRlIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgb3ZlcnJpZGUgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBjYWxlbmRhcnMoKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc3RhcnREYXRlID0gdmFsdWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuZGF0ZSA/IHRoaXMuZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpIDogJyc7XG4gIH1cblxuICBvdmVycmlkZSBzdWJzY3JpYmVEYXRlQ2hhbmdlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdGFydERhdGVDaGFuZ2Uuc3Vic2NyaWJlKG5leHQgPT4ge1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXh0O1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5leHQpO1xuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIGNsYXNzPVwiZGF0ZS1waWNrZXIgcGlja2VyXCIgW25nQ2xhc3NdPVwiZGF0ZVBpY2tlckNsYXNzZXNcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbcG9wcGVyT3B0aW9uc109XCJwb3BwZXJqc09wdGlvbnNcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIlxuICA+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMF1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJyYW5nZSA/IHVuZGVmaW5lZCA6IHZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJyYW5nZSAmJiBzZXBhcmF0b3IgIT09IGZhbHNlXCIgY0lucHV0R3JvdXBUZXh0PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWFycm93LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dEVuZEhvdmVyVmFsdWV9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlciA/PyBwbGFjZWhvbGRlclsxXVwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAjZW5kRGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJ2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgc3RhcnREYXRlRWxlbWVudFJlZi52YWx1ZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWNsZWFuZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG5cbiAgPC9jLWlucHV0LWdyb3VwPlxuICA8ZGl2IGNEcm9wZG93bk1lbnU+XG4gICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhaXNNb2JpbGVcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJhbmdlc1wiIGNsYXNzPVwiZGF0ZS1waWNrZXItcmFuZ2VzXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Q3VzdG9tUmFuZ2UoY3VzdG9tUmFuZ2UpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21SYW5nZSBvZiBjdXN0b21SYW5nZXNcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInJhbmdlc0J1dHRvbnNDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJyYW5nZXNCdXR0b25zU2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJyYW5nZXNCdXR0b25zVmFyaWFudFwiXG4gICAgICAgICAgICAgICAgICBjQnV0dG9uPlxuICAgICAgICAgICAge3tnZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSl9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8Yy1jYWxlbmRhclxuICAgICAgICAoY2FsZW5kYXJDZWxsSG92ZXIpPVwiaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwiaGFuZGxlQ2FsZW5kYXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZW5kRGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc3RhcnREYXRlQ2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NhbGVuZGFyRGF0ZV09XCJjYWxlbmRhckRhdGVcIlxuICAgICAgICBbY2FsZW5kYXJzXT1cImlzTW9iaWxlID8gMSA6IGNhbGVuZGFyc1wiXG4gICAgICAgIFtkYXRlRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcbiAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZVwiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgW3JhbmdlXT1cInJhbmdlXCJcbiAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGVcIlxuICAgICAgICBbbmF2WWVhckZpcnN0XT1cIm5hdlllYXJGaXJzdFwiXG4gICAgICAgIFtkYXlGb3JtYXRdPVwiZGF5Rm9ybWF0XCJcbiAgICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdFwiXG4gICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXJzXCJcbiAgICAgID48L2MtY2FsZW5kYXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmFsc2UgJiYgdGltZXBpY2tlclwiIGNsYXNzPVwiZGF0ZS1waWNrZXItdGltZXBpY2tlcnNcIj5cbiAgICAgICAgPCEtLSB0b2RvLS0+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RhcnREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJzdGFydERhdGUgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVTdGFydFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5kRGF0ZVwiXG4gICAgICAgICAgW3RpbWVdPVwiZW5kRGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZUVuZFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyXCIgY2xhc3M9XCJwaWNrZXItZm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvYy1kcm9wZG93bj5cbiJdfQ==
@@ -267,6 +267,8 @@ export class DateRangePickerComponent {
267
267
  }
268
268
  set disabled(value) {
269
269
  this._disabled = coerceBooleanProperty(value);
270
+ this._disabled ? this.startDateInput.disable() : this.startDateInput.enable();
271
+ this._disabled ? this.endDateInput.disable() : this.endDateInput.enable();
270
272
  }
271
273
  get disabled() {
272
274
  return this._disabled;
@@ -523,7 +525,7 @@ DateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
523
525
  useExisting: forwardRef(() => DateRangePickerComponent),
524
526
  multi: true
525
527
  }
526
- ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true }], exportAs: ["cDateRangePicker"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }] });
528
+ ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true }], exportAs: ["cDateRangePicker"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }] });
527
529
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
528
530
  type: Component,
529
531
  args: [{ selector: 'c-date-range-picker', exportAs: 'cDateRangePicker', standalone: true, imports: [
@@ -547,7 +549,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
547
549
  useExisting: forwardRef(() => DateRangePickerComponent),
548
550
  multi: true
549
551
  }
550
- ], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? true : null\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
552
+ ], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
551
553
  }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { dayFormat: [{
552
554
  type: Input
553
555
  }], calendars: [{
@@ -638,4 +640,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
638
640
  type: HostListener,
639
641
  args: ['blur']
640
642
  }] } });
641
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUVMLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixD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Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRzJCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHK0IsZ0JBQWdCO3NCQUE1RSxlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFzQnJDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGZvcm1hdCBhcyBkYXRlRm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYnV0dG9uJztcbmltcG9ydCB7IGdldExvY2FsRGF0ZUZyb21TdHJpbmcsIGlzRGF0ZURpc2FibGVkIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyJztcbmltcG9ydCB7IENvbG9ycyB9IGZyb20gJy4uLy4uL2NvcmV1aS50eXBlcyc7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgRHJvcGRvd25NZW51RGlyZWN0aXZlLCBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IEZvcm1Db250cm9sRGlyZWN0aXZlLCBJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Zvcm0nO1xuaW1wb3J0IHsgVGVtcGxhdGVJZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGltZS1waWNrZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDYWxlbmRhclJhbmdlcyB7XG4gIFtrZXk6IHN0cmluZ106IERhdGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgVEN1c3RvbVJhbmdlID0gW3N0cmluZywgRGF0ZVtdXVxuXG4vKiogTXVzdCBiZSBhIHZhbGlkIGRhdGUgc3RyaW5nICovXG4vLyB0b2RvOiB2YWxpZGF0aW9uXG4vLyBleHBvcnQgZnVuY3Rpb24gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IobG9jYWxlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4vLyAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuLy8gICAgIC8vIGNvbnN0IHZhbGlkRGF0ZSA9ICFpc05hTihEYXRlLnBhcnNlKGNvbnRyb2wudmFsdWUpKTtcbi8vICAgICBzdHJpbmdUb0RhdGVDb252ZXJ0KGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgZGF0ZVNoaW0gPSBjdnREYXRlKGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgIC8vIGNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUoZGF0ZVNoaW0ueWVhciwgZGF0ZVNoaW0ubW9udGgsIGRhdGVTaGltLmRheSkpXG4vLyAgICAgY29uc29sZS5sb2coJ2RhdGVTaGltJywgZGF0ZVNoaW0sIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgdmFsaWREYXRlID0gaXNWYWxpZERhdGUoY29udHJvbC52YWx1ZSk7XG4vLyAgICAgY29uc29sZS5sb2coJ2ludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yJywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgdmFsaWREYXRlKTtcbi8vICAgICByZXR1cm4gdmFsaWREYXRlID8geyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH0gOiBudWxsO1xuLy8gICB9O1xuLy8gfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgZXhwb3J0QXM6ICdjRGF0ZVJhbmdlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSxcbiAgICBEcm9wZG93bk1lbnVEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cENvbXBvbmVudCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Nsb3NlT25TZWxlY3Q6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uYXZZZWFyRmlyc3Q6IEJvb2xlYW5JbnB1dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZm9ybWF0IG9mIGRheSBuYW1lLlxuICAgKiBAZGVmYXVsdCAnbnVtZXJpYydcbiAgICogQHR5cGUgRGF5Rm9ybWF0VHlwZVxuICAgKi9cbiAgQElucHV0KCkgZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNhbGVuZGFycyB0aGF0IHJlbmRlciBvbiBkZXNrdG9wIGRldmljZXMuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2FsZW5kYXJzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jYWxlbmRhcnMgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2FsZW5kYXJzKCkge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcnM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcnM6IG51bWJlciA9IDI7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNsZWFuZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGVhbmVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjbGVhbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW5lcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiB0aGUgZHJvcGRvd24gc2hvdWxkIGJlIGNsb3NlZCBhZnRlciB2YWx1ZSBzZXR0aW5nLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xvc2VPblNlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI2Nsb3NlT25TZWxlY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNsb3NlT25TZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2Nsb3NlT25TZWxlY3Q7XG4gIH1cblxuICAjY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgZGF0ZSBmb3JtYXQuXG4gICAqIFdlIHVzZSBkYXRlLWZucyB0byBmb3JtYXQgZGF0ZXMuIFZpc2l0IGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YyLjI4LjAvZG9jcy9mb3JtYXQgdG8gY2hlY2sgYWNjZXB0ZWQgcGF0dGVybnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgaW5kaWNhdG9yLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbmRpY2F0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmRpY2F0b3IgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGluZGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5kaWNhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlucHV0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnB1dFJlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbnB1dFJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFJlYWRPbmx5IHx8IHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFJlb3JkZXIgeWVhci1tb250aCBuYXZpZ2F0aW9uLCBhbmQgcmVuZGVyIHllYXIgZmlyc3QuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuYXZZZWFyRmlyc3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9uYXZZZWFyRmlyc3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdlllYXJGaXJzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2WWVhckZpcnN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2WWVhckZpcnN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBzaG9ydCBoaW50cyB0aGF0IGFyZSB2aXNpYmxlIGluIHN0YXJ0IGRhdGUgYW5kIGVuZCBkYXRlIGlucHV0cy5cbiAgICogdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFsnU3RhcnQgZGF0ZScsICdFbmQgZGF0ZSddO1xuXG4gIC8qKlxuICAgKiBQcmVkZWZpbmVkIGRhdGUgcmFuZ2VzIHRoZSB1c2VyIGNhbiBzZWxlY3QgZnJvbS5cbiAgICogQHR5cGUgSUNhbGVuZGFyUmFuZ2VzXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXM/OiBvYmplY3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbG9yIGNvbnRleHQgb2YgdGhlIGNhbmNlbCBidXR0b24gdG8gb25lIG9mIENvcmVVSeKAmXMgdGhlbWVkIGNvbG9ycy5cbiAgICogQHR5cGUgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdkYXJrJyB8ICdsaWdodCcgfCBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ3NlY29uZGFyeSdcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNDb2xvcj86IENvbG9ycyA9ICdzZWNvbmRhcnknO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSByYW5nZXMgYnV0dG9uIHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSAnc20nIHwgJ2xnJyB8IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzQnV0dG9uc1NpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogU2V0IHRoZSByYW5nZXMgYnV0dG9uIHZhcmlhbnQgdG8gYW4gb3V0bGluZWQgYnV0dG9uIG9yIGEgZ2hvc3QgYnV0dG9uLlxuICAgKiBAdHlwZSAnb3V0bGluZScgfCAnZ2hvc3QnIHwgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXNCdXR0b25zVmFyaWFudD86ICdvdXRsaW5lJyB8ICdnaG9zdCcgPSAnZ2hvc3QnO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGljb24gb3IgY2hhcmFjdGVyIHRoYXQgc2VwYXJhdGVzIHR3byBkYXRlcy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VwYXJhdG9yID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcGFyYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgX3NlcGFyYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCBvciBsYXJnZS5cbiAgICogQHR5cGUgJ3NtJyB8ICdsZycgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBzaXplPzogJ3NtJyB8ICdsZyc7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYW4gYWRkaXRpb25hbCB0aW1lIHNlbGVjdGlvbiBieSBhZGRpbmcgc2VsZWN0IGJveGVzIHRvIGNob29zZSB0aW1lLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdGltZXBpY2tlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RpbWVwaWNrZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHRpbWVwaWNrZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIHJldHVybiB0aGlzLl90aW1lcGlja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZXBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gZGF0ZS1waWNrZXIgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHN0YXJ0RGF0ZSh2YWx1ZSkge1xuICAgIGNvbnN0IHByZXZEYXRlID0gdGhpcy5fc3RhcnREYXRlID8gbmV3IERhdGUodGhpcy5fc3RhcnREYXRlKSA6IG51bGw7XG4gICAgdGhpcy5fc3RhcnREYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xuICAgIGlmIChwcmV2RGF0ZT8uZ2V0VGltZSgpICE9PSB0aGlzLl9zdGFydERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9zdGFydERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGFydERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0RGF0ZT86IERhdGUgfCBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlbmREYXRlKHZhbHVlKSB7XG4gICAgY29uc3QgcHJldkRhdGUgPSB0aGlzLl9lbmREYXRlID8gbmV3IERhdGUodGhpcy5fZW5kRGF0ZSA/PyAwKSA6IG51bGw7XG4gICAgdGhpcy5fZW5kRGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICBpZiAocHJldkRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5fZW5kRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmVuZERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9lbmREYXRlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2VuZERhdGU/OiBEYXRlIHwgbnVsbDtcblxuICBASW5wdXQoKSBjYWxlbmRhckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW10gfCBEYXRlW11bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBmaXJzdERheU9mV2Vlayh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZmlyc3REYXlPZldlZWsoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDE7XG5cbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBuYXZpZ2F0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbmF2aWdhdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX25hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JhbmdlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCByYW5nZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICBwcml2YXRlIF9yYW5nZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgZGF0ZUZpbHRlcj86IERhdGVGaWx0ZXJUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJhbmdlID8geyAuLi52YWx1ZSB9IDogdmFsdWU7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3ZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobmV3VmFsdWUuc3RhcnREYXRlID8/IG51bGwpO1xuICAgICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobmV3VmFsdWUuZW5kRGF0ZSA/PyBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG5ld1ZhbHVlID8/IG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IHRoaXMucmFuZ2UgPyAhISh0aGlzLnZhbHVlLnN0YXJ0RGF0ZSAmJiB0aGlzLnZhbHVlLmVuZERhdGUpIDogISF0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGUgPSAhaGFzVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIFdlZWtkYXlGb3JtYXRUeXBlXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcG9wcGVyIE9wdGlvbnMgb2JqZWN0XG4gICAqIEB0eXBlIFBhcnRpYWw8T3B0aW9ucz5cbiAgICovXG4gIEBJbnB1dCgncG9wcGVyT3B0aW9ucycpIHBvcHBlcmpzT3B0aW9uczogUGFydGlhbDxPcHRpb25zPiA9IHtcbiAgICBzdHJhdGVneTogJ2ZpeGVkJ1xuICB9O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXSB8IHVuZGVmaW5lZD4oKTtcblxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgLy8gQFZpZXdDaGlsZChDYWxlbmRhckNvbXBvbmVudCkgY2FsZW5kYXJDb21wb25lbnQhOiBDYWxlbmRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlRWxlbWVudFJlZicpIHN0YXJ0RGF0ZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdlbmREYXRlRWxlbWVudFJlZicpIGVuZERhdGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZURhdGVDaGFuZ2Uoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgIC8vIHRvZG9cbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlID0gbmV4dDtcbiAgICAgIC8vICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vIH0pKTtcbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgIHRoaXMub25DaGFuZ2UobmV4dCk7XG4gICAgICAvLyB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJykgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgaXNNb2JpbGUgPSB0cnVlO1xuICBwdWJsaWMgY3VzdG9tUmFuZ2VzITogVEN1c3RvbVJhbmdlW107XG5cbiAgc2V0IHN0YXJ0RGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9zdGFydERhdGVWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhcnREYXRlVmFsdWU6IHN0cmluZyA9IHRoaXMuc3RhcnREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuXG4gIHNldCBlbmREYXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW5kRGF0ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9lbmREYXRlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBlbmREYXRlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZVZhbHVlO1xuICB9XG5cbiAgcHVibGljIF9lbmREYXRlVmFsdWU6IHN0cmluZyA9IHRoaXMuZW5kRGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcblxuICBwdWJsaWMgZ2V0IHN0YXJ0RGF0ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wbGFjZWhvbGRlcikgPyB0aGlzLnBsYWNlaG9sZGVyWzBdIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGVuZERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucGxhY2Vob2xkZXIpID8gdGhpcy5wbGFjZWhvbGRlclsxXSA6IHRoaXMucGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSBsYXlvdXRDaGFuZ2VzITogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIHRvZG86IHZhbGlkYXRpb25cbiAgc3RhcnREYXRlSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGFydERhdGVWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgW1xuICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAvLyBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KSxcbiAgICAvLyBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCksXG4gICAgLy8gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IodGhpcy5sb2NhbGUpXG4gIF0pO1xuICBlbmREYXRlSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5lbmREYXRlVmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgLy8gVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXG4gICAgLy8gVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLFxuICAgIC8vIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKHRoaXMubG9jYWxlKVxuICBdKTtcbiAgZGF0ZVJhbmdlR3JvdXAhOiBGb3JtR3JvdXA7XG5cbiAgc2V0IGlucHV0U3RhcnRIb3ZlclZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5faW5wdXRTdGFydEhvdmVyVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbnB1dFN0YXJ0SG92ZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGFydEhvdmVyVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFN0YXJ0SG92ZXJWYWx1ZSE6IERhdGUgfCBudWxsO1xuXG4gIHNldCBpbnB1dEVuZEhvdmVyVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9pbnB1dEVuZEhvdmVyVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbnB1dEVuZEhvdmVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RW5kSG92ZXJWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0RW5kSG92ZXJWYWx1ZSE6IERhdGUgfCBudWxsO1xuXG4gIGdldCBkYXRlUGlja2VyQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCA9PT0gdHJ1ZSxcbiAgICAgICdpcy1pbnZhbGlkJzogdGhpcy52YWxpZCA9PT0gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0XG4gICAgICA/IGRhdGVGb3JtYXQoZGF0ZSwgdGhpcy5mb3JtYXQpXG4gICAgICA6IHRoaXMudGltZXBpY2tlclxuICAgICAgICA/IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUpXG4gICAgICAgIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbXG4gICAgICBCcmVha3BvaW50cy5IYW5kc2V0LFxuICAgICAgQnJlYWtwb2ludHMuVGFibGV0XG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21SYW5nZXMgPSB0aGlzLnJhbmdlcyA/IE9iamVjdC5lbnRyaWVzKHRoaXMucmFuZ2VzKSA6IFtdO1xuXG4gICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuc3RhcnREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5lbmREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlKGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcy5mb3JFYWNoKChjaGlsZDogVGVtcGxhdGVJZERpcmVjdGl2ZSkgPT4ge1xuICAgICAgICB0aGlzLnRlbXBsYXRlc1tjaGlsZC5pZF0gPSBjaGlsZC50ZW1wbGF0ZVJlZjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRlJ10pIHtcbiAgICAgIC8vIGZvciBkYXRlLXBpY2tlciBjb21wb25lbnRcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydkYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlID8/IHRoaXMuY2FsZW5kYXJEYXRlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc3RhcnREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydzdGFydERhdGUnXT8uY3VycmVudFZhbHVlKSA/PyBudWxsO1xuICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGUgPz8gdGhpcy5jYWxlbmRhckRhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydlbmREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydlbmREYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0VmFsdWVUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZyh2YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkgPz8gbnVsbDtcbiAgfVxuXG4gIGdldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlOiBhbnkpIHtcbiAgICByZXR1cm4gY3VzdG9tUmFuZ2VbMF07XG4gIH1cblxuICBzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMF0pO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShjdXN0b21SYW5nZVsxXVsxXSk7XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQ6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy5jYWxlbmRhckNlbGxIb3Zlci5lbWl0KCRldmVudCk7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuc3RhcnREYXRlRWxlbWVudFJlZiwgJGV2ZW50KTtcbiAgICAgIHRoaXMuaW5wdXRTdGFydEhvdmVyVmFsdWUgPSAkZXZlbnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmREYXRlKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5lbmREYXRlRWxlbWVudFJlZiwgJGV2ZW50KTtcbiAgICAgIHRoaXMuaW5wdXRFbmRIb3ZlclZhbHVlID0gJGV2ZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNhbGVuZGFyRGF0ZUNoYW5nZSgkZXZlbnQ6IERhdGUpIHtcbiAgICBpZiAodGhpcy5jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSAkZXZlbnQuZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5zdGFydERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlID8/IG51bGw7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZVZhbHVlID0gZGF0ZSA/IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA6ICcnO1xuICAgICAgdGhpcy5pbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogdGhpcy5lbmREYXRlIH0gOiB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVFbmREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5lbmREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmVuZERhdGUgPSBkYXRlID8/IG51bGw7XG4gICAgICB0aGlzLmVuZERhdGVWYWx1ZSA9IGRhdGUgPyBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgOiAnJztcbiAgICAgIHRoaXMuaW5wdXRFbmRIb3ZlclZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJhbmdlID8geyBzdGFydERhdGU6IHRoaXMuc3RhcnREYXRlLCBlbmREYXRlOiB0aGlzLmVuZERhdGUgfSA6IHRoaXMuc3RhcnREYXRlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsZWFyKCRldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAvLyB0aGlzLmNhbGVuZGFyQ29tcG9uZW50LmNsZWFyRGF0ZXMoKTtcbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShudWxsKTtcbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gIH1cblxuICBoYW5kbGVTdGFydERhdGVJbnB1dENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRhdGUgPSBnZXRMb2NhbERhdGVGcm9tU3RyaW5nKCRldmVudC50YXJnZXQ/LnZhbHVlLCB0aGlzLmxvY2FsZSwgdGhpcy50aW1lcGlja2VyKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIC8vIHRoaXMuY2FsZW5kYXJDb21wb25lbnQuY2xlYXJEYXRlcygpO1xuICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgaWYgKCEodGhpcy5mb3JiaWRkZW5EYXRlKGRhdGUpIHx8ICh0aGlzLmVuZERhdGUgJiYgdGhpcy5lbmREYXRlIDwgZGF0ZSkpKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZGF0ZTtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSh0aGlzLnN0YXJ0RGF0ZSA/PyBudWxsKTtcbiAgfVxuXG4gIGhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRhdGUgPSBnZXRMb2NhbERhdGVGcm9tU3RyaW5nKCRldmVudC50YXJnZXQ/LnZhbHVlLCB0aGlzLmxvY2FsZSwgdGhpcy50aW1lcGlja2VyKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgaWYgKCEodGhpcy5mb3JiaWRkZW5EYXRlKGRhdGUpIHx8ICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLnN0YXJ0RGF0ZSA+IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IGRhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZSh0aGlzLmVuZERhdGUgPz8gbnVsbCk7XG4gIH1cblxuICBmb3JiaWRkZW5EYXRlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuZGlzYWJsZWREYXRlcykgfHwgKHRoaXMuZGF0ZUZpbHRlciA/ICF0aGlzLmRhdGVGaWx0ZXIoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICBzZXRJbnB1dFZhbHVlID0gKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGRhdGU6IERhdGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IGRhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgPz8gJyc7XG4gICAgLy8gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlQXNEYXRlID0gZGF0ZTtcbiAgICByZXR1cm47XG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0VGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zdGFydERhdGUgPSB0aW1lID8/IHRoaXMuc3RhcnREYXRlO1xuICB9XG5cbiAgaGFuZGxlRW5kVGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5kRGF0ZSA9IHRpbWUgPz8gdGhpcy5lbmREYXRlO1xuICB9XG59XG4iLCI8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIGNsYXNzPVwiZGF0ZS1waWNrZXIgcGlja2VyXCIgW25nQ2xhc3NdPVwiZGF0ZVBpY2tlckNsYXNzZXNcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbcG9wcGVyT3B0aW9uc109XCJwb3BwZXJqc09wdGlvbnNcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIlxuICA+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMF1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICBbdmFsaWRdPVwicmFuZ2UgPyB1bmRlZmluZWQgOiB2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwicmFuZ2UgJiYgc2VwYXJhdG9yICE9PSBmYWxzZVwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaWNvbiBkYXRlLXBpY2tlci1hcnJvdy1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDxpbnB1dCAoY2hhbmdlKT1cImhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRFbmRIb3ZlclZhbHVlfVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbmREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMV1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI2VuZERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJpbmRpY2F0b3IgfHwgY2xlYW5lclwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yXCIgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaW5kaWNhdG9yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItaW5wdXQtaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIChjbGljayk9XCIhZGlzYWJsZWQgJiYgaGFuZGxlQ2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwiY2xlYW5lciAmJiBzdGFydERhdGVFbGVtZW50UmVmLnZhbHVlICYmICFkaXNhYmxlZFwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItY2xlYW5lci1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cblxuICA8L2MtaW5wdXQtZ3JvdXA+XG4gIDxkaXYgY0Ryb3Bkb3duTWVudT5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItYm9keVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFpc01vYmlsZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmFuZ2VzXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cInJhbmdlc0J1dHRvbnNWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICB7e2dldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlKX19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxjLWNhbGVuZGFyXG4gICAgICAgIChjYWxlbmRhckNlbGxIb3Zlcik9XCJoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChlbmREYXRlQ2hhbmdlKT1cImhhbmRsZUVuZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbY2FsZW5kYXJEYXRlXT1cImNhbGVuZGFyRGF0ZVwiXG4gICAgICAgIFtjYWxlbmRhcnNdPVwiaXNNb2JpbGUgPyAxIDogY2FsZW5kYXJzXCJcbiAgICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICBbZW5kRGF0ZV09XCJlbmREYXRlXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb25cIlxuICAgICAgICBbcmFuZ2VdPVwicmFuZ2VcIlxuICAgICAgICBbc3RhcnREYXRlXT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgIFtuYXZZZWFyRmlyc3RdPVwibmF2WWVhckZpcnN0XCJcbiAgICAgICAgW2RheUZvcm1hdF09XCJkYXlGb3JtYXRcIlxuICAgICAgICBbd2Vla2RheUZvcm1hdF09XCJ3ZWVrZGF5Rm9ybWF0XCJcbiAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1jYWxlbmRhcnNcIlxuICAgICAgPjwvYy1jYWxlbmRhcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmYWxzZSAmJiB0aW1lcGlja2VyXCIgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgICAgICA8IS0tIHRvZG8tLT5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdGFydERhdGVcIlxuICAgICAgICAgIFt0aW1lXT1cInN0YXJ0RGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJlbmREYXRlID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXJcIiBjbGFzcz1cInBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRyb3Bkb3dufVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9jLWRyb3Bkb3duPlxuIl19
643
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUVMLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixD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QUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdGLFVBQVU7c0JBRGIsS0FBSztnQkFpQkYsS0FBSztzQkFEUixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQWNGLEtBQUs7c0JBRFIsS0FBSztnQkFnQ0csYUFBYTtzQkFBckIsS0FBSztnQkFNa0IsZUFBZTtzQkFBdEMsS0FBSzt1QkFBQyxlQUFlO2dCQUlILFdBQVc7c0JBQTdCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRzJCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHK0IsZ0JBQWdCO3NCQUE1RSxlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFzQnJDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGZvcm1hdCBhcyBkYXRlRm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYnV0dG9uJztcbmltcG9ydCB7IGdldExvY2FsRGF0ZUZyb21TdHJpbmcsIGlzRGF0ZURpc2FibGVkIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyJztcbmltcG9ydCB7IENvbG9ycyB9IGZyb20gJy4uLy4uL2NvcmV1aS50eXBlcyc7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgRHJvcGRvd25NZW51RGlyZWN0aXZlLCBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IEZvcm1Db250cm9sRGlyZWN0aXZlLCBJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Zvcm0nO1xuaW1wb3J0IHsgVGVtcGxhdGVJZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGltZS1waWNrZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDYWxlbmRhclJhbmdlcyB7XG4gIFtrZXk6IHN0cmluZ106IERhdGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgVEN1c3RvbVJhbmdlID0gW3N0cmluZywgRGF0ZVtdXVxuXG4vKiogTXVzdCBiZSBhIHZhbGlkIGRhdGUgc3RyaW5nICovXG4vLyB0b2RvOiB2YWxpZGF0aW9uXG4vLyBleHBvcnQgZnVuY3Rpb24gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IobG9jYWxlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4vLyAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuLy8gICAgIC8vIGNvbnN0IHZhbGlkRGF0ZSA9ICFpc05hTihEYXRlLnBhcnNlKGNvbnRyb2wudmFsdWUpKTtcbi8vICAgICBzdHJpbmdUb0RhdGVDb252ZXJ0KGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgZGF0ZVNoaW0gPSBjdnREYXRlKGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgIC8vIGNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUoZGF0ZVNoaW0ueWVhciwgZGF0ZVNoaW0ubW9udGgsIGRhdGVTaGltLmRheSkpXG4vLyAgICAgY29uc29sZS5sb2coJ2RhdGVTaGltJywgZGF0ZVNoaW0sIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgdmFsaWREYXRlID0gaXNWYWxpZERhdGUoY29udHJvbC52YWx1ZSk7XG4vLyAgICAgY29uc29sZS5sb2coJ2ludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yJywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgdmFsaWREYXRlKTtcbi8vICAgICByZXR1cm4gdmFsaWREYXRlID8geyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH0gOiBudWxsO1xuLy8gICB9O1xuLy8gfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgZXhwb3J0QXM6ICdjRGF0ZVJhbmdlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSxcbiAgICBEcm9wZG93bk1lbnVEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cENvbXBvbmVudCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwVGV4dERpcmVjdGl2ZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Nsb3NlT25TZWxlY3Q6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uYXZZZWFyRmlyc3Q6IEJvb2xlYW5JbnB1dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZm9ybWF0IG9mIGRheSBuYW1lLlxuICAgKiBAZGVmYXVsdCAnbnVtZXJpYydcbiAgICogQHR5cGUgRGF5Rm9ybWF0VHlwZVxuICAgKi9cbiAgQElucHV0KCkgZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNhbGVuZGFycyB0aGF0IHJlbmRlciBvbiBkZXNrdG9wIGRldmljZXMuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2FsZW5kYXJzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jYWxlbmRhcnMgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2FsZW5kYXJzKCkge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcnM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcnM6IG51bWJlciA9IDI7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNsZWFuZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGVhbmVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjbGVhbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW5lcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiB0aGUgZHJvcGRvd24gc2hvdWxkIGJlIGNsb3NlZCBhZnRlciB2YWx1ZSBzZXR0aW5nLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xvc2VPblNlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI2Nsb3NlT25TZWxlY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNsb3NlT25TZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2Nsb3NlT25TZWxlY3Q7XG4gIH1cblxuICAjY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgZGF0ZSBmb3JtYXQuXG4gICAqIFdlIHVzZSBkYXRlLWZucyB0byBmb3JtYXQgZGF0ZXMuIFZpc2l0IGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YyLjI4LjAvZG9jcy9mb3JtYXQgdG8gY2hlY2sgYWNjZXB0ZWQgcGF0dGVybnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgaW5kaWNhdG9yLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbmRpY2F0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmRpY2F0b3IgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGluZGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5kaWNhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlucHV0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnB1dFJlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbnB1dFJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFJlYWRPbmx5IHx8IHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFJlb3JkZXIgeWVhci1tb250aCBuYXZpZ2F0aW9uLCBhbmQgcmVuZGVyIHllYXIgZmlyc3QuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuYXZZZWFyRmlyc3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9uYXZZZWFyRmlyc3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdlllYXJGaXJzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2WWVhckZpcnN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2WWVhckZpcnN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBzaG9ydCBoaW50cyB0aGF0IGFyZSB2aXNpYmxlIGluIHN0YXJ0IGRhdGUgYW5kIGVuZCBkYXRlIGlucHV0cy5cbiAgICogdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFsnU3RhcnQgZGF0ZScsICdFbmQgZGF0ZSddO1xuXG4gIC8qKlxuICAgKiBQcmVkZWZpbmVkIGRhdGUgcmFuZ2VzIHRoZSB1c2VyIGNhbiBzZWxlY3QgZnJvbS5cbiAgICogQHR5cGUgSUNhbGVuZGFyUmFuZ2VzXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXM/OiBvYmplY3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbG9yIGNvbnRleHQgb2YgdGhlIGNhbmNlbCBidXR0b24gdG8gb25lIG9mIENvcmVVSeKAmXMgdGhlbWVkIGNvbG9ycy5cbiAgICogQHR5cGUgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdkYXJrJyB8ICdsaWdodCcgfCBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ3NlY29uZGFyeSdcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNDb2xvcj86IENvbG9ycyA9ICdzZWNvbmRhcnknO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSByYW5nZXMgYnV0dG9uIHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSAnc20nIHwgJ2xnJyB8IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzQnV0dG9uc1NpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogU2V0IHRoZSByYW5nZXMgYnV0dG9uIHZhcmlhbnQgdG8gYW4gb3V0bGluZWQgYnV0dG9uIG9yIGEgZ2hvc3QgYnV0dG9uLlxuICAgKiBAdHlwZSAnb3V0bGluZScgfCAnZ2hvc3QnIHwgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXNCdXR0b25zVmFyaWFudD86ICdvdXRsaW5lJyB8ICdnaG9zdCcgPSAnZ2hvc3QnO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGljb24gb3IgY2hhcmFjdGVyIHRoYXQgc2VwYXJhdGVzIHR3byBkYXRlcy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VwYXJhdG9yID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcGFyYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgX3NlcGFyYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCBvciBsYXJnZS5cbiAgICogQHR5cGUgJ3NtJyB8ICdsZycgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBzaXplPzogJ3NtJyB8ICdsZyc7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYW4gYWRkaXRpb25hbCB0aW1lIHNlbGVjdGlvbiBieSBhZGRpbmcgc2VsZWN0IGJveGVzIHRvIGNob29zZSB0aW1lLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdGltZXBpY2tlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RpbWVwaWNrZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHRpbWVwaWNrZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIHJldHVybiB0aGlzLl90aW1lcGlja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZXBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gZGF0ZS1waWNrZXIgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHN0YXJ0RGF0ZSh2YWx1ZSkge1xuICAgIGNvbnN0IHByZXZEYXRlID0gdGhpcy5fc3RhcnREYXRlID8gbmV3IERhdGUodGhpcy5fc3RhcnREYXRlKSA6IG51bGw7XG4gICAgdGhpcy5fc3RhcnREYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xuICAgIGlmIChwcmV2RGF0ZT8uZ2V0VGltZSgpICE9PSB0aGlzLl9zdGFydERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9zdGFydERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGFydERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0RGF0ZT86IERhdGUgfCBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlbmREYXRlKHZhbHVlKSB7XG4gICAgY29uc3QgcHJldkRhdGUgPSB0aGlzLl9lbmREYXRlID8gbmV3IERhdGUodGhpcy5fZW5kRGF0ZSA/PyAwKSA6IG51bGw7XG4gICAgdGhpcy5fZW5kRGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICBpZiAocHJldkRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5fZW5kRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmVuZERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9lbmREYXRlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2VuZERhdGU/OiBEYXRlIHwgbnVsbDtcblxuICBASW5wdXQoKSBjYWxlbmRhckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW10gfCBEYXRlW11bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBmaXJzdERheU9mV2Vlayh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZmlyc3REYXlPZldlZWsoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDE7XG5cbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBuYXZpZ2F0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbmF2aWdhdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX25hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JhbmdlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCByYW5nZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICBwcml2YXRlIF9yYW5nZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgZGF0ZUZpbHRlcj86IERhdGVGaWx0ZXJUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc3RhcnREYXRlSW5wdXQuZGlzYWJsZSgpIDogdGhpcy5zdGFydERhdGVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuZW5kRGF0ZUlucHV0LmRpc2FibGUoKSA6IHRoaXMuZW5kRGF0ZUlucHV0LmVuYWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucmFuZ2UgPyB7IC4uLnZhbHVlIH0gOiB2YWx1ZTtcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShuZXdWYWx1ZS5zdGFydERhdGUgPz8gbnVsbCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShuZXdWYWx1ZS5lbmREYXRlID8/IG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobmV3VmFsdWUgPz8gbnVsbCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gdGhpcy5yYW5nZSA/ICEhKHRoaXMudmFsdWUuc3RhcnREYXRlICYmIHRoaXMudmFsdWUuZW5kRGF0ZSkgOiAhIXRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9ICFoYXNWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9IHt9O1xuXG4gIC8qKlxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQHR5cGUgV2Vla2RheUZvcm1hdFR5cGVcbiAgICogQGRlZmF1bHQgJ3Nob3J0J1xuICAgKi9cbiAgQElucHV0KCkgd2Vla2RheUZvcm1hdDogV2Vla2RheUZvcm1hdFR5cGUgPSAnc2hvcnQnO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwb3BwZXIgT3B0aW9ucyBvYmplY3RcbiAgICogQHR5cGUgUGFydGlhbDxPcHRpb25zPlxuICAgKi9cbiAgQElucHV0KCdwb3BwZXJPcHRpb25zJykgcG9wcGVyanNPcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+ID0ge1xuICAgIHN0cmF0ZWd5OiAnZml4ZWQnXG4gIH07XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZVtdIHwgdW5kZWZpbmVkPigpO1xuXG4gIEBPdXRwdXQoKSBjYWxlbmRhckNlbGxIb3ZlcjogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBjYWxlbmRhckRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGVuZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgc3RhcnREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblxuICAvLyBAVmlld0NoaWxkKENhbGVuZGFyQ29tcG9uZW50KSBjYWxlbmRhckNvbXBvbmVudCE6IENhbGVuZGFyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdzdGFydERhdGVFbGVtZW50UmVmJykgc3RhcnREYXRlRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVFbGVtZW50UmVmJykgZW5kRGF0ZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHRlbXBsYXRlczogYW55ID0ge307XG4gIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVJZERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBjb250ZW50VGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlSWREaXJlY3RpdmU+O1xuXG4gIHByb3RlY3RlZCBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaWJlRGF0ZUNoYW5nZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgLy8gdG9kb1xuICAgICAgLy8gdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RhcnREYXRlQ2hhbmdlLnN1YnNjcmliZShuZXh0ID0+IHtcbiAgICAgIC8vICAgdGhpcy5zdGFydERhdGUgPSBuZXh0O1xuICAgICAgLy8gICB0aGlzLm9uQ2hhbmdlKG5leHQpO1xuICAgICAgLy8gfSkpO1xuICAgICAgLy8gdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RhcnREYXRlQ2hhbmdlLnN1YnNjcmliZShuZXh0ID0+IHtcbiAgICAgIC8vICAgdGhpcy5lbmREYXRlID0gbmV4dDtcbiAgICAgIC8vICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vIH0pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vYmlsZSA9IHRydWU7XG4gIHB1YmxpYyBjdXN0b21SYW5nZXMhOiBUQ3VzdG9tUmFuZ2VbXTtcblxuICBzZXQgc3RhcnREYXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc3RhcnREYXRlSW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX3N0YXJ0RGF0ZVZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc3RhcnREYXRlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9zdGFydERhdGVWYWx1ZTogc3RyaW5nID0gdGhpcy5zdGFydERhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgPz8gJyc7XG5cbiAgc2V0IGVuZERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbmREYXRlSW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX2VuZERhdGVWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGVuZERhdGVWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbmREYXRlVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgX2VuZERhdGVWYWx1ZTogc3RyaW5nID0gdGhpcy5lbmREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuXG4gIHB1YmxpYyBnZXQgc3RhcnREYXRlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnBsYWNlaG9sZGVyKSA/IHRoaXMucGxhY2Vob2xkZXJbMF0gOiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgZW5kRGF0ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wbGFjZWhvbGRlcikgPyB0aGlzLnBsYWNlaG9sZGVyWzFdIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgfTtcblxuICBwcml2YXRlIGxheW91dENoYW5nZXMhOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gdG9kbzogdmFsaWRhdGlvblxuICBzdGFydERhdGVJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0YXJ0RGF0ZVZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgIC8vIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxuICAgIC8vIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSxcbiAgICAvLyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcih0aGlzLmxvY2FsZSlcbiAgXSk7XG4gIGVuZERhdGVJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmVuZERhdGVWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgW1xuICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAvLyBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KSxcbiAgICAvLyBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCksXG4gICAgLy8gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IodGhpcy5sb2NhbGUpXG4gIF0pO1xuICBkYXRlUmFuZ2VHcm91cCE6IEZvcm1Hcm91cDtcblxuICBzZXQgaW5wdXRTdGFydEhvdmVyVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9pbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGlucHV0U3RhcnRIb3ZlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXJ0SG92ZXJWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0U3RhcnRIb3ZlclZhbHVlITogRGF0ZSB8IG51bGw7XG5cbiAgc2V0IGlucHV0RW5kSG92ZXJWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2lucHV0RW5kSG92ZXJWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGlucHV0RW5kSG92ZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbmRIb3ZlclZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbmRIb3ZlclZhbHVlITogRGF0ZSB8IG51bGw7XG5cbiAgZ2V0IGRhdGVQaWNrZXJDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnaXMtdmFsaWQnOiB0aGlzLnZhbGlkID09PSB0cnVlLFxuICAgICAgJ2lzLWludmFsaWQnOiB0aGlzLnZhbGlkID09PSBmYWxzZVxuICAgIH07XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRcbiAgICAgICAgICAgPyBkYXRlRm9ybWF0KGRhdGUsIHRoaXMuZm9ybWF0KVxuICAgICAgICAgICA6IHRoaXMudGltZXBpY2tlclxuICAgICAgICAgICAgID8gZGF0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSlcbiAgICAgICAgICAgICA6IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGF5b3V0Q2hhbmdlcyA9IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW1xuICAgICAgQnJlYWtwb2ludHMuSGFuZHNldCxcbiAgICAgIEJyZWFrcG9pbnRzLlRhYmxldFxuICAgIF0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5pc01vYmlsZSA9IHJlc3VsdC5tYXRjaGVzO1xuICAgIH0pO1xuICAgIHRoaXMuY3VzdG9tUmFuZ2VzID0gdGhpcy5yYW5nZXMgPyBPYmplY3QuZW50cmllcyh0aGlzLnJhbmdlcykgOiBbXTtcblxuICAgIHRoaXMuc3RhcnREYXRlVmFsdWUgPSB0aGlzLnN0YXJ0RGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcbiAgICB0aGlzLmVuZERhdGVWYWx1ZSA9IHRoaXMuZW5kRGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcbiAgICB0aGlzLnN1YnNjcmliZURhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubGF5b3V0Q2hhbmdlcy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZShmYWxzZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuZm9yRWFjaCgoY2hpbGQ6IFRlbXBsYXRlSWREaXJlY3RpdmUpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNbY2hpbGQuaWRdID0gY2hpbGQudGVtcGxhdGVSZWY7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0ZSddKSB7XG4gICAgICAvLyBmb3IgZGF0ZS1waWNrZXIgY29tcG9uZW50XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snZGF0ZSddPy5jdXJyZW50VmFsdWUpID8/IG51bGw7XG4gICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZGF0ZSA/PyB0aGlzLmNhbGVuZGFyRGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3N0YXJ0RGF0ZSddKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snc3RhcnREYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlID8/IHRoaXMuY2FsZW5kYXJEYXRlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZW5kRGF0ZSddKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snZW5kRGF0ZSddPy5jdXJyZW50VmFsdWUpID8/IG51bGw7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFZhbHVlVG9EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGdldExvY2FsRGF0ZUZyb21TdHJpbmcodmFsdWUsIHRoaXMubG9jYWxlLCB0aGlzLnRpbWVwaWNrZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpID8/IG51bGw7XG4gIH1cblxuICBnZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgcmV0dXJuIGN1c3RvbVJhbmdlWzBdO1xuICB9XG5cbiAgc2V0Q3VzdG9tUmFuZ2UoY3VzdG9tUmFuZ2U6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q3VzdG9tUmFuZ2VLZXkoY3VzdG9tUmFuZ2UpO1xuICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGN1c3RvbVJhbmdlWzFdWzBdKTtcbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMV0pO1xuICB9XG5cbiAgaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50OiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuY2FsZW5kYXJDZWxsSG92ZXIuZW1pdCgkZXZlbnQpO1xuICAgIGlmICghdGhpcy5zdGFydERhdGUpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLnN0YXJ0RGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlID0gJGV2ZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9ICRldmVudDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gJGV2ZW50LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuc3RhcnREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZSA/PyBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IGRhdGUgPyBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgOiAnJztcbiAgICAgIHRoaXMuaW5wdXRTdGFydEhvdmVyVmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UgPyB7IHN0YXJ0RGF0ZTogdGhpcy5zdGFydERhdGUsIGVuZERhdGU6IHRoaXMuZW5kRGF0ZSB9IDogdGhpcy5zdGFydERhdGU7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuZW5kRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZSA/PyBudWxsO1xuICAgICAgdGhpcy5lbmREYXRlVmFsdWUgPSBkYXRlID8gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpIDogJyc7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogdGhpcy5lbmREYXRlIH0gOiB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGVhcigkZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gdGhpcy5jYWxlbmRhckNvbXBvbmVudC5jbGVhckRhdGVzKCk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICAvLyB0aGlzLmNhbGVuZGFyQ29tcG9uZW50LmNsZWFyRGF0ZXMoKTtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5lbmREYXRlICYmIHRoaXMuZW5kRGF0ZSA8IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UodGhpcy5zdGFydERhdGUgPz8gbnVsbCk7XG4gIH1cblxuICBoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5zdGFydERhdGUgPiBkYXRlKSkpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UodGhpcy5lbmREYXRlID8/IG51bGwpO1xuICB9XG5cbiAgZm9yYmlkZGVuRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSA9IChlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmICghZWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBkYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIC8vIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZUFzRGF0ZSA9IGRhdGU7XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UgPyB7IC4uLnZhbHVlIH0gOiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdGFydFRpbWVDaGFuZ2UodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc3RhcnREYXRlID0gdGltZSA/PyB0aGlzLnN0YXJ0RGF0ZTtcbiAgfVxuXG4gIGhhbmRsZUVuZFRpbWVDaGFuZ2UodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVuZERhdGUgPSB0aW1lID8/IHRoaXMuZW5kRGF0ZTtcbiAgfVxufVxuIiwiPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBjbGFzcz1cImRhdGUtcGlja2VyIHBpY2tlclwiIFtuZ0NsYXNzXT1cImRhdGVQaWNrZXJDbGFzc2VzXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW3BvcHBlck9wdGlvbnNdPVwicG9wcGVyanNPcHRpb25zXCI+XG4gIDxjLWlucHV0LWdyb3VwIFtjYXJldF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCA/PyBkcm9wZG93bi52aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgW3NpemluZ109XCJzaXplID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgY0Ryb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwXCJcbiAgPlxuICAgIDxpbnB1dCAoY2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RhcnREYXRlSW5wdXRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRTdGFydEhvdmVyVmFsdWV9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInN0YXJ0RGF0ZVBsYWNlaG9sZGVyID8/IHBsYWNlaG9sZGVyWzBdXCJcbiAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICNzdGFydERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICBbdmFsaWRdPVwicmFuZ2UgPyB1bmRlZmluZWQgOiB2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwicmFuZ2UgJiYgc2VwYXJhdG9yICE9PSBmYWxzZVwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaWNvbiBkYXRlLXBpY2tlci1hcnJvdy1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDxpbnB1dCAoY2hhbmdlKT1cImhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRFbmRIb3ZlclZhbHVlfVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbmREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMV1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI2VuZERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICBbdmFsaWRdPVwidmFsaWRcIlxuICAgID5cbiAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvciB8fCBjbGVhbmVyXCIgY0lucHV0R3JvdXBUZXh0PlxuICAgICAgPHNwYW4gKm5nSWY9XCJpbmRpY2F0b3JcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pbmRpY2F0b3JcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaWNvbiBkYXRlLXBpY2tlci1pbnB1dC1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiBoYW5kbGVDbGVhcigkZXZlbnQpXCIgKm5nSWY9XCJjbGVhbmVyICYmIHN0YXJ0RGF0ZUVsZW1lbnRSZWYudmFsdWUgJiYgIWRpc2FibGVkXCIgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtY2xlYW5lclwiIHJvbGU9XCJidXR0b25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaWNvbiBkYXRlLXBpY2tlci1jbGVhbmVyLWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuXG4gIDwvYy1pbnB1dC1ncm91cD5cbiAgPGRpdiBjRHJvcGRvd25NZW51PlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1ib2R5XCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyYW5nZXNcIiBjbGFzcz1cImRhdGUtcGlja2VyLXJhbmdlc1wiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldEN1c3RvbVJhbmdlKGN1c3RvbVJhbmdlKVwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3VzdG9tUmFuZ2Ugb2YgY3VzdG9tUmFuZ2VzXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJyYW5nZXNCdXR0b25zQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3NpemVdPVwicmFuZ2VzQnV0dG9uc1NpemVcIlxuICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwicmFuZ2VzQnV0dG9uc1ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgICAgY0J1dHRvbj5cbiAgICAgICAgICAgIHt7Z2V0Q3VzdG9tUmFuZ2VLZXkoY3VzdG9tUmFuZ2UpfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGMtY2FsZW5kYXJcbiAgICAgICAgKGNhbGVuZGFyQ2VsbEhvdmVyKT1cImhhbmRsZUNhbGVuZGFyQ2VsbEhvdmVyKCRldmVudClcIlxuICAgICAgICAoY2FsZW5kYXJEYXRlQ2hhbmdlKT1cImhhbmRsZUNhbGVuZGFyRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGVuZERhdGVDaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHN0YXJ0RGF0ZUNoYW5nZSk9XCJoYW5kbGVTdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtjYWxlbmRhckRhdGVdPVwiY2FsZW5kYXJEYXRlXCJcbiAgICAgICAgW2NhbGVuZGFyc109XCJpc01vYmlsZSA/IDEgOiBjYWxlbmRhcnNcIlxuICAgICAgICBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZXNdPVwiZGlzYWJsZWREYXRlc1wiXG4gICAgICAgIFtlbmREYXRlXT1cImVuZERhdGVcIlxuICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgW25hdmlnYXRpb25dPVwibmF2aWdhdGlvblwiXG4gICAgICAgIFtyYW5nZV09XCJyYW5nZVwiXG4gICAgICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlXCJcbiAgICAgICAgW25hdlllYXJGaXJzdF09XCJuYXZZZWFyRmlyc3RcIlxuICAgICAgICBbZGF5Rm9ybWF0XT1cImRheUZvcm1hdFwiXG4gICAgICAgIFt3ZWVrZGF5Rm9ybWF0XT1cIndlZWtkYXlGb3JtYXRcIlxuICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWNhbGVuZGFyc1wiXG4gICAgICA+PC9jLWNhbGVuZGFyPlxuICAgICAgPGRpdiAqbmdJZj1cImZhbHNlICYmIHRpbWVwaWNrZXJcIiBjbGFzcz1cImRhdGUtcGlja2VyLXRpbWVwaWNrZXJzXCI+XG4gICAgICAgIDwhLS0gdG9kby0tPlxuICAgICAgICA8Yy10aW1lLXBpY2tlclxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWxlY3RcIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0YXJ0RGF0ZVwiXG4gICAgICAgICAgW3RpbWVdPVwic3RhcnREYXRlID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlU3RhcnRUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jLXRpbWUtcGlja2VyPlxuICAgICAgICA8Yy10aW1lLXBpY2tlclxuICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWxlY3RcIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuZERhdGVcIlxuICAgICAgICAgIFt0aW1lXT1cImVuZERhdGUgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVFbmRUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jLXRpbWUtcGlja2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlcz8uZGF0ZVBpY2tlckZvb3RlclwiIGNsYXNzPVwicGlja2VyLWZvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcz8uZGF0ZVBpY2tlckZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2MtZHJvcGRvd24+XG4iXX0=