@leanix/components 0.3.6 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,7 +12,8 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "ngx-bootstrap/datepicker";
13
13
  import * as i2 from "@angular/common";
14
14
  import * as i3 from "@angular/forms";
15
- import * as i4 from "../../../core-ui/pipes/custom-date.pipe";
15
+ import * as i4 from "../../../core-ui/directives/autofocus.directive";
16
+ import * as i5 from "../../../core-ui/pipes/custom-date.pipe";
16
17
  const DEFAULT_MIN_DATE = new Date('0000-01-01');
17
18
  const DEFAULT_MAX_DATE = new Date('9999-12-31');
18
19
  export class DateInputComponent {
@@ -48,6 +49,8 @@ export class DateInputComponent {
48
49
  this.shortcutPropagation = false; // if true shortcut`s event propagation will be disabled
49
50
  this.customClass = []; // array of custom css classes to be applied to
50
51
  this.dateDisabled = []; // array of disabled dates if mode is day, or years, etc.
52
+ this.autoFocus = false;
53
+ this.closeDateInput = new EventEmitter();
51
54
  this.showDatepicker = false;
52
55
  this.destroyed$ = new Subject();
53
56
  this.hasError = false;
@@ -97,6 +100,7 @@ export class DateInputComponent {
97
100
  hidePopup() {
98
101
  if (this.showDatepicker) {
99
102
  this.showDatepicker = false;
103
+ this.closeDateInput.emit();
100
104
  }
101
105
  }
102
106
  onDateStringChange(newDateString, emit = true) {
@@ -177,10 +181,10 @@ export class DateInputComponent {
177
181
  }
178
182
  }
179
183
  DateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DATE_FORMATS }, { token: DATE_FN_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
180
- DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", datepickerMode: "datepickerMode", initDateString: "initDateString", minDate: "minDate", maxDate: "maxDate", minMode: "minMode", maxMode: "maxMode", showWeeks: "showWeeks", formatDay: "formatDay", formatMonth: "formatMonth", formatYear: "formatYear", formatDayHeader: "formatDayHeader", formatDayTitle: "formatDayTitle", formatMonthTitle: "formatMonthTitle", startingDay: "startingDay", yearRange: "yearRange", onlyCurrentMonth: "onlyCurrentMonth", shortcutPropagation: "shortcutPropagation", customClass: "customClass", disabled: "disabled", dateDisabled: "dateDisabled" }, outputs: { dateChange: "dateChange", dateStringChange: "dateStringChange" }, providers: [
184
+ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", datepickerMode: "datepickerMode", initDateString: "initDateString", minDate: "minDate", maxDate: "maxDate", minMode: "minMode", maxMode: "maxMode", showWeeks: "showWeeks", formatDay: "formatDay", formatMonth: "formatMonth", formatYear: "formatYear", formatDayHeader: "formatDayHeader", formatDayTitle: "formatDayTitle", formatMonthTitle: "formatMonthTitle", startingDay: "startingDay", yearRange: "yearRange", onlyCurrentMonth: "onlyCurrentMonth", shortcutPropagation: "shortcutPropagation", customClass: "customClass", disabled: "disabled", dateDisabled: "dateDisabled", autoFocus: "autoFocus" }, outputs: { dateChange: "dateChange", dateStringChange: "dateStringChange", closeDateInput: "closeDateInput" }, providers: [
181
185
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
182
186
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
183
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"], components: [{ type: i1.DatePickerComponent, selector: "datepicker", inputs: ["datepickerMode", "showWeeks", "activeDate", "initDate", "minDate", "maxDate", "minMode", "maxMode", "formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "startingDay", "yearRange", "onlyCurrentMonth", "shortcutPropagation", "monthColLimit", "yearColLimit", "customClass", "dateDisabled", "dayDisabled"], outputs: ["selectionDone", "activeDateChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "lxDate": i4.CustomDatePipe } });
187
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-radius-0 input.dateControl{border-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"], components: [{ type: i1.DatePickerComponent, selector: "datepicker", inputs: ["datepickerMode", "showWeeks", "activeDate", "initDate", "minDate", "maxDate", "minMode", "maxMode", "formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "startingDay", "yearRange", "onlyCurrentMonth", "shortcutPropagation", "monthColLimit", "yearColLimit", "customClass", "dateDisabled", "dayDisabled"], outputs: ["selectionDone", "activeDateChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.AutofocusDirective, selector: "[lxAutofocus]", inputs: ["lxAutofocus", "lxAutofocusPreventScroll"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "lxDate": i5.CustomDatePipe } });
184
188
  __decorate([
185
189
  Observe('initDateString')
186
190
  ], DateInputComponent.prototype, "initDateString$", void 0);
@@ -189,7 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
189
193
  args: [{ selector: 'lx-date-input', providers: [
190
194
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
191
195
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
192
- ], template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"] }]
196
+ ], template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-radius-0 input.dateControl{border-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"] }]
193
197
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
194
198
  type: Inject,
195
199
  args: [DATE_FORMATS]
@@ -254,8 +258,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
254
258
  type: Input
255
259
  }], dateDisabled: [{
256
260
  type: Input
261
+ }], autoFocus: [{
262
+ type: Input
263
+ }], closeDateInput: [{
264
+ type: Output
257
265
  }], input: [{
258
266
  type: ViewChild,
259
267
  args: ['input']
260
268
  }] } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQXVCLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFLbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxNQUFN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QUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZvcm1hdCwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXIsIERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgREFURV9GTl9MT0NBTEUsIERBVEVfRk9STUFUUywgRGF0ZUZvcm1hdHNQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUtdWkvY29yZS11aS5jb25zdGFudHMnO1xuaW1wb3J0IHsgY29udmVydERhdGVUb0xvY2FsZURhdGVTdHJpbmcsIGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZywgaXNWYWxpZERhdGVTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZS1oZWxwZXJzJztcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2ZSc7XG5cbi8vIElucHV0ICsgbmcyLWJvb3RzdHJhcCBkYXRlcGlja2VyXG5leHBvcnQgdHlwZSBEYXRlSW5wdXRSZW5kZXJpbmdTdHlsZSA9ICdJTlBVVCcgfCAnTElOSyc7XG5cbmNvbnN0IERFRkFVTFRfTUlOX0RBVEUgPSBuZXcgRGF0ZSgnMDAwMC0wMS0wMScpO1xuY29uc3QgREVGQVVMVF9NQVhfREFURSA9IG5ldyBEYXRlKCc5OTk5LTEyLTMxJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LWRhdGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJ2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlSW5wdXRDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBwdWJsaWMgZGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsOyAvLyBtYWluIGRhdGUgaW5wdXQ7IHRoaXMgaXMgYWxzbyB0aGUgb25lIHVzZWQgZm9yIG5nTW9kZWwgJiBmb3JtQ29udHJvbCFcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpOyAvLyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIGRhdGUgY2hhbmdlc1xuICBASW5wdXQoKSBwdWJsaWMgZGF0ZVN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIHNlY29uZGFyeSwgYWx0ZXJuYXRpdmUgaW5wdXQgd2l0aCBkYXRlIHN0cmluZ1xuICBAT3V0cHV0KCkgZGF0ZVN0cmluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTsgLy8gdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBkYXRlIGNoYW5nZXNcbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgZm9ybUdyb3VwJ3MgdmFsdWUgYWNjZXNzb3IgaXMgYWNjZXNzaW5nIHRoZSBzZWxlY3RlZCBJRHMgb3IgdGhlIHNlbGVjdGVkIG9iamVjdHNcbiAgQElucHV0KCkgcHVibGljIHZhbHVlQWNjZXNzb3I6ICdkYXRlJyB8ICdkYXRlU3RyaW5nJyA9ICdkYXRlJztcblxuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRJZDogc3RyaW5nID0gJyc7IC8vIGlkIHRvIGJlIHNldCBvbiBpbnB1dCB0byBjb3JyZXNwb25kIHRvIG91dHNpZGUgbGFiZWxcbiAgQElucHV0KCkgcHVibGljIHJlbmRlcmluZ1N0eWxlOiBEYXRlSW5wdXRSZW5kZXJpbmdTdHlsZSA9ICdJTlBVVCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ3l5eXktbW0tZGQnO1xuXG4gIC8vLS0tIElucHV0cyByZXBsaWNhdGVkIGZyb20gZGF0ZXBpY2tlcjsgKHNlbGVjdGlvbkRvbmUpIGlzIG5vdCBuZWVkZWQsIGFzIChkYXRlQ2hhbmdlKSBpcyBlcXVpdmFsZW5cbiAgQElucHV0KCkgcHVibGljIGRhdGVwaWNrZXJNb2RlOiBzdHJpbmcgPSAnZGF5JzsgLy8gc2V0cyBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBkYXksIG1vbnRoLCB5ZWFyXG4gIEBJbnB1dCgpIGluaXREYXRlU3RyaW5nITogc3RyaW5nOyAvLyBkZWZhdWx0IGRhdGUgdG8gc2hvdyBpZiBuZy1tb2RlbCB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkXG4gIEBPYnNlcnZlKCdpbml0RGF0ZVN0cmluZycpIGluaXREYXRlU3RyaW5nJCE6IE9ic2VydmFibGU8c3RyaW5nPjsgLy8gZGVmYXVsdCBkYXRlIHRvIHNob3cgaWYgbmctbW9kZWwgdmFsdWUgaXMgbm90IHNwZWNpZmllZFxuICBASW5wdXQoKSBwdWJsaWMgbWluRGF0ZSA9IERFRkFVTFRfTUlOX0RBVEU7IC8vIG9sZGVzdCBzZWxlY3RhYmxlIGRhdGVcbiAgQElucHV0KCkgcHVibGljIG1heERhdGUgPSBERUZBVUxUX01BWF9EQVRFOyAvLyBsYXRlc3Qgc2VsZWN0YWJsZSBkYXRlXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5Nb2RlOiBzdHJpbmcgPSAnZGF5JzsgLy8gc2V0IGxvd2VyIGRhdGVwaWNrZXIgbW9kZSwgc3VwcG9ydHM6IGRheSwgbW9udGgsIHllYXJcbiAgQElucHV0KCkgcHVibGljIG1heE1vZGU6IHN0cmluZyA9ICd5ZWFyJzsgLy8gc2V0cyB1cHBlciBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBkYXksIG1vbnRoLCB5ZWFyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93V2Vla3M6IGJvb2xlYW4gPSB0cnVlOyAvLyBpZiBmYWxzZSB3ZWVrIG51bWJlcnMgd2lsbCBiZSBoaWRkZW5cbiAgQElucHV0KCkgcHVibGljIGZvcm1hdERheTogc3RyaW5nID0gJ0REJzsgLy8gZm9ybWF0IG9mIGRheSBpbiBtb250aFxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0TW9udGg6IHN0cmluZyA9ICdNTU1NJzsgLy8gZm9ybWF0IG9mIG1vbnRoIGluIHllYXJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdFllYXI6IHN0cmluZyA9ICdZWVlZJzsgLy8gZm9ybWF0IG9mIHllYXIgaW4geWVhciByYW5nZVxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0RGF5SGVhZGVyOiBzdHJpbmcgPSAnZGQnOyAvLyBmb3JtYXQgb2YgZGF5IGluIHdlZWsgaGVhZGVyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXREYXlUaXRsZTogc3RyaW5nID0gJ01NTU0gWVlZWSc7IC8vIGZvcm1hdCBvZiB0aXRsZSB3aGVuIHNlbGVjdGluZyBkYXlcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdE1vbnRoVGl0bGU6IHN0cmluZyA9ICdZWVlZJzsgLy8gZm9ybWF0IG9mIHRpdGxlIHdoZW4gc2VsZWN0aW5nIG1vbnRoXG4gIEBJbnB1dCgpIHN0YXJ0aW5nRGF5OiBudW1iZXIgPSAwOyAvLyBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgZnJvbSAwLTYgKDA9U3VuZGF5LCAuLi4sIDY9U2F0dXJkYXkpIHB1YmxpY1xuICBASW5wdXQoKSBwdWJsaWMgeWVhclJhbmdlOiBudW1iZXIgPSAyMDsgLy8gbnVtYmVyIG9mIHllYXJzIGRpc3BsYXllZCBpbiB5ZWFyIHNlbGVjdGlvblxuICBASW5wdXQoKSBwdWJsaWMgb25seUN1cnJlbnRNb250aDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiB0cnVlIG9ubHkgZGF0ZXMgZnJvbSB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBtb250aCB3aWxsIGJlIHNob3duXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG9ydGN1dFByb3BhZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7IC8vICBpZiB0cnVlIHNob3J0Y3V0YHMgZXZlbnQgcHJvcGFnYXRpb24gd2lsbCBiZSBkaXNhYmxlZFxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3M6IHsgZGF0ZTogRGF0ZTsgbW9kZTogc3RyaW5nOyBjbGF6ejogc3RyaW5nIH1bXSA9IFtdOyAvLyBhcnJheSBvZiBjdXN0b20gY3NzIGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0b1xuICAvLyB0YXJnZXRlZCBkYXRlc1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgZGF0ZURpc2FibGVkOiB7IGRhdGU6IERhdGU7IG1vZGU6IHN0cmluZyB9W10gPSBbXTsgLy8gYXJyYXkgb2YgZGlzYWJsZWQgZGF0ZXMgaWYgbW9kZSBpcyBkYXksIG9yIHllYXJzLCBldGMuXG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgc2hvd0RhdGVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0ZUZvcm1hdDogc3RyaW5nO1xuICBpbml0RGF0ZSE6IERhdGU7XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8tLSBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJpdmF0ZSBmb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvblRvdWNoZWQhOiAoKSA9PiB2b2lkO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfZGF0ZTogRGF0ZSB8IG51bGwpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoREFURV9GT1JNQVRTKSBwcml2YXRlIGRhdGVGb3JtYXRzUHJvdmlkZXI6IERhdGVGb3JtYXRzUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX0ZOX0xPQ0FMRSkgcHJpdmF0ZSBnZXREYXRlRm5Mb2NhbGU/OiBGdW5jdGlvblxuICApIHtcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXRzUHJvdmlkZXIuZ2V0RGF0ZUZvcm1hdCgpO1xuICAgIC8vIFBhdGNoIERhdGVQaWNrZXIgdW50aWwgaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25nMi1ib290c3RyYXAvaXNzdWVzLzEzODUgaXMgcmVzb2x2ZWRcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gRGF0ZVBpY2tlckNvbXBvbmVudC5wcm90b3R5cGUud3JpdGVWYWx1ZTtcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LnByb3RvdHlwZS53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlVmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzIGFzIGFueSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNvbWVob3cgZGF0ZXBpY2tlciBkb2VzIHVzZSBhIHNlcGFyYXRlIG1vbWVudCBpbnN0YW5jZSB0aGFuIHdlIGRvLiBUaGF0IG9uZSBydW5zIG9uIGxvY2FsZSBlbiBieSBkZWZhdWx0LlxuICAgIC8vIFNvIHdlIHBhdGNoIHRoZSBmb3JtYXQgZnVuY3Rpb24gaGVyZSB0byB1c2Ugb3VyIG1vbWVudCBpbnN0YW5jZS5cbiAgICAvLyBNYXliZSBpdCB3aWxsIGJlIGZpeGVkIHdpdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS92YWxvci1zb2Z0d2FyZS9uZ3gtYm9vdHN0cmFwL2lzc3Vlcy80NTVcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmdldERhdGVGbkxvY2FsZSA/IHRoaXMuZ2V0RGF0ZUZuTG9jYWxlKCkgOiBudWxsO1xuICAgIERhdGVGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBmOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgZiwgeyBsb2NhbGUgfSk7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdERhdGVTdHJpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgdGhpcy5pbml0RGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhkYXRlKSA/PyBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0ZSddKSB7XG4gICAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2RhdGVTdHJpbmcnXSkge1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1BvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSAhdGhpcy5zaG93RGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVTdHJpbmdDaGFuZ2UobmV3RGF0ZVN0cmluZzogc3RyaW5nIHwgbnVsbCwgZW1pdDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAoaXNWYWxpZERhdGVTdHJpbmcobmV3RGF0ZVN0cmluZykpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBjcmVhdGVEYXRlRnJvbURhdGVTdHJpbmcobmV3RGF0ZVN0cmluZyk7XG4gICAgICB0aGlzLnVwZGF0ZURhdGUoZGF0ZSwgZW1pdCk7XG4gICAgfSBlbHNlIGlmIChuZXdEYXRlU3RyaW5nID09PSBudWxsIHx8IG5ld0RhdGVTdHJpbmcgPT09ICcnKSB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGUobnVsbCwgZW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25Eb25lKG5ld0RhdGU6IERhdGUpIHtcbiAgICB0aGlzLnVwZGF0ZURhdGUobmV3RGF0ZSk7XG4gICAgdGhpcy5oaWRlUG9wdXAoKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRlKGRhdGU6IERhdGUgfCBudWxsLCBlbWl0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuZGF0ZSA9IGRhdGU7XG4gICAgdGhpcy5kYXRlU3RyaW5nID0gdGhpcy5kYXRlID8gY29udmVydERhdGVUb0xvY2FsZURhdGVTdHJpbmcodGhpcy5kYXRlKSA6ICcnO1xuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZ0NoYW5nZS5lbWl0KHRoaXMuZGF0ZVN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGRhdGUpO1xuICAgIHRoaXMucmVjaGVja0Vycm9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNoZWNrRXJyb3JzKCkge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgLy8tLS0gSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8qKiBXcml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC4gKi9cbiAgd3JpdGVWYWx1ZShuZXdEYXRlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudmFsdWVBY2Nlc3NvciA9PT0gJ2RhdGUnKSB7XG4gICAgICB0aGlzLmRhdGUgPSBuZXdEYXRlIGFzIERhdGU7XG4gICAgICB0aGlzLmRhdGVTdHJpbmcgPSBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVTdHJpbmcgPSBuZXdEYXRlIGFzIHN0cmluZztcbiAgICAgIHRoaXMub25EYXRlU3RyaW5nQ2hhbmdlKHRoaXMuZGF0ZVN0cmluZywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgY2hhbmdlIGV2ZW50LiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWx1ZUFjY2Vzc29yID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoZm4pO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZUFjY2Vzc29yID09PSAnZGF0ZVN0cmluZycpIHtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZ0NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoZm4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgdG91Y2ggZXZlbnQuICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IGM7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3JcbiAgICAgID8ge1xuICAgICAgICAgIGRhdGVGb3JtYXRFcnJvcjoge1xuICAgICAgICAgICAgZ2l2ZW46IHRoaXMuZGF0ZVN0cmluZyxcbiAgICAgICAgICAgIGZvcm1hdDogJ3l5eXktbW0tZGQnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJiYWNrZHJvcFwiICpuZ0lmPVwic2hvd0RhdGVwaWNrZXJcIiAoY2xpY2spPVwiaGlkZVBvcHVwKClcIj48L2Rpdj5cbjxzcGFuIGNsYXNzPVwid3JhcHBlclwiIFtjbGFzcy5mb3JMaW5rXT1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIiBbY2xhc3MuaGFzLWVycm9yXT1cImhhc0Vycm9yXCI+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGRhdGVDb250cm9sXCJcbiAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgWyhuZ01vZGVsKV09XCJkYXRlU3RyaW5nXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwic2hvd1BvcHVwKClcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJoaWRlUG9wdXAoKVwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cImhpZGVQb3B1cCgpXCJcbiAgICAoa2V5ZG93bi50YWIpPVwiaGlkZVBvcHVwKClcIlxuICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJoaWRlUG9wdXAoKVwiXG4gICAgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImhhc0Vycm9yXCJcbiAgICAqbmdJZj1cInJlbmRlcmluZ1N0eWxlID09PSAnSU5QVVQnXCJcbiAgLz5cbiAgPGEgY2xhc3M9XCJkYXRlQ29udHJvbFwiIChjbGljayk9XCJ0b2dnbGVQb3B1cCgpXCIgKm5nSWY9XCJyZW5kZXJpbmdTdHlsZSA9PT0gJ0xJTksnXCI+e3sgZGF0ZSB8IGx4RGF0ZTogZGF0ZUZvcm1hdCB9fTwvYT5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJDb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICAgIDxkYXRlcGlja2VyXG4gICAgICAgIGNsYXNzPVwicG9wdXBcIlxuICAgICAgICAqbmdJZj1cInNob3dEYXRlcGlja2VyXCJcbiAgICAgICAgKHNlbGVjdGlvbkRvbmUpPVwib25TZWxlY3Rpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbbmdNb2RlbF09XCJkYXRlXCJcbiAgICAgICAgW2RhdGVwaWNrZXJNb2RlXT1cImRhdGVwaWNrZXJNb2RlXCJcbiAgICAgICAgW2luaXREYXRlXT1cImluaXREYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluTW9kZV09XCJtaW5Nb2RlXCJcbiAgICAgICAgW21heE1vZGVdPVwibWF4TW9kZVwiXG4gICAgICAgIFtzaG93V2Vla3NdPVwic2hvd1dlZWtzXCJcbiAgICAgICAgW2Zvcm1hdERheV09XCJmb3JtYXREYXlcIlxuICAgICAgICBbZm9ybWF0TW9udGhdPVwiZm9ybWF0TW9udGhcIlxuICAgICAgICBbZm9ybWF0WWVhcl09XCJmb3JtYXRZZWFyXCJcbiAgICAgICAgW2Zvcm1hdERheUhlYWRlcl09XCJmb3JtYXREYXlIZWFkZXJcIlxuICAgICAgICBbZm9ybWF0RGF5VGl0bGVdPVwiZm9ybWF0RGF5VGl0bGVcIlxuICAgICAgICBbZm9ybWF0TW9udGhUaXRsZV09XCJmb3JtYXRNb250aFRpdGxlXCJcbiAgICAgICAgW3N0YXJ0aW5nRGF5XT1cInN0YXJ0aW5nRGF5XCJcbiAgICAgICAgW3llYXJSYW5nZV09XCJ5ZWFyUmFuZ2VcIlxuICAgICAgICBbb25seUN1cnJlbnRNb250aF09XCJvbmx5Q3VycmVudE1vbnRoXCJcbiAgICAgICAgW3Nob3J0Y3V0UHJvcGFnYXRpb25dPVwic2hvcnRjdXRQcm9wYWdhdGlvblwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCJjdXN0b21DbGFzc1wiXG4gICAgICAgIFtkYXRlRGlzYWJsZWRdPVwiZGF0ZURpc2FibGVkXCJcbiAgICAgID5cbiAgICAgIDwvZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NwYW4+XG4iXX0=
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQXVCLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBS2xELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEQsTUFB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QkFBbEMsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmb3JtYXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyLCBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERBVEVfRk5fTE9DQUxFLCBEQVRFX0ZPUk1BVFMsIERhdGVGb3JtYXRzUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXVpL2NvcmUtdWkuY29uc3RhbnRzJztcbmltcG9ydCB7IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nLCBjcmVhdGVEYXRlRnJvbURhdGVTdHJpbmcsIGlzVmFsaWREYXRlU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RhdGUtaGVscGVycyc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuXG4vLyBJbnB1dCArIG5nMi1ib290c3RyYXAgZGF0ZXBpY2tlclxuZXhwb3J0IHR5cGUgRGF0ZUlucHV0UmVuZGVyaW5nU3R5bGUgPSAnSU5QVVQnIHwgJ0xJTksnO1xuXG5jb25zdCBERUZBVUxUX01JTl9EQVRFID0gbmV3IERhdGUoJzAwMDAtMDEtMDEnKTtcbmNvbnN0IERFRkFVTFRfTUFYX0RBVEUgPSBuZXcgRGF0ZSgnOTk5OS0xMi0zMScpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICdkYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVJbnB1dENvbXBvbmVudCksIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgcHVibGljIGRhdGU6IERhdGUgfCBudWxsID0gbnVsbDsgLy8gbWFpbiBkYXRlIGlucHV0OyB0aGlzIGlzIGFsc28gdGhlIG9uZSB1c2VkIGZvciBuZ01vZGVsICYgZm9ybUNvbnRyb2whXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTsgLy8gdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBkYXRlIGNoYW5nZXNcbiAgQElucHV0KCkgcHVibGljIGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyBzZWNvbmRhcnksIGFsdGVybmF0aXZlIGlucHV0IHdpdGggZGF0ZSBzdHJpbmdcbiAgQE91dHB1dCgpIGRhdGVTdHJpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7IC8vIHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgZGF0ZSBjaGFuZ2VzXG4gIC8vIERldGVybWluZSB3aGV0aGVyIGZvcm1Hcm91cCdzIHZhbHVlIGFjY2Vzc29yIGlzIGFjY2Vzc2luZyB0aGUgc2VsZWN0ZWQgSURzIG9yIHRoZSBzZWxlY3RlZCBvYmplY3RzXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZUFjY2Vzc29yOiAnZGF0ZScgfCAnZGF0ZVN0cmluZycgPSAnZGF0ZSc7XG5cbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZyA9ICcnOyAvLyBpZCB0byBiZSBzZXQgb24gaW5wdXQgdG8gY29ycmVzcG9uZCB0byBvdXRzaWRlIGxhYmVsXG4gIEBJbnB1dCgpIHB1YmxpYyByZW5kZXJpbmdTdHlsZTogRGF0ZUlucHV0UmVuZGVyaW5nU3R5bGUgPSAnSU5QVVQnO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICd5eXl5LW1tLWRkJztcblxuICAvLy0tLSBJbnB1dHMgcmVwbGljYXRlZCBmcm9tIGRhdGVwaWNrZXI7IChzZWxlY3Rpb25Eb25lKSBpcyBub3QgbmVlZGVkLCBhcyAoZGF0ZUNoYW5nZSkgaXMgZXF1aXZhbGVuXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRlcGlja2VyTW9kZTogc3RyaW5nID0gJ2RheSc7IC8vIHNldHMgZGF0ZXBpY2tlciBtb2RlLCBzdXBwb3J0czogZGF5LCBtb250aCwgeWVhclxuICBASW5wdXQoKSBpbml0RGF0ZVN0cmluZyE6IHN0cmluZzsgLy8gZGVmYXVsdCBkYXRlIHRvIHNob3cgaWYgbmctbW9kZWwgdmFsdWUgaXMgbm90IHNwZWNpZmllZFxuICBAT2JzZXJ2ZSgnaW5pdERhdGVTdHJpbmcnKSBpbml0RGF0ZVN0cmluZyQhOiBPYnNlcnZhYmxlPHN0cmluZz47IC8vIGRlZmF1bHQgZGF0ZSB0byBzaG93IGlmIG5nLW1vZGVsIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWRcbiAgQElucHV0KCkgcHVibGljIG1pbkRhdGUgPSBERUZBVUxUX01JTl9EQVRFOyAvLyBvbGRlc3Qgc2VsZWN0YWJsZSBkYXRlXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhEYXRlID0gREVGQVVMVF9NQVhfREFURTsgLy8gbGF0ZXN0IHNlbGVjdGFibGUgZGF0ZVxuICBASW5wdXQoKSBwdWJsaWMgbWluTW9kZTogc3RyaW5nID0gJ2RheSc7IC8vIHNldCBsb3dlciBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBkYXksIG1vbnRoLCB5ZWFyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhNb2RlOiBzdHJpbmcgPSAneWVhcic7IC8vIHNldHMgdXBwZXIgZGF0ZXBpY2tlciBtb2RlLCBzdXBwb3J0czogZGF5LCBtb250aCwgeWVhclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd1dlZWtzOiBib29sZWFuID0gdHJ1ZTsgLy8gaWYgZmFsc2Ugd2VlayBudW1iZXJzIHdpbGwgYmUgaGlkZGVuXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXREYXk6IHN0cmluZyA9ICdERCc7IC8vIGZvcm1hdCBvZiBkYXkgaW4gbW9udGhcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdE1vbnRoOiBzdHJpbmcgPSAnTU1NTSc7IC8vIGZvcm1hdCBvZiBtb250aCBpbiB5ZWFyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXRZZWFyOiBzdHJpbmcgPSAnWVlZWSc7IC8vIGZvcm1hdCBvZiB5ZWFyIGluIHllYXIgcmFuZ2VcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdERheUhlYWRlcjogc3RyaW5nID0gJ2RkJzsgLy8gZm9ybWF0IG9mIGRheSBpbiB3ZWVrIGhlYWRlclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0RGF5VGl0bGU6IHN0cmluZyA9ICdNTU1NIFlZWVknOyAvLyBmb3JtYXQgb2YgdGl0bGUgd2hlbiBzZWxlY3RpbmcgZGF5XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXRNb250aFRpdGxlOiBzdHJpbmcgPSAnWVlZWSc7IC8vIGZvcm1hdCBvZiB0aXRsZSB3aGVuIHNlbGVjdGluZyBtb250aFxuICBASW5wdXQoKSBzdGFydGluZ0RheTogbnVtYmVyID0gMDsgLy8gc3RhcnRpbmcgZGF5IG9mIHRoZSB3ZWVrIGZyb20gMC02ICgwPVN1bmRheSwgLi4uLCA2PVNhdHVyZGF5KSBwdWJsaWNcbiAgQElucHV0KCkgcHVibGljIHllYXJSYW5nZTogbnVtYmVyID0gMjA7IC8vIG51bWJlciBvZiB5ZWFycyBkaXNwbGF5ZWQgaW4geWVhciBzZWxlY3Rpb25cbiAgQElucHV0KCkgcHVibGljIG9ubHlDdXJyZW50TW9udGg6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgdHJ1ZSBvbmx5IGRhdGVzIGZyb20gdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgbW9udGggd2lsbCBiZSBzaG93blxuICBASW5wdXQoKSBwdWJsaWMgc2hvcnRjdXRQcm9wYWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlOyAvLyAgaWYgdHJ1ZSBzaG9ydGN1dGBzIGV2ZW50IHByb3BhZ2F0aW9uIHdpbGwgYmUgZGlzYWJsZWRcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzOiB7IGRhdGU6IERhdGU7IG1vZGU6IHN0cmluZzsgY2xheno6IHN0cmluZyB9W10gPSBbXTsgLy8gYXJyYXkgb2YgY3VzdG9tIGNzcyBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG9cbiAgLy8gdGFyZ2V0ZWQgZGF0ZXNcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGRhdGVEaXNhYmxlZDogeyBkYXRlOiBEYXRlOyBtb2RlOiBzdHJpbmcgfVtdID0gW107IC8vIGFycmF5IG9mIGRpc2FibGVkIGRhdGVzIGlmIG1vZGUgaXMgZGF5LCBvciB5ZWFycywgZXRjLlxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VEYXRlSW5wdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgc2hvd0RhdGVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0ZUZvcm1hdDogc3RyaW5nO1xuICBpbml0RGF0ZSE6IERhdGU7XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8tLSBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJpdmF0ZSBmb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvblRvdWNoZWQhOiAoKSA9PiB2b2lkO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfZGF0ZTogRGF0ZSB8IG51bGwpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoREFURV9GT1JNQVRTKSBwcml2YXRlIGRhdGVGb3JtYXRzUHJvdmlkZXI6IERhdGVGb3JtYXRzUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX0ZOX0xPQ0FMRSkgcHJpdmF0ZSBnZXREYXRlRm5Mb2NhbGU/OiBGdW5jdGlvblxuICApIHtcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXRzUHJvdmlkZXIuZ2V0RGF0ZUZvcm1hdCgpO1xuICAgIC8vIFBhdGNoIERhdGVQaWNrZXIgdW50aWwgaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25nMi1ib290c3RyYXAvaXNzdWVzLzEzODUgaXMgcmVzb2x2ZWRcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gRGF0ZVBpY2tlckNvbXBvbmVudC5wcm90b3R5cGUud3JpdGVWYWx1ZTtcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LnByb3RvdHlwZS53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlVmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzIGFzIGFueSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNvbWVob3cgZGF0ZXBpY2tlciBkb2VzIHVzZSBhIHNlcGFyYXRlIG1vbWVudCBpbnN0YW5jZSB0aGFuIHdlIGRvLiBUaGF0IG9uZSBydW5zIG9uIGxvY2FsZSBlbiBieSBkZWZhdWx0LlxuICAgIC8vIFNvIHdlIHBhdGNoIHRoZSBmb3JtYXQgZnVuY3Rpb24gaGVyZSB0byB1c2Ugb3VyIG1vbWVudCBpbnN0YW5jZS5cbiAgICAvLyBNYXliZSBpdCB3aWxsIGJlIGZpeGVkIHdpdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS92YWxvci1zb2Z0d2FyZS9uZ3gtYm9vdHN0cmFwL2lzc3Vlcy80NTVcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmdldERhdGVGbkxvY2FsZSA/IHRoaXMuZ2V0RGF0ZUZuTG9jYWxlKCkgOiBudWxsO1xuICAgIERhdGVGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBmOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgZiwgeyBsb2NhbGUgfSk7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdERhdGVTdHJpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgdGhpcy5pbml0RGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhkYXRlKSA/PyBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0ZSddKSB7XG4gICAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2RhdGVTdHJpbmcnXSkge1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1BvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSAhdGhpcy5zaG93RGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xvc2VEYXRlSW5wdXQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZVN0cmluZ0NoYW5nZShuZXdEYXRlU3RyaW5nOiBzdHJpbmcgfCBudWxsLCBlbWl0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChpc1ZhbGlkRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKSkge1xuICAgICAgY29uc3QgZGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKTtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShkYXRlLCBlbWl0KTtcbiAgICB9IGVsc2UgaWYgKG5ld0RhdGVTdHJpbmcgPT09IG51bGwgfHwgbmV3RGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShudWxsLCBlbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGlvbkRvbmUobmV3RGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudXBkYXRlRGF0ZShuZXdEYXRlKTtcbiAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGUoZGF0ZTogRGF0ZSB8IG51bGwsIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogJyc7XG4gICAgaWYgKGVtaXQpIHtcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLmVtaXQodGhpcy5kYXRlU3RyaW5nKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgdGhpcy5yZWNoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY2hlY2tFcnJvcnMoKSB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICAvLy0tLSBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLyoqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LiAqL1xuICB3cml0ZVZhbHVlKG5ld0RhdGU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy52YWx1ZUFjY2Vzc29yID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ld0RhdGUgYXMgRGF0ZTtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IG5ld0RhdGUgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy5kYXRlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlU3RyaW5nJykge1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sID0gYztcbiAgICByZXR1cm4gdGhpcy5oYXNFcnJvclxuICAgICAgPyB7XG4gICAgICAgICAgZGF0ZUZvcm1hdEVycm9yOiB7XG4gICAgICAgICAgICBnaXZlbjogdGhpcy5kYXRlU3RyaW5nLFxuICAgICAgICAgICAgZm9ybWF0OiAneXl5eS1tbS1kZCdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJhY2tkcm9wXCIgKm5nSWY9XCJzaG93RGF0ZXBpY2tlclwiIChjbGljayk9XCJoaWRlUG9wdXAoKVwiPjwvZGl2PlxuPHNwYW4gY2xhc3M9XCJ3cmFwcGVyXCIgW2NsYXNzLmZvckxpbmtdPVwicmVuZGVyaW5nU3R5bGUgPT09ICdMSU5LJ1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgPGlucHV0XG4gICAgI2lucHV0XG4gICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZGF0ZUNvbnRyb2xcIlxuICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbbHhBdXRvZm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICBbKG5nTW9kZWwpXT1cImRhdGVTdHJpbmdcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EYXRlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1cyk9XCJzaG93UG9wdXAoKVwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cImhpZGVQb3B1cCgpXCJcbiAgICAoa2V5ZG93bi5lc2NhcGUpPVwiaGlkZVBvcHVwKClcIlxuICAgIChrZXlkb3duLnRhYik9XCJoaWRlUG9wdXAoKVwiXG4gICAgKGtleWRvd24uc2hpZnQudGFiKT1cImhpZGVQb3B1cCgpXCJcbiAgICBbY2xhc3MudGV4dC1kYW5nZXJdPVwiaGFzRXJyb3JcIlxuICAgICpuZ0lmPVwicmVuZGVyaW5nU3R5bGUgPT09ICdJTlBVVCdcIlxuICAvPlxuICA8YSBjbGFzcz1cImRhdGVDb250cm9sXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKClcIiAqbmdJZj1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIj57eyBkYXRlIHwgbHhEYXRlOiBkYXRlRm9ybWF0IH19PC9hPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlckNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhclwiPlxuICAgICAgPGRhdGVwaWNrZXJcbiAgICAgICAgY2xhc3M9XCJwb3B1cFwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RhdGVwaWNrZXJcIlxuICAgICAgICAoc2VsZWN0aW9uRG9uZSk9XCJvblNlbGVjdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgIFtuZ01vZGVsXT1cImRhdGVcIlxuICAgICAgICBbZGF0ZXBpY2tlck1vZGVdPVwiZGF0ZXBpY2tlck1vZGVcIlxuICAgICAgICBbaW5pdERhdGVdPVwiaW5pdERhdGVcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgIFttaW5Nb2RlXT1cIm1pbk1vZGVcIlxuICAgICAgICBbbWF4TW9kZV09XCJtYXhNb2RlXCJcbiAgICAgICAgW3Nob3dXZWVrc109XCJzaG93V2Vla3NcIlxuICAgICAgICBbZm9ybWF0RGF5XT1cImZvcm1hdERheVwiXG4gICAgICAgIFtmb3JtYXRNb250aF09XCJmb3JtYXRNb250aFwiXG4gICAgICAgIFtmb3JtYXRZZWFyXT1cImZvcm1hdFllYXJcIlxuICAgICAgICBbZm9ybWF0RGF5SGVhZGVyXT1cImZvcm1hdERheUhlYWRlclwiXG4gICAgICAgIFtmb3JtYXREYXlUaXRsZV09XCJmb3JtYXREYXlUaXRsZVwiXG4gICAgICAgIFtmb3JtYXRNb250aFRpdGxlXT1cImZvcm1hdE1vbnRoVGl0bGVcIlxuICAgICAgICBbc3RhcnRpbmdEYXldPVwic3RhcnRpbmdEYXlcIlxuICAgICAgICBbeWVhclJhbmdlXT1cInllYXJSYW5nZVwiXG4gICAgICAgIFtvbmx5Q3VycmVudE1vbnRoXT1cIm9ubHlDdXJyZW50TW9udGhcIlxuICAgICAgICBbc2hvcnRjdXRQcm9wYWdhdGlvbl09XCJzaG9ydGN1dFByb3BhZ2F0aW9uXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzXT1cImN1c3RvbUNsYXNzXCJcbiAgICAgICAgW2RhdGVEaXNhYmxlZF09XCJkYXRlRGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgPC9kYXRlcGlja2VyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc3Bhbj5cbiJdfQ==
@@ -39,7 +39,6 @@ export class ModalComponent {
39
39
  this.open = false;
40
40
  this.showCloseButton = true;
41
41
  this.showBackButton = false;
42
- this.isScrollable = false;
43
42
  /*
44
43
  * If true, then the content area scrolls vertically instead of expanding its height.
45
44
  * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.
@@ -147,7 +146,7 @@ export class ModalComponent {
147
146
  }
148
147
  }
149
148
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ModalComponent, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: MODAL_CLOSE, optional: true }, { token: i2.ConfigurableFocusTrapFactory }], target: i0.ɵɵFactoryTarget.Component });
150
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ModalComponent, selector: "lx-modal", inputs: { open: "open", showCloseButton: "showCloseButton", showBackButton: "showBackButton", isScrollable: "isScrollable", verticalScroll: "verticalScroll", size: "size", isFocusTrap: "isFocusTrap", canModalBeClosed: "canModalBeClosed" }, outputs: { close: "close", back: "back" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderComponent, descendants: true }, { propertyName: "footer", first: true, predicate: ModalFooterComponent, descendants: true }, { propertyName: "explicitContent", first: true, predicate: ModalContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "cdkPortal", first: true, predicate: CdkPortal, descendants: true, static: true }, { propertyName: "implicitContent", first: true, predicate: ["implicitContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [ngClass]=\"{ scrollable: isScrollable }\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}.scrollable{max-height:60vh;overflow-y:auto}\n"], directives: [{ type: i3.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i5.TranslatePipe }, animations: [
149
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ModalComponent, selector: "lx-modal", inputs: { open: "open", showCloseButton: "showCloseButton", showBackButton: "showBackButton", verticalScroll: "verticalScroll", size: "size", isFocusTrap: "isFocusTrap", canModalBeClosed: "canModalBeClosed" }, outputs: { close: "close", back: "back" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderComponent, descendants: true }, { propertyName: "footer", first: true, predicate: ModalFooterComponent, descendants: true }, { propertyName: "explicitContent", first: true, predicate: ModalContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "cdkPortal", first: true, predicate: CdkPortal, descendants: true, static: true }, { propertyName: "implicitContent", first: true, predicate: ["implicitContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}\n"], directives: [{ type: i3.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i5.TranslatePipe }, animations: [
151
150
  trigger('modal', [
152
151
  transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
153
152
  transition(':leave', animate('0.15s', style({ opacity: 0 })))
@@ -160,7 +159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
160
159
  transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
161
160
  transition(':leave', animate('0.15s', style({ opacity: 0 })))
162
161
  ])
163
- ], template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [ngClass]=\"{ scrollable: isScrollable }\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}.scrollable{max-height:60vh;overflow-y:auto}\n"] }]
162
+ ], template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}\n"] }]
164
163
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i6.Observable, decorators: [{
165
164
  type: Optional
166
165
  }, {
@@ -172,8 +171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
172
171
  type: Input
173
172
  }], showBackButton: [{
174
173
  type: Input
175
- }], isScrollable: [{
176
- type: Input
177
174
  }], verticalScroll: [{
178
175
  type: Input
179
176
  }], size: [{
@@ -205,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
205
202
  type: HostListener,
206
203
  args: ['document:keydown.escape']
207
204
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kYWwtdWkvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC11aS9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQUU5RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVlILE1BQU0sT0FBTyxjQUFjO0lBcUN6QixZQUNVLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ2MsV0FBZ0MsRUFDakUs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QVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUU2QixNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDRSxNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTVUsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTRCLGVBQWU7c0JBQXhGLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTS9CLFFBQVE7c0JBQWhELFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2RrUG9ydGFsLCBQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1vZGFsQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbW9kYWwtY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTU9EQUxfQ0xPU0UgfSBmcm9tICcuLi8uLi9tb2RhbC5jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLWhlYWRlci9tb2RhbC1oZWFkZXIuY29tcG9uZW50JztcblxuLyoqXG4gKlxuICogQVRURU5USU9OIC0gU0NST0xMQUJMRSBESUFMT0c6XG4gKiBUaGUgPGx4LW1vZGFsPiBjb21wb25lbnQgd2hlbiB1c2VkIGFzIFwiZGlhbG9nXCIgaXMgbm90IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBhXG4gKiBzY3JvbGxhYmxlIGJvZHkgKHZpYSBcIm92ZXJmbG93OiBhdXRvIHwgc2Nyb2xsXCIpIGluIGNvbWJpbmF0aW9uIHdpdGggZHJvcGRvd25zLlxuICogVGhlIG92ZXJmbG93IG9uIHRoZSBib2R5IHdpbGwgYWxzbyBjbGlwIHRoZSBkcm9wZG93bnMsIHdoaWNoIGlzIGV4cGVjdGVkLlxuICpcbiAqIFJlYXNvbmluZzpcbiAqIFRoZSBjb250ZW50cyB3aXRoaW4gdGhlIGRpYWxvZyBzaG91bGQgYmUganVzdCBhIGZldyBlbGVtZW50cyB3aGljaCBmaXQgYW5kXG4gKiBqdXN0aWZ5IHRoZSB1c2FnZSBvZiBhIGRpYWxvZy4gSWYgdGhlIGNvbnRlbnQgaXMgbGFyZ2VyIHRoYW4gdGhlIGRpYWxvZywgYW5kIHRodXNcbiAqIHJlcXVpcmVzIHNjcm9sbGluZywgd2Ugc2hvdWxkIGRpc2N1c3Mgd2hldGhlciB0byBwdXQgaXQgaW50byBhIGRpYWxvZyBhdCBhbGxcbiAqIGFuZCByYXRoZXIgdGhpbmsgYWJvdXQgcHV0dGluZyB0aGUgY29udGVudCBvbiBhIHNlcGFyYXRlIHJvdXRlIG9yXG4gKiB1c2luZyB0aGUgZnVsbHNjcmVlbiB2ZXJzaW9uIG9mIHRoZSBtb2RhbC5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICdtb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignbW9kYWwnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCcwLjE1cycsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIGFuaW1hdGUoJzAuMTVzJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHJlYWRvbmx5IE5BTUUgPSAnTW9kYWxDb21wb25lbnQnO1xuICBASW5wdXQoKSBvcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dCYWNrQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzU2Nyb2xsYWJsZSA9IGZhbHNlO1xuICAvKlxuICAgKiBJZiB0cnVlLCB0aGVuIHRoZSBjb250ZW50IGFyZWEgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluc3RlYWQgb2YgZXhwYW5kaW5nIGl0cyBoZWlnaHQuXG4gICAqIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSBpZiB0aGUgY29udGVudCBoYXMgZHJvcGRvd25zIG9yIGRhdGUgaW5wdXRzLCBidXQgY2FuIGJlIGdvb2QgaWYgdGhlIGNvbnRlbnQgaGFzIGEgaHVnZSBhbW91bnQgb2YgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIHZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICdmdWxsc2NyZWVuJyB8ICdkaWFsb2ctbGFyZ2UnIHwgJ2RpYWxvZycgPSAnZnVsbHNjcmVlbic7XG4gIEBJbnB1dCgpIGlzRm9jdXNUcmFwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbk1vZGFsQmVDbG9zZWQ/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoTW9kYWxIZWFkZXJDb21wb25lbnQpIGhlYWRlcj86IE1vZGFsSGVhZGVyQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKE1vZGFsRm9vdGVyQ29tcG9uZW50KSBmb290ZXI/OiBNb2RhbEZvb3RlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChDZGtQb3J0YWwsIHsgc3RhdGljOiB0cnVlIH0pIGNka1BvcnRhbCE6IFBvcnRhbDxDZGtQb3J0YWw+O1xuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIG9sZE92ZXJmbG93Pzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ltcGxpY2l0Q29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChNb2RhbENvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0Q29udGVudCB8fCB0aGlzLmltcGxpY2l0Q29udGVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJykgb25Fc2NhcGUoKSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9EQUxfQ0xPU0UpIHByaXZhdGUgY2xvc2VNb2RhbCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4sXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnlcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2xvc2VNb2RhbCQ/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlTW9kYWwoKSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMHZoJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPT09ICdkaWFsb2ctbGFyZ2UnKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkudG9wKCc0dmgnKS5jZW50ZXJIb3Jpem9udGFsbHkoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICB3aWR0aDogJzkwJScsXG4gICAgICAgIGhlaWdodDogJzkwdmgnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2l6ZSAnZGlhbG9nJ1xuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCgnOHZoJykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICBtaW5XaWR0aDogJzYwMHB4JywgLy8gTkI6IFNvbWUgbW9kYWwgaW1wbGVtZW50YXRpb25zIHJlbHkgb24gdGhpcyBtaW5XaWR0aCBiZWluZyA2MDBweFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNpemUgIT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZU1vZGFsKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmICF0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmIHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5pc0ZvY3VzVHJhcCkge1xuICAgICAgdGhpcy50cmFwRm9jdXNJbk1vZGFsKHRoaXMub3ZlcmxheVJlZi5ob3N0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRpbWVyKClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuTW9kYWwoKSk7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMub2xkT3ZlcmZsb3cgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZO1xuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnaGlkZGVuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLmNka1BvcnRhbCk7XG4gICAgdGhpcy50cmFwRm9jdXNJbk1vZGFsKHRoaXMub3ZlcmxheVJlZi5ob3N0RWxlbWVudCk7XG4gIH1cblxuICBlbWl0QmFjaygpIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcblxuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCB0aGlzLm9sZE92ZXJmbG93KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsb3NlTW9kYWwoKSB7XG4gICAgaWYgKCF0aGlzLmNhbk1vZGFsQmVDbG9zZWQgfHwgKGF3YWl0IHRoaXMuY2FuTW9kYWxCZUNsb3NlZCgpKSkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG5cbiAgICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsIHRoaXMub2xkT3ZlcmZsb3cpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYXBGb2N1c0luTW9kYWwoaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuY3JlYXRlKGhvc3RFbGVtZW50KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGNka1BvcnRhbD5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgY2xhc3M9XCJseG1vZGFsXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZnVsbHNjcmVlbl09XCJzaXplID09PSAnZnVsbHNjcmVlbidcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ddPVwic2l6ZSA9PT0gJ2RpYWxvZydcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ctbGFyZ2VdPVwic2l6ZSA9PT0gJ2RpYWxvZy1sYXJnZSdcIlxuICAgIFtjbGFzcy5seG1vZGFsLS13aXRoRm9vdGVyXT1cIiEhZm9vdGVyXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tdmVydGljYWxTY3JvbGxdPVwidmVydGljYWxTY3JvbGxcIlxuICAgIEBtb2RhbFxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaXplID09PSAnZnVsbHNjcmVlbicgJiYgc2hvd0JhY2tCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImVtaXRCYWNrKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cImVtaXRCYWNrKClcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtbG9uZy1hcnJvdy1sZWZ0XCJcbiAgICA+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIk5BTUUgKyAnLmNsb3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBjbGFzcz1cImZhbCBmYS10aW1lcyBjbG9zZUJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiaGVhZGVyXCIgc2VsZWN0PVwibHgtbW9kYWwtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbENvbnRlbnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7IHNjcm9sbGFibGU6IGlzU2Nyb2xsYWJsZSB9XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiZm9vdGVyXCIgc2VsZWN0PVwibHgtbW9kYWwtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ltcGxpY2l0Q29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kYWwtdWkvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC11aS9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQUU5RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVlILE1BQU0sT0FBTyxjQUFjO0lBb0N6QixZQUNVLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ2MsV0FBZ0MsRUFDakUs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LEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFFNkIsTUFBTTtzQkFBekMsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBQ0UsTUFBTTtzQkFBekMsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBQ00sU0FBUztzQkFBaEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1VLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU0QixlQUFlO3NCQUF4RixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU0vQixRQUFRO3NCQUFoRCxZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENka1BvcnRhbCwgUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNb2RhbENvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL21vZGFsLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1PREFMX0NMT1NFIH0gZnJvbSAnLi4vLi4vbW9kYWwuY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGFsRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtZm9vdGVyL21vZGFsLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1oZWFkZXIvbW9kYWwtaGVhZGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICpcbiAqIEFUVEVOVElPTiAtIFNDUk9MTEFCTEUgRElBTE9HOlxuICogVGhlIDxseC1tb2RhbD4gY29tcG9uZW50IHdoZW4gdXNlZCBhcyBcImRpYWxvZ1wiIGlzIG5vdCBkZXNpZ25lZCB0byB3b3JrIHdpdGggYVxuICogc2Nyb2xsYWJsZSBib2R5ICh2aWEgXCJvdmVyZmxvdzogYXV0byB8IHNjcm9sbFwiKSBpbiBjb21iaW5hdGlvbiB3aXRoIGRyb3Bkb3ducy5cbiAqIFRoZSBvdmVyZmxvdyBvbiB0aGUgYm9keSB3aWxsIGFsc28gY2xpcCB0aGUgZHJvcGRvd25zLCB3aGljaCBpcyBleHBlY3RlZC5cbiAqXG4gKiBSZWFzb25pbmc6XG4gKiBUaGUgY29udGVudHMgd2l0aGluIHRoZSBkaWFsb2cgc2hvdWxkIGJlIGp1c3QgYSBmZXcgZWxlbWVudHMgd2hpY2ggZml0IGFuZFxuICoganVzdGlmeSB0aGUgdXNhZ2Ugb2YgYSBkaWFsb2cuIElmIHRoZSBjb250ZW50IGlzIGxhcmdlciB0aGFuIHRoZSBkaWFsb2csIGFuZCB0aHVzXG4gKiByZXF1aXJlcyBzY3JvbGxpbmcsIHdlIHNob3VsZCBkaXNjdXNzIHdoZXRoZXIgdG8gcHV0IGl0IGludG8gYSBkaWFsb2cgYXQgYWxsXG4gKiBhbmQgcmF0aGVyIHRoaW5rIGFib3V0IHB1dHRpbmcgdGhlIGNvbnRlbnQgb24gYSBzZXBhcmF0ZSByb3V0ZSBvclxuICogdXNpbmcgdGhlIGZ1bGxzY3JlZW4gdmVyc2lvbiBvZiB0aGUgbW9kYWwuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ21vZGFsJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMC4xNXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBhbmltYXRlKCcwLjE1cycsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSkpXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBOQU1FID0gJ01vZGFsQ29tcG9uZW50JztcbiAgQElucHV0KCkgb3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbiA9IGZhbHNlO1xuICAvKlxuICAgKiBJZiB0cnVlLCB0aGVuIHRoZSBjb250ZW50IGFyZWEgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluc3RlYWQgb2YgZXhwYW5kaW5nIGl0cyBoZWlnaHQuXG4gICAqIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSBpZiB0aGUgY29udGVudCBoYXMgZHJvcGRvd25zIG9yIGRhdGUgaW5wdXRzLCBidXQgY2FuIGJlIGdvb2QgaWYgdGhlIGNvbnRlbnQgaGFzIGEgaHVnZSBhbW91bnQgb2YgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIHZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICdmdWxsc2NyZWVuJyB8ICdkaWFsb2ctbGFyZ2UnIHwgJ2RpYWxvZycgPSAnZnVsbHNjcmVlbic7XG4gIEBJbnB1dCgpIGlzRm9jdXNUcmFwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbk1vZGFsQmVDbG9zZWQ/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoTW9kYWxIZWFkZXJDb21wb25lbnQpIGhlYWRlcj86IE1vZGFsSGVhZGVyQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKE1vZGFsRm9vdGVyQ29tcG9uZW50KSBmb290ZXI/OiBNb2RhbEZvb3RlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChDZGtQb3J0YWwsIHsgc3RhdGljOiB0cnVlIH0pIGNka1BvcnRhbCE6IFBvcnRhbDxDZGtQb3J0YWw+O1xuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIG9sZE92ZXJmbG93Pzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ltcGxpY2l0Q29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChNb2RhbENvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0Q29udGVudCB8fCB0aGlzLmltcGxpY2l0Q29udGVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJykgb25Fc2NhcGUoKSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9EQUxfQ0xPU0UpIHByaXZhdGUgY2xvc2VNb2RhbCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4sXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnlcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2xvc2VNb2RhbCQ/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlTW9kYWwoKSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMHZoJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPT09ICdkaWFsb2ctbGFyZ2UnKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkudG9wKCc0dmgnKS5jZW50ZXJIb3Jpem9udGFsbHkoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICB3aWR0aDogJzkwJScsXG4gICAgICAgIGhlaWdodDogJzkwdmgnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2l6ZSAnZGlhbG9nJ1xuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCgnOHZoJykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICBtaW5XaWR0aDogJzYwMHB4JywgLy8gTkI6IFNvbWUgbW9kYWwgaW1wbGVtZW50YXRpb25zIHJlbHkgb24gdGhpcyBtaW5XaWR0aCBiZWluZyA2MDBweFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNpemUgIT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZU1vZGFsKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmICF0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmIHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5pc0ZvY3VzVHJhcCkge1xuICAgICAgdGhpcy50cmFwRm9jdXNJbk1vZGFsKHRoaXMub3ZlcmxheVJlZi5ob3N0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRpbWVyKClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuTW9kYWwoKSk7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMub2xkT3ZlcmZsb3cgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZO1xuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnaGlkZGVuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLmNka1BvcnRhbCk7XG4gICAgdGhpcy50cmFwRm9jdXNJbk1vZGFsKHRoaXMub3ZlcmxheVJlZi5ob3N0RWxlbWVudCk7XG4gIH1cblxuICBlbWl0QmFjaygpIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcblxuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCB0aGlzLm9sZE92ZXJmbG93KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsb3NlTW9kYWwoKSB7XG4gICAgaWYgKCF0aGlzLmNhbk1vZGFsQmVDbG9zZWQgfHwgKGF3YWl0IHRoaXMuY2FuTW9kYWxCZUNsb3NlZCgpKSkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG5cbiAgICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsIHRoaXMub2xkT3ZlcmZsb3cpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYXBGb2N1c0luTW9kYWwoaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuY3JlYXRlKGhvc3RFbGVtZW50KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGNka1BvcnRhbD5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgY2xhc3M9XCJseG1vZGFsXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZnVsbHNjcmVlbl09XCJzaXplID09PSAnZnVsbHNjcmVlbidcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ddPVwic2l6ZSA9PT0gJ2RpYWxvZydcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ctbGFyZ2VdPVwic2l6ZSA9PT0gJ2RpYWxvZy1sYXJnZSdcIlxuICAgIFtjbGFzcy5seG1vZGFsLS13aXRoRm9vdGVyXT1cIiEhZm9vdGVyXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tdmVydGljYWxTY3JvbGxdPVwidmVydGljYWxTY3JvbGxcIlxuICAgIEBtb2RhbFxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaXplID09PSAnZnVsbHNjcmVlbicgJiYgc2hvd0JhY2tCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImVtaXRCYWNrKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cImVtaXRCYWNrKClcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtbG9uZy1hcnJvdy1sZWZ0XCJcbiAgICA+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIk5BTUUgKyAnLmNsb3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBjbGFzcz1cImZhbCBmYS10aW1lcyBjbG9zZUJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiaGVhZGVyXCIgc2VsZWN0PVwibHgtbW9kYWwtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbENvbnRlbnRDb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJmb290ZXJcIiBzZWxlY3Q9XCJseC1tb2RhbC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaW1wbGljaXRDb250ZW50PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -3038,6 +3038,8 @@ class DateInputComponent {
3038
3038
  this.shortcutPropagation = false; // if true shortcut`s event propagation will be disabled
3039
3039
  this.customClass = []; // array of custom css classes to be applied to
3040
3040
  this.dateDisabled = []; // array of disabled dates if mode is day, or years, etc.
3041
+ this.autoFocus = false;
3042
+ this.closeDateInput = new EventEmitter();
3041
3043
  this.showDatepicker = false;
3042
3044
  this.destroyed$ = new Subject();
3043
3045
  this.hasError = false;
@@ -3088,6 +3090,7 @@ class DateInputComponent {
3088
3090
  hidePopup() {
3089
3091
  if (this.showDatepicker) {
3090
3092
  this.showDatepicker = false;
3093
+ this.closeDateInput.emit();
3091
3094
  }
3092
3095
  }
3093
3096
  onDateStringChange(newDateString, emit = true) {
@@ -3168,10 +3171,10 @@ class DateInputComponent {
3168
3171
  }
3169
3172
  }
3170
3173
  DateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DATE_FORMATS }, { token: DATE_FN_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3171
- DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", datepickerMode: "datepickerMode", initDateString: "initDateString", minDate: "minDate", maxDate: "maxDate", minMode: "minMode", maxMode: "maxMode", showWeeks: "showWeeks", formatDay: "formatDay", formatMonth: "formatMonth", formatYear: "formatYear", formatDayHeader: "formatDayHeader", formatDayTitle: "formatDayTitle", formatMonthTitle: "formatMonthTitle", startingDay: "startingDay", yearRange: "yearRange", onlyCurrentMonth: "onlyCurrentMonth", shortcutPropagation: "shortcutPropagation", customClass: "customClass", disabled: "disabled", dateDisabled: "dateDisabled" }, outputs: { dateChange: "dateChange", dateStringChange: "dateStringChange" }, providers: [
3174
+ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", datepickerMode: "datepickerMode", initDateString: "initDateString", minDate: "minDate", maxDate: "maxDate", minMode: "minMode", maxMode: "maxMode", showWeeks: "showWeeks", formatDay: "formatDay", formatMonth: "formatMonth", formatYear: "formatYear", formatDayHeader: "formatDayHeader", formatDayTitle: "formatDayTitle", formatMonthTitle: "formatMonthTitle", startingDay: "startingDay", yearRange: "yearRange", onlyCurrentMonth: "onlyCurrentMonth", shortcutPropagation: "shortcutPropagation", customClass: "customClass", disabled: "disabled", dateDisabled: "dateDisabled", autoFocus: "autoFocus" }, outputs: { dateChange: "dateChange", dateStringChange: "dateStringChange", closeDateInput: "closeDateInput" }, providers: [
3172
3175
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
3173
3176
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
3174
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"], components: [{ type: i1$3.DatePickerComponent, selector: "datepicker", inputs: ["datepickerMode", "showWeeks", "activeDate", "initDate", "minDate", "maxDate", "minMode", "maxMode", "formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "startingDay", "yearRange", "onlyCurrentMonth", "shortcutPropagation", "monthColLimit", "yearColLimit", "customClass", "dateDisabled", "dayDisabled"], outputs: ["selectionDone", "activeDateChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "lxDate": CustomDatePipe } });
3177
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-radius-0 input.dateControl{border-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"], components: [{ type: i1$3.DatePickerComponent, selector: "datepicker", inputs: ["datepickerMode", "showWeeks", "activeDate", "initDate", "minDate", "maxDate", "minMode", "maxMode", "formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "startingDay", "yearRange", "onlyCurrentMonth", "shortcutPropagation", "monthColLimit", "yearColLimit", "customClass", "dateDisabled", "dayDisabled"], outputs: ["selectionDone", "activeDateChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: AutofocusDirective, selector: "[lxAutofocus]", inputs: ["lxAutofocus", "lxAutofocusPreventScroll"] }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "lxDate": CustomDatePipe } });
3175
3178
  __decorate([
3176
3179
  Observe('initDateString')
3177
3180
  ], DateInputComponent.prototype, "initDateString$", void 0);
@@ -3180,7 +3183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
3180
3183
  args: [{ selector: 'lx-date-input', providers: [
3181
3184
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
3182
3185
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
3183
- ], template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"] }]
3186
+ ], template: "<div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n<span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n</span>\n", styles: [":host.dateControl--border-right-radius-0 input.dateControl{border-top-right-radius:0;border-bottom-right-radius:0}:host.dateControl--border-radius-0 input.dateControl{border-radius:0}:host.dateControl--border-0 input.dateControl{border:0}:host.dateControl--no-box-shadow input.dateControl{box-shadow:none}.backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.datepickerContainer{position:absolute;z-index:700}.wrapper .forLink .popup{top:15px}.dateControl,.calendar{position:relative}.popup{position:relative;left:0;z-index:700;border-radius:3px}.popup ::ng-deep .text-info{color:#2a303d}.popup ::ng-deep .text-muted{color:#99a5bb}.popup ::ng-deep .btn.active,.popup ::ng-deep .btn.active .text-info{color:#fff;background-color:#2a303d}.popup ::ng-deep .well{margin:0;border:1px solid #2a303d}:host-context(.input-group) .datepickerContainer{top:100%}\n"] }]
3184
3187
  }], ctorParameters: function () {
3185
3188
  return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
3186
3189
  type: Inject,
@@ -3247,6 +3250,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
3247
3250
  type: Input
3248
3251
  }], dateDisabled: [{
3249
3252
  type: Input
3253
+ }], autoFocus: [{
3254
+ type: Input
3255
+ }], closeDateInput: [{
3256
+ type: Output
3250
3257
  }], input: [{
3251
3258
  type: ViewChild,
3252
3259
  args: ['input']
@@ -5933,7 +5940,6 @@ class ModalComponent {
5933
5940
  this.open = false;
5934
5941
  this.showCloseButton = true;
5935
5942
  this.showBackButton = false;
5936
- this.isScrollable = false;
5937
5943
  /*
5938
5944
  * If true, then the content area scrolls vertically instead of expanding its height.
5939
5945
  * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.
@@ -6044,7 +6050,7 @@ class ModalComponent {
6044
6050
  }
6045
6051
  }
6046
6052
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ModalComponent, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: MODAL_CLOSE, optional: true }, { token: i2$1.ConfigurableFocusTrapFactory }], target: i0.ɵɵFactoryTarget.Component });
6047
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ModalComponent, selector: "lx-modal", inputs: { open: "open", showCloseButton: "showCloseButton", showBackButton: "showBackButton", isScrollable: "isScrollable", verticalScroll: "verticalScroll", size: "size", isFocusTrap: "isFocusTrap", canModalBeClosed: "canModalBeClosed" }, outputs: { close: "close", back: "back" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderComponent, descendants: true }, { propertyName: "footer", first: true, predicate: ModalFooterComponent, descendants: true }, { propertyName: "explicitContent", first: true, predicate: ModalContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "cdkPortal", first: true, predicate: CdkPortal, descendants: true, static: true }, { propertyName: "implicitContent", first: true, predicate: ["implicitContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [ngClass]=\"{ scrollable: isScrollable }\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}.scrollable{max-height:60vh;overflow-y:auto}\n"], directives: [{ type: i3$2.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i1$1.TranslatePipe }, animations: [
6053
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ModalComponent, selector: "lx-modal", inputs: { open: "open", showCloseButton: "showCloseButton", showBackButton: "showBackButton", verticalScroll: "verticalScroll", size: "size", isFocusTrap: "isFocusTrap", canModalBeClosed: "canModalBeClosed" }, outputs: { close: "close", back: "back" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderComponent, descendants: true }, { propertyName: "footer", first: true, predicate: ModalFooterComponent, descendants: true }, { propertyName: "explicitContent", first: true, predicate: ModalContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "cdkPortal", first: true, predicate: CdkPortal, descendants: true, static: true }, { propertyName: "implicitContent", first: true, predicate: ["implicitContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}\n"], directives: [{ type: i3$2.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i1$1.TranslatePipe }, animations: [
6048
6054
  trigger('modal', [
6049
6055
  transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
6050
6056
  transition(':leave', animate('0.15s', style({ opacity: 0 })))
@@ -6057,7 +6063,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
6057
6063
  transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
6058
6064
  transition(':leave', animate('0.15s', style({ opacity: 0 })))
6059
6065
  ])
6060
- ], template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [ngClass]=\"{ scrollable: isScrollable }\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}.scrollable{max-height:60vh;overflow-y:auto}\n"] }]
6066
+ ], template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal()\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;right:36px;top:16px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#b2bccc;width:48px;height:48px;font-size:24px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{padding:16px;position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:all .18s;transition-delay:.6s;transition-timing-function:ease;border-radius:50%;color:#8594ad;height:32px;width:32px;font-size:16px;z-index:999;right:10px;top:10px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog-large .modalContentContainer{height:calc(100% - 112px)}.modalContentContainer{flex:1}\n"] }]
6061
6067
  }], ctorParameters: function () {
6062
6068
  return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i6.Observable, decorators: [{
6063
6069
  type: Optional
@@ -6071,8 +6077,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
6071
6077
  type: Input
6072
6078
  }], showBackButton: [{
6073
6079
  type: Input
6074
- }], isScrollable: [{
6075
- type: Input
6076
6080
  }], verticalScroll: [{
6077
6081
  type: Input
6078
6082
  }], size: [{