@leanix/components 0.3.89 → 0.3.90

Sign up to get free protection for your applications and to get access to all the features.
@@ -52,7 +52,8 @@ export class DateInputComponent {
52
52
  this.customClass = []; // array of custom css classes to be applied to
53
53
  this.dateDisabled = []; // array of disabled dates if mode is day, or years, etc.
54
54
  this.autoFocus = false;
55
- this.closeDateInput = new EventEmitter();
55
+ this.closeDatePicker = new EventEmitter();
56
+ this.openDatePicker = new EventEmitter();
56
57
  this.showDatepicker = false;
57
58
  this.destroyed$ = new Subject();
58
59
  this.hasError = false;
@@ -95,14 +96,20 @@ export class DateInputComponent {
95
96
  showPopup() {
96
97
  this.showDatepicker = true;
97
98
  this.cd.detectChanges();
98
- }
99
- togglePopup() {
100
- this.showDatepicker = !this.showDatepicker;
99
+ this.openDatePicker.emit();
101
100
  }
102
101
  hidePopup() {
103
102
  if (this.showDatepicker) {
104
103
  this.showDatepicker = false;
105
- this.closeDateInput.emit();
104
+ this.closeDatePicker.emit();
105
+ }
106
+ }
107
+ togglePopup() {
108
+ if (this.showDatepicker) {
109
+ this.hidePopup();
110
+ }
111
+ else {
112
+ this.showPopup();
106
113
  }
107
114
  }
108
115
  onDateStringChange(newDateString, emit = true) {
@@ -183,7 +190,7 @@ export class DateInputComponent {
183
190
  }
184
191
  }
185
192
  DateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DATE_FORMATS }, { token: DATE_FN_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
186
- DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", cdk: "cdk", 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: [
193
+ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", cdk: "cdk", 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", closeDatePicker: "closeDatePicker", openDatePicker: "openDatePicker" }, providers: [
187
194
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
188
195
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
189
196
  ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n <ng-container *ngIf=\"showDatepicker\">\n <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\n </ng-container>\n </span>\n </div>\n</ng-template>\n\n<ng-template #dateInput>\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</ng-template>\n\n<ng-template #datePicker>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\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</ng-template>\n", styles: [".backdrop{background-color:transparent}.datepickerContainer{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%}.legacy .backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.legacy .datepickerContainer{position:absolute}.legacy.forLink{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.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"] }, { kind: "directive", type: i4.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i4.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i5.AutofocusDirective, selector: "[lxAutofocus]", inputs: ["lxAutofocus", "lxAutofocusPreventScroll", "lxAutofocusTimeout"] }, { kind: "pipe", type: i6.CustomDatePipe, name: "lxDate" }] });
@@ -264,10 +271,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
264
271
  type: Input
265
272
  }], autoFocus: [{
266
273
  type: Input
267
- }], closeDateInput: [{
274
+ }], closeDatePicker: [{
275
+ type: Output
276
+ }], openDatePicker: [{
268
277
  type: Output
269
278
  }], input: [{
270
279
  type: ViewChild,
271
280
  args: ['input']
272
281
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFLbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxN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QUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdHRlciwgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEQVRFX0ZOX0xPQ0FMRSwgREFURV9GT1JNQVRTLCBEYXRlRm9ybWF0c1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb3JlLXVpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZywgY3JlYXRlRGF0ZUZyb21EYXRlU3RyaW5nLCBpc1ZhbGlkRGF0ZVN0cmluZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlLWhlbHBlcnMnO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9vYnNlcnZlJztcblxuLy8gSW5wdXQgKyBuZzItYm9vdHN0cmFwIGRhdGVwaWNrZXJcbmV4cG9ydCB0eXBlIERhdGVJbnB1dFJlbmRlcmluZ1N0eWxlID0gJ0lOUFVUJyB8ICdMSU5LJztcblxuY29uc3QgREVGQVVMVF9NSU5fREFURSA9IG5ldyBEYXRlKCcwMDAwLTAxLTAxJyk7XG5jb25zdCBERUZBVUxUX01BWF9EQVRFID0gbmV3IERhdGUoJzk5OTktMTItMzEnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtZGF0ZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydkYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVJbnB1dENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlSW5wdXRDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7IC8vIG1haW4gZGF0ZSBpbnB1dDsgdGhpcyBpcyBhbHNvIHRoZSBvbmUgdXNlZCBmb3IgbmdNb2RlbCAmIGZvcm1Db250cm9sIVxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7IC8vIHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgZGF0ZSBjaGFuZ2VzXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRlU3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gc2Vjb25kYXJ5LCBhbHRlcm5hdGl2ZSBpbnB1dCB3aXRoIGRhdGUgc3RyaW5nXG4gIEBPdXRwdXQoKSBkYXRlU3RyaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpOyAvLyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIGRhdGUgY2hhbmdlc1xuICAvLyBEZXRlcm1pbmUgd2hldGhlciBmb3JtR3JvdXAncyB2YWx1ZSBhY2Nlc3NvciBpcyBhY2Nlc3NpbmcgdGhlIHNlbGVjdGVkIElEcyBvciB0aGUgc2VsZWN0ZWQgb2JqZWN0c1xuICBASW5wdXQoKSBwdWJsaWMgdmFsdWVBY2Nlc3NvcjogJ2RhdGUnIHwgJ2RhdGVTdHJpbmcnID0gJ2RhdGUnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dElkOiBzdHJpbmcgPSAnJzsgLy8gaWQgdG8gYmUgc2V0IG9uIGlucHV0IHRvIGNvcnJlc3BvbmQgdG8gb3V0c2lkZSBsYWJlbFxuICBASW5wdXQoKSBwdWJsaWMgcmVuZGVyaW5nU3R5bGU6IERhdGVJbnB1dFJlbmRlcmluZ1N0eWxlID0gJ0lOUFVUJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAneXl5eS1tbS1kZCc7XG5cbiAgQElucHV0KCkgcHVibGljIGNkayA9IHRydWU7IC8vIERlYWN0aXZhdGUgdG8gdXNlIG9sZCBkYXRlIHBpY2tlclxuXG4gIC8vLS0tIElucHV0cyByZXBsaWNhdGVkIGZyb20gZGF0ZXBpY2tlcjsgKHNlbGVjdGlvbkRvbmUpIGlzIG5vdCBuZWVkZWQsIGFzIChkYXRlQ2hhbmdlKSBpcyBlcXVpdmFsZW5cbiAgQElucHV0KCkgcHVibGljIGRhdGVwaWNrZXJNb2RlOiBzdHJpbmcgPSAnZGF5JzsgLy8gc2V0cyBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBkYXksIG1vbnRoLCB5ZWFyXG4gIEBJbnB1dCgpIGluaXREYXRlU3RyaW5nITogc3RyaW5nOyAvLyBkZWZhdWx0IGRhdGUgdG8gc2hvdyBpZiBuZy1tb2RlbCB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkXG4gIEBPYnNlcnZlKCdpbml0RGF0ZVN0cmluZycpIGluaXREYXRlU3RyaW5nJCE6IE9ic2VydmFibGU8c3RyaW5nPjsgLy8gZGVmYXVsdCBkYXRlIHRvIHNob3cgaWYgbmctbW9kZWwgdmFsdWUgaXMgbm90IHNwZWNpZmllZFxuICBASW5wdXQoKSBwdWJsaWMgbWluRGF0ZSA9IERFRkFVTFRfTUlOX0RBVEU7IC8vIG9sZGVzdCBzZWxlY3RhYmxlIGRhdGVcbiAgQElucHV0KCkgcHVibGljIG1heERhdGUgPSBERUZBVUxUX01BWF9EQVRFOyAvLyBsYXRlc3Qgc2VsZWN0YWJsZSBkYXRlXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5Nb2RlOiBzdHJpbmcgPSAnZGF5JzsgLy8gc2V0IGxvd2VyIGRhdGVwaWNrZXIgbW9kZSwgc3VwcG9ydHM6IGRheSwgbW9udGgsIHllYXJcbiAgQElucHV0KCkgcHVibGljIG1heE1vZGU6IHN0cmluZyA9ICd5ZWFyJzsgLy8gc2V0cyB1cHBlciBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBkYXksIG1vbnRoLCB5ZWFyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93V2Vla3M6IGJvb2xlYW4gPSB0cnVlOyAvLyBpZiBmYWxzZSB3ZWVrIG51bWJlcnMgd2lsbCBiZSBoaWRkZW5cbiAgQElucHV0KCkgcHVibGljIGZvcm1hdERheTogc3RyaW5nID0gJ0REJzsgLy8gZm9ybWF0IG9mIGRheSBpbiBtb250aFxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0TW9udGg6IHN0cmluZyA9ICdNTU1NJzsgLy8gZm9ybWF0IG9mIG1vbnRoIGluIHllYXJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdFllYXI6IHN0cmluZyA9ICdZWVlZJzsgLy8gZm9ybWF0IG9mIHllYXIgaW4geWVhciByYW5nZVxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0RGF5SGVhZGVyOiBzdHJpbmcgPSAnZGQnOyAvLyBmb3JtYXQgb2YgZGF5IGluIHdlZWsgaGVhZGVyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXREYXlUaXRsZTogc3RyaW5nID0gJ01NTU0gWVlZWSc7IC8vIGZvcm1hdCBvZiB0aXRsZSB3aGVuIHNlbGVjdGluZyBkYXlcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdE1vbnRoVGl0bGU6IHN0cmluZyA9ICdZWVlZJzsgLy8gZm9ybWF0IG9mIHRpdGxlIHdoZW4gc2VsZWN0aW5nIG1vbnRoXG4gIEBJbnB1dCgpIHN0YXJ0aW5nRGF5OiBudW1iZXIgPSAwOyAvLyBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgZnJvbSAwLTYgKDA9U3VuZGF5LCAuLi4sIDY9U2F0dXJkYXkpIHB1YmxpY1xuICBASW5wdXQoKSBwdWJsaWMgeWVhclJhbmdlOiBudW1iZXIgPSAyMDsgLy8gbnVtYmVyIG9mIHllYXJzIGRpc3BsYXllZCBpbiB5ZWFyIHNlbGVjdGlvblxuICBASW5wdXQoKSBwdWJsaWMgb25seUN1cnJlbnRNb250aDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiB0cnVlIG9ubHkgZGF0ZXMgZnJvbSB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBtb250aCB3aWxsIGJlIHNob3duXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG9ydGN1dFByb3BhZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7IC8vICBpZiB0cnVlIHNob3J0Y3V0YHMgZXZlbnQgcHJvcGFnYXRpb24gd2lsbCBiZSBkaXNhYmxlZFxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3M6IHsgZGF0ZTogRGF0ZTsgbW9kZTogc3RyaW5nOyBjbGF6ejogc3RyaW5nIH1bXSA9IFtdOyAvLyBhcnJheSBvZiBjdXN0b20gY3NzIGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0b1xuICAvLyB0YXJnZXRlZCBkYXRlc1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgZGF0ZURpc2FibGVkOiB7IGRhdGU6IERhdGU7IG1vZGU6IHN0cmluZyB9W10gPSBbXTsgLy8gYXJyYXkgb2YgZGlzYWJsZWQgZGF0ZXMgaWYgbW9kZSBpcyBkYXksIG9yIHllYXJzLCBldGMuXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZURhdGVJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBzaG93RGF0ZXBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlRm9ybWF0OiBzdHJpbmc7XG4gIGluaXREYXRlITogRGF0ZTtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLy0tIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBwcml2YXRlIGZvcm1Db250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvblRvdWNoZWQhOiAoKSA9PiB2b2lkO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfZGF0ZTogRGF0ZSB8IG51bGwpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoREFURV9GT1JNQVRTKSBwcml2YXRlIGRhdGVGb3JtYXRzUHJvdmlkZXI6IERhdGVGb3JtYXRzUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX0ZOX0xPQ0FMRSkgcHJpdmF0ZSBnZXREYXRlRm5Mb2NhbGU/OiBGdW5jdGlvblxuICApIHtcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXRzUHJvdmlkZXIuZ2V0RGF0ZUZvcm1hdCgpO1xuICAgIC8vIFBhdGNoIERhdGVQaWNrZXIgdW50aWwgaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25nMi1ib290c3RyYXAvaXNzdWVzLzEzODUgaXMgcmVzb2x2ZWRcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gRGF0ZVBpY2tlckNvbXBvbmVudC5wcm90b3R5cGUud3JpdGVWYWx1ZTtcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LnByb3RvdHlwZS53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlVmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzIGFzIGFueSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNvbWVob3cgZGF0ZXBpY2tlciBkb2VzIHVzZSBhIHNlcGFyYXRlIG1vbWVudCBpbnN0YW5jZSB0aGFuIHdlIGRvLiBUaGF0IG9uZSBydW5zIG9uIGxvY2FsZSBlbiBieSBkZWZhdWx0LlxuICAgIC8vIFNvIHdlIHBhdGNoIHRoZSBmb3JtYXQgZnVuY3Rpb24gaGVyZSB0byB1c2Ugb3VyIG1vbWVudCBpbnN0YW5jZS5cbiAgICAvLyBNYXliZSBpdCB3aWxsIGJlIGZpeGVkIHdpdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS92YWxvci1zb2Z0d2FyZS9uZ3gtYm9vdHN0cmFwL2lzc3Vlcy80NTVcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmdldERhdGVGbkxvY2FsZSA/IHRoaXMuZ2V0RGF0ZUZuTG9jYWxlKCkgOiBudWxsO1xuICAgIERhdGVGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBmOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgZiwgeyBsb2NhbGUgfSk7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdERhdGVTdHJpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgdGhpcy5pbml0RGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhkYXRlKSA/PyBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0ZSddKSB7XG4gICAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2RhdGVTdHJpbmcnXSkge1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1BvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcHVwKCkge1xuICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSAhdGhpcy5zaG93RGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xvc2VEYXRlSW5wdXQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZVN0cmluZ0NoYW5nZShuZXdEYXRlU3RyaW5nOiBzdHJpbmcgfCBudWxsLCBlbWl0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChpc1ZhbGlkRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKSkge1xuICAgICAgY29uc3QgZGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKTtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShkYXRlLCBlbWl0KTtcbiAgICB9IGVsc2UgaWYgKG5ld0RhdGVTdHJpbmcgPT09IG51bGwgfHwgbmV3RGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShudWxsLCBlbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGlvbkRvbmUobmV3RGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudXBkYXRlRGF0ZShuZXdEYXRlKTtcbiAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGUoZGF0ZTogRGF0ZSB8IG51bGwsIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogJyc7XG4gICAgaWYgKGVtaXQpIHtcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLmVtaXQodGhpcy5kYXRlU3RyaW5nKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgdGhpcy5yZWNoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY2hlY2tFcnJvcnMoKSB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICAvLy0tLSBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLyoqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LiAqL1xuICB3cml0ZVZhbHVlKG5ld0RhdGU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy52YWx1ZUFjY2Vzc29yID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ld0RhdGUgYXMgRGF0ZTtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IG5ld0RhdGUgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy5kYXRlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlU3RyaW5nJykge1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IGM7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3JcbiAgICAgID8ge1xuICAgICAgICAgIGRhdGVGb3JtYXRFcnJvcjoge1xuICAgICAgICAgICAgZ2l2ZW46IHRoaXMuZGF0ZVN0cmluZyxcbiAgICAgICAgICAgIGZvcm1hdDogJ3l5eXktbW0tZGQnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjZGs7IGVsc2Ugd2l0aG91dENka092ZXJsYXlcIj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgIFtjbGFzcy5mb3JMaW5rXT1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIlxuICAgIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNjZGtEYXRlcGlja2VyXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwic2hvd0RhdGVwaWNrZXJcIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3NdPVwiJ2JhY2tkcm9wJ1wiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJoaWRlUG9wdXAoKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVQaWNrZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN3aXRob3V0Q2RrT3ZlcmxheT5cbiAgPGRpdiBjbGFzcz1cImxlZ2FjeVwiIFtjbGFzcy5mb3JMaW5rXT1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmFja2Ryb3BcIiAqbmdJZj1cInNob3dEYXRlcGlja2VyXCIgKGNsaWNrKT1cImhpZGVQb3B1cCgpXCI+PC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJ3cmFwcGVyXCIgW2NsYXNzLmZvckxpbmtdPVwicmVuZGVyaW5nU3R5bGUgPT09ICdMSU5LJ1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlSW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGF0ZXBpY2tlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVBpY2tlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGF0ZUlucHV0PlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbCBkYXRlQ29udHJvbFwiXG4gICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtseEF1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICAgIFsobmdNb2RlbCldPVwiZGF0ZVN0cmluZ1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cInNob3dQb3B1cCgpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiaGlkZVBvcHVwKClcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJoaWRlUG9wdXAoKVwiXG4gICAgKGtleWRvd24udGFiKT1cImhpZGVQb3B1cCgpXCJcbiAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiaGlkZVBvcHVwKClcIlxuICAgIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJoYXNFcnJvclwiXG4gICAgKm5nSWY9XCJyZW5kZXJpbmdTdHlsZSA9PT0gJ0lOUFVUJ1wiXG4gIC8+XG4gIDxhIGNsYXNzPVwiZGF0ZUNvbnRyb2xcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAoKVwiICpuZ0lmPVwicmVuZGVyaW5nU3R5bGUgPT09ICdMSU5LJ1wiPnt7IGRhdGUgfCBseERhdGU6IGRhdGVGb3JtYXQgfX08L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RhdGVQaWNrZXI+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyQ29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgICA8ZGF0ZXBpY2tlclxuICAgICAgICBjbGFzcz1cInBvcHVwXCJcbiAgICAgICAgKHNlbGVjdGlvbkRvbmUpPVwib25TZWxlY3Rpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbbmdNb2RlbF09XCJkYXRlXCJcbiAgICAgICAgW2RhdGVwaWNrZXJNb2RlXT1cImRhdGVwaWNrZXJNb2RlXCJcbiAgICAgICAgW2luaXREYXRlXT1cImluaXREYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluTW9kZV09XCJtaW5Nb2RlXCJcbiAgICAgICAgW21heE1vZGVdPVwibWF4TW9kZVwiXG4gICAgICAgIFtzaG93V2Vla3NdPVwic2hvd1dlZWtzXCJcbiAgICAgICAgW2Zvcm1hdERheV09XCJmb3JtYXREYXlcIlxuICAgICAgICBbZm9ybWF0TW9udGhdPVwiZm9ybWF0TW9udGhcIlxuICAgICAgICBbZm9ybWF0WWVhcl09XCJmb3JtYXRZZWFyXCJcbiAgICAgICAgW2Zvcm1hdERheUhlYWRlcl09XCJmb3JtYXREYXlIZWFkZXJcIlxuICAgICAgICBbZm9ybWF0RGF5VGl0bGVdPVwiZm9ybWF0RGF5VGl0bGVcIlxuICAgICAgICBbZm9ybWF0TW9udGhUaXRsZV09XCJmb3JtYXRNb250aFRpdGxlXCJcbiAgICAgICAgW3N0YXJ0aW5nRGF5XT1cInN0YXJ0aW5nRGF5XCJcbiAgICAgICAgW3llYXJSYW5nZV09XCJ5ZWFyUmFuZ2VcIlxuICAgICAgICBbb25seUN1cnJlbnRNb250aF09XCJvbmx5Q3VycmVudE1vbnRoXCJcbiAgICAgICAgW3Nob3J0Y3V0UHJvcGFnYXRpb25dPVwic2hvcnRjdXRQcm9wYWdhdGlvblwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCJjdXN0b21DbGFzc1wiXG4gICAgICAgIFtkYXRlRGlzYWJsZWRdPVwiZGF0ZURpc2FibGVkXCJcbiAgICAgID5cbiAgICAgIDwvZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFLbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxN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QkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFYSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmb3JtYXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyLCBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERBVEVfRk5fTE9DQUxFLCBEQVRFX0ZPUk1BVFMsIERhdGVGb3JtYXRzUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXVpL2NvcmUtdWkuY29uc3RhbnRzJztcbmltcG9ydCB7IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nLCBjcmVhdGVEYXRlRnJvbURhdGVTdHJpbmcsIGlzVmFsaWREYXRlU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RhdGUtaGVscGVycyc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuXG4vLyBJbnB1dCArIG5nMi1ib290c3RyYXAgZGF0ZXBpY2tlclxuZXhwb3J0IHR5cGUgRGF0ZUlucHV0UmVuZGVyaW5nU3R5bGUgPSAnSU5QVVQnIHwgJ0xJTksnO1xuXG5jb25zdCBERUZBVUxUX01JTl9EQVRFID0gbmV3IERhdGUoJzAwMDAtMDEtMDEnKTtcbmNvbnN0IERFRkFVTFRfTUFYX0RBVEUgPSBuZXcgRGF0ZSgnOTk5OS0xMi0zMScpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICdkYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVJbnB1dENvbXBvbmVudCksIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgcHVibGljIGRhdGU6IERhdGUgfCBudWxsID0gbnVsbDsgLy8gbWFpbiBkYXRlIGlucHV0OyB0aGlzIGlzIGFsc28gdGhlIG9uZSB1c2VkIGZvciBuZ01vZGVsICYgZm9ybUNvbnRyb2whXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTsgLy8gdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBkYXRlIGNoYW5nZXNcbiAgQElucHV0KCkgcHVibGljIGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyBzZWNvbmRhcnksIGFsdGVybmF0aXZlIGlucHV0IHdpdGggZGF0ZSBzdHJpbmdcbiAgQE91dHB1dCgpIGRhdGVTdHJpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7IC8vIHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgZGF0ZSBjaGFuZ2VzXG4gIC8vIERldGVybWluZSB3aGV0aGVyIGZvcm1Hcm91cCdzIHZhbHVlIGFjY2Vzc29yIGlzIGFjY2Vzc2luZyB0aGUgc2VsZWN0ZWQgSURzIG9yIHRoZSBzZWxlY3RlZCBvYmplY3RzXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZUFjY2Vzc29yOiAnZGF0ZScgfCAnZGF0ZVN0cmluZycgPSAnZGF0ZSc7XG5cbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZyA9ICcnOyAvLyBpZCB0byBiZSBzZXQgb24gaW5wdXQgdG8gY29ycmVzcG9uZCB0byBvdXRzaWRlIGxhYmVsXG4gIEBJbnB1dCgpIHB1YmxpYyByZW5kZXJpbmdTdHlsZTogRGF0ZUlucHV0UmVuZGVyaW5nU3R5bGUgPSAnSU5QVVQnO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICd5eXl5LW1tLWRkJztcblxuICBASW5wdXQoKSBwdWJsaWMgY2RrID0gdHJ1ZTsgLy8gRGVhY3RpdmF0ZSB0byB1c2Ugb2xkIGRhdGUgcGlja2VyXG5cbiAgLy8tLS0gSW5wdXRzIHJlcGxpY2F0ZWQgZnJvbSBkYXRlcGlja2VyOyAoc2VsZWN0aW9uRG9uZSkgaXMgbm90IG5lZWRlZCwgYXMgKGRhdGVDaGFuZ2UpIGlzIGVxdWl2YWxlblxuICBASW5wdXQoKSBwdWJsaWMgZGF0ZXBpY2tlck1vZGU6IHN0cmluZyA9ICdkYXknOyAvLyBzZXRzIGRhdGVwaWNrZXIgbW9kZSwgc3VwcG9ydHM6IGRheSwgbW9udGgsIHllYXJcbiAgQElucHV0KCkgaW5pdERhdGVTdHJpbmchOiBzdHJpbmc7IC8vIGRlZmF1bHQgZGF0ZSB0byBzaG93IGlmIG5nLW1vZGVsIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWRcbiAgQE9ic2VydmUoJ2luaXREYXRlU3RyaW5nJykgaW5pdERhdGVTdHJpbmckITogT2JzZXJ2YWJsZTxzdHJpbmc+OyAvLyBkZWZhdWx0IGRhdGUgdG8gc2hvdyBpZiBuZy1tb2RlbCB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlID0gREVGQVVMVF9NSU5fREFURTsgLy8gb2xkZXN0IHNlbGVjdGFibGUgZGF0ZVxuICBASW5wdXQoKSBwdWJsaWMgbWF4RGF0ZSA9IERFRkFVTFRfTUFYX0RBVEU7IC8vIGxhdGVzdCBzZWxlY3RhYmxlIGRhdGVcbiAgQElucHV0KCkgcHVibGljIG1pbk1vZGU6IHN0cmluZyA9ICdkYXknOyAvLyBzZXQgbG93ZXIgZGF0ZXBpY2tlciBtb2RlLCBzdXBwb3J0czogZGF5LCBtb250aCwgeWVhclxuICBASW5wdXQoKSBwdWJsaWMgbWF4TW9kZTogc3RyaW5nID0gJ3llYXInOyAvLyBzZXRzIHVwcGVyIGRhdGVwaWNrZXIgbW9kZSwgc3VwcG9ydHM6IGRheSwgbW9udGgsIHllYXJcbiAgQElucHV0KCkgcHVibGljIHNob3dXZWVrczogYm9vbGVhbiA9IHRydWU7IC8vIGlmIGZhbHNlIHdlZWsgbnVtYmVycyB3aWxsIGJlIGhpZGRlblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0RGF5OiBzdHJpbmcgPSAnREQnOyAvLyBmb3JtYXQgb2YgZGF5IGluIG1vbnRoXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXRNb250aDogc3RyaW5nID0gJ01NTU0nOyAvLyBmb3JtYXQgb2YgbW9udGggaW4geWVhclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0WWVhcjogc3RyaW5nID0gJ1lZWVknOyAvLyBmb3JtYXQgb2YgeWVhciBpbiB5ZWFyIHJhbmdlXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXREYXlIZWFkZXI6IHN0cmluZyA9ICdkZCc7IC8vIGZvcm1hdCBvZiBkYXkgaW4gd2VlayBoZWFkZXJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdERheVRpdGxlOiBzdHJpbmcgPSAnTU1NTSBZWVlZJzsgLy8gZm9ybWF0IG9mIHRpdGxlIHdoZW4gc2VsZWN0aW5nIGRheVxuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0TW9udGhUaXRsZTogc3RyaW5nID0gJ1lZWVknOyAvLyBmb3JtYXQgb2YgdGl0bGUgd2hlbiBzZWxlY3RpbmcgbW9udGhcbiAgQElucHV0KCkgc3RhcnRpbmdEYXk6IG51bWJlciA9IDA7IC8vIHN0YXJ0aW5nIGRheSBvZiB0aGUgd2VlayBmcm9tIDAtNiAoMD1TdW5kYXksIC4uLiwgNj1TYXR1cmRheSkgcHVibGljXG4gIEBJbnB1dCgpIHB1YmxpYyB5ZWFyUmFuZ2U6IG51bWJlciA9IDIwOyAvLyBudW1iZXIgb2YgeWVhcnMgZGlzcGxheWVkIGluIHllYXIgc2VsZWN0aW9uXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmx5Q3VycmVudE1vbnRoOiBib29sZWFuID0gZmFsc2U7IC8vIGlmIHRydWUgb25seSBkYXRlcyBmcm9tIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIG1vbnRoIHdpbGwgYmUgc2hvd25cbiAgQElucHV0KCkgcHVibGljIHNob3J0Y3V0UHJvcGFnYXRpb246IGJvb2xlYW4gPSBmYWxzZTsgLy8gIGlmIHRydWUgc2hvcnRjdXRgcyBldmVudCBwcm9wYWdhdGlvbiB3aWxsIGJlIGRpc2FibGVkXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzczogeyBkYXRlOiBEYXRlOyBtb2RlOiBzdHJpbmc7IGNsYXp6OiBzdHJpbmcgfVtdID0gW107IC8vIGFycmF5IG9mIGN1c3RvbSBjc3MgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvXG4gIC8vIHRhcmdldGVkIGRhdGVzXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRlRGlzYWJsZWQ6IHsgZGF0ZTogRGF0ZTsgbW9kZTogc3RyaW5nIH1bXSA9IFtdOyAvLyBhcnJheSBvZiBkaXNhYmxlZCBkYXRlcyBpZiBtb2RlIGlzIGRheSwgb3IgeWVhcnMsIGV0Yy5cbiAgQElucHV0KCkgYXV0b0ZvY3VzID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNsb3NlRGF0ZVBpY2tlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9wZW5EYXRlUGlja2VyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHNob3dEYXRlcGlja2VyOiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGVGb3JtYXQ6IHN0cmluZztcbiAgaW5pdERhdGUhOiBEYXRlO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vLS0gSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByaXZhdGUgZm9ybUNvbnRyb2whOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIG9uVG91Y2hlZCE6ICgpID0+IHZvaWQ7XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF9kYXRlOiBEYXRlIHwgbnVsbCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChEQVRFX0ZPUk1BVFMpIHByaXZhdGUgZGF0ZUZvcm1hdHNQcm92aWRlcjogRGF0ZUZvcm1hdHNQcm92aWRlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEVfRk5fTE9DQUxFKSBwcml2YXRlIGdldERhdGVGbkxvY2FsZT86IEZ1bmN0aW9uXG4gICkge1xuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IHRoaXMuZGF0ZUZvcm1hdHNQcm92aWRlci5nZXREYXRlRm9ybWF0KCk7XG4gICAgLy8gUGF0Y2ggRGF0ZVBpY2tlciB1bnRpbCBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmcyLWJvb3RzdHJhcC9pc3N1ZXMvMTM4NSBpcyByZXNvbHZlZFxuICAgIGNvbnN0IHdyaXRlVmFsdWUgPSBEYXRlUGlja2VyQ29tcG9uZW50LnByb3RvdHlwZS53cml0ZVZhbHVlO1xuICAgIERhdGVQaWNrZXJDb21wb25lbnQucHJvdG90eXBlLndyaXRlVmFsdWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gd3JpdGVWYWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gU29tZWhvdyBkYXRlcGlja2VyIGRvZXMgdXNlIGEgc2VwYXJhdGUgbW9tZW50IGluc3RhbmNlIHRoYW4gd2UgZG8uIFRoYXQgb25lIHJ1bnMgb24gbG9jYWxlIGVuIGJ5IGRlZmF1bHQuXG4gICAgLy8gU28gd2UgcGF0Y2ggdGhlIGZvcm1hdCBmdW5jdGlvbiBoZXJlIHRvIHVzZSBvdXIgbW9tZW50IGluc3RhbmNlLlxuICAgIC8vIE1heWJlIGl0IHdpbGwgYmUgZml4ZWQgd2l0aDogaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25neC1ib290c3RyYXAvaXNzdWVzLzQ1NVxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ2V0RGF0ZUZuTG9jYWxlID8gdGhpcy5nZXREYXRlRm5Mb2NhbGUoKSA6IG51bGw7XG4gICAgRGF0ZUZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24gKGRhdGU6IERhdGUsIGY6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmLCB7IGxvY2FsZSB9KTtcbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0RGF0ZVN0cmluZyQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkYXRlKSA9PiB7XG4gICAgICB0aGlzLmluaXREYXRlID0gY3JlYXRlRGF0ZUZyb21EYXRlU3RyaW5nKGRhdGUpID8/IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydkYXRlJ10pIHtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IHRoaXMuZGF0ZSA/IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuZGF0ZSkgOiBudWxsO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGF0ZVN0cmluZyddKSB7XG4gICAgICB0aGlzLm9uRGF0ZVN0cmluZ0NoYW5nZSh0aGlzLmRhdGVTdHJpbmcsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpIHtcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93UG9wdXAoKSB7XG4gICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IHRydWU7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vcGVuRGF0ZVBpY2tlci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZVBvcHVwKCkge1xuICAgIGlmICh0aGlzLnNob3dEYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLnNob3dEYXRlcGlja2VyID0gZmFsc2U7XG4gICAgICB0aGlzLmNsb3NlRGF0ZVBpY2tlci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcHVwKCkge1xuICAgIGlmICh0aGlzLnNob3dEYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dQb3B1cCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZVN0cmluZ0NoYW5nZShuZXdEYXRlU3RyaW5nOiBzdHJpbmcgfCBudWxsLCBlbWl0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChpc1ZhbGlkRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKSkge1xuICAgICAgY29uc3QgZGF0ZSA9IGNyZWF0ZURhdGVGcm9tRGF0ZVN0cmluZyhuZXdEYXRlU3RyaW5nKTtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShkYXRlLCBlbWl0KTtcbiAgICB9IGVsc2UgaWYgKG5ld0RhdGVTdHJpbmcgPT09IG51bGwgfHwgbmV3RGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZShudWxsLCBlbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGlvbkRvbmUobmV3RGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudXBkYXRlRGF0ZShuZXdEYXRlKTtcbiAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGUoZGF0ZTogRGF0ZSB8IG51bGwsIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICB0aGlzLmRhdGVTdHJpbmcgPSB0aGlzLmRhdGUgPyBjb252ZXJ0RGF0ZVRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmRhdGUpIDogJyc7XG4gICAgaWYgKGVtaXQpIHtcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLmVtaXQodGhpcy5kYXRlU3RyaW5nKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgdGhpcy5yZWNoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY2hlY2tFcnJvcnMoKSB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICAvLy0tLSBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLyoqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LiAqL1xuICB3cml0ZVZhbHVlKG5ld0RhdGU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy52YWx1ZUFjY2Vzc29yID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ld0RhdGUgYXMgRGF0ZTtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IGNvbnZlcnREYXRlVG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZVN0cmluZyA9IG5ld0RhdGUgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5vbkRhdGVTdHJpbmdDaGFuZ2UodGhpcy5kYXRlU3RyaW5nLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy5kYXRlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlQWNjZXNzb3IgPT09ICdkYXRlU3RyaW5nJykge1xuICAgICAgdGhpcy5kYXRlU3RyaW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IGM7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3JcbiAgICAgID8ge1xuICAgICAgICAgIGRhdGVGb3JtYXRFcnJvcjoge1xuICAgICAgICAgICAgZ2l2ZW46IHRoaXMuZGF0ZVN0cmluZyxcbiAgICAgICAgICAgIGZvcm1hdDogJ3l5eXktbW0tZGQnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjZGs7IGVsc2Ugd2l0aG91dENka092ZXJsYXlcIj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgIFtjbGFzcy5mb3JMaW5rXT1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIlxuICAgIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNjZGtEYXRlcGlja2VyXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwic2hvd0RhdGVwaWNrZXJcIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3NdPVwiJ2JhY2tkcm9wJ1wiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJoaWRlUG9wdXAoKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVQaWNrZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN3aXRob3V0Q2RrT3ZlcmxheT5cbiAgPGRpdiBjbGFzcz1cImxlZ2FjeVwiIFtjbGFzcy5mb3JMaW5rXT1cInJlbmRlcmluZ1N0eWxlID09PSAnTElOSydcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmFja2Ryb3BcIiAqbmdJZj1cInNob3dEYXRlcGlja2VyXCIgKGNsaWNrKT1cImhpZGVQb3B1cCgpXCI+PC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJ3cmFwcGVyXCIgW2NsYXNzLmZvckxpbmtdPVwicmVuZGVyaW5nU3R5bGUgPT09ICdMSU5LJ1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlSW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGF0ZXBpY2tlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVBpY2tlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGF0ZUlucHV0PlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbCBkYXRlQ29udHJvbFwiXG4gICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtseEF1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICAgIFsobmdNb2RlbCldPVwiZGF0ZVN0cmluZ1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cInNob3dQb3B1cCgpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiaGlkZVBvcHVwKClcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJoaWRlUG9wdXAoKVwiXG4gICAgKGtleWRvd24udGFiKT1cImhpZGVQb3B1cCgpXCJcbiAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiaGlkZVBvcHVwKClcIlxuICAgIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJoYXNFcnJvclwiXG4gICAgKm5nSWY9XCJyZW5kZXJpbmdTdHlsZSA9PT0gJ0lOUFVUJ1wiXG4gIC8+XG4gIDxhIGNsYXNzPVwiZGF0ZUNvbnRyb2xcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAoKVwiICpuZ0lmPVwicmVuZGVyaW5nU3R5bGUgPT09ICdMSU5LJ1wiPnt7IGRhdGUgfCBseERhdGU6IGRhdGVGb3JtYXQgfX08L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RhdGVQaWNrZXI+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyQ29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgICA8ZGF0ZXBpY2tlclxuICAgICAgICBjbGFzcz1cInBvcHVwXCJcbiAgICAgICAgKHNlbGVjdGlvbkRvbmUpPVwib25TZWxlY3Rpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbbmdNb2RlbF09XCJkYXRlXCJcbiAgICAgICAgW2RhdGVwaWNrZXJNb2RlXT1cImRhdGVwaWNrZXJNb2RlXCJcbiAgICAgICAgW2luaXREYXRlXT1cImluaXREYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluTW9kZV09XCJtaW5Nb2RlXCJcbiAgICAgICAgW21heE1vZGVdPVwibWF4TW9kZVwiXG4gICAgICAgIFtzaG93V2Vla3NdPVwic2hvd1dlZWtzXCJcbiAgICAgICAgW2Zvcm1hdERheV09XCJmb3JtYXREYXlcIlxuICAgICAgICBbZm9ybWF0TW9udGhdPVwiZm9ybWF0TW9udGhcIlxuICAgICAgICBbZm9ybWF0WWVhcl09XCJmb3JtYXRZZWFyXCJcbiAgICAgICAgW2Zvcm1hdERheUhlYWRlcl09XCJmb3JtYXREYXlIZWFkZXJcIlxuICAgICAgICBbZm9ybWF0RGF5VGl0bGVdPVwiZm9ybWF0RGF5VGl0bGVcIlxuICAgICAgICBbZm9ybWF0TW9udGhUaXRsZV09XCJmb3JtYXRNb250aFRpdGxlXCJcbiAgICAgICAgW3N0YXJ0aW5nRGF5XT1cInN0YXJ0aW5nRGF5XCJcbiAgICAgICAgW3llYXJSYW5nZV09XCJ5ZWFyUmFuZ2VcIlxuICAgICAgICBbb25seUN1cnJlbnRNb250aF09XCJvbmx5Q3VycmVudE1vbnRoXCJcbiAgICAgICAgW3Nob3J0Y3V0UHJvcGFnYXRpb25dPVwic2hvcnRjdXRQcm9wYWdhdGlvblwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCJjdXN0b21DbGFzc1wiXG4gICAgICAgIFtkYXRlRGlzYWJsZWRdPVwiZGF0ZURpc2FibGVkXCJcbiAgICAgID5cbiAgICAgIDwvZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -3060,7 +3060,8 @@ class DateInputComponent {
3060
3060
  this.customClass = []; // array of custom css classes to be applied to
3061
3061
  this.dateDisabled = []; // array of disabled dates if mode is day, or years, etc.
3062
3062
  this.autoFocus = false;
3063
- this.closeDateInput = new EventEmitter();
3063
+ this.closeDatePicker = new EventEmitter();
3064
+ this.openDatePicker = new EventEmitter();
3064
3065
  this.showDatepicker = false;
3065
3066
  this.destroyed$ = new Subject();
3066
3067
  this.hasError = false;
@@ -3104,14 +3105,20 @@ class DateInputComponent {
3104
3105
  showPopup() {
3105
3106
  this.showDatepicker = true;
3106
3107
  this.cd.detectChanges();
3107
- }
3108
- togglePopup() {
3109
- this.showDatepicker = !this.showDatepicker;
3108
+ this.openDatePicker.emit();
3110
3109
  }
3111
3110
  hidePopup() {
3112
3111
  if (this.showDatepicker) {
3113
3112
  this.showDatepicker = false;
3114
- this.closeDateInput.emit();
3113
+ this.closeDatePicker.emit();
3114
+ }
3115
+ }
3116
+ togglePopup() {
3117
+ if (this.showDatepicker) {
3118
+ this.hidePopup();
3119
+ }
3120
+ else {
3121
+ this.showPopup();
3115
3122
  }
3116
3123
  }
3117
3124
  onDateStringChange(newDateString, emit = true) {
@@ -3192,7 +3199,7 @@ class DateInputComponent {
3192
3199
  }
3193
3200
  }
3194
3201
  DateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DATE_FORMATS }, { token: DATE_FN_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3195
- DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", cdk: "cdk", 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: [
3202
+ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: DateInputComponent, selector: "lx-date-input", inputs: { date: "date", dateString: "dateString", valueAccessor: "valueAccessor", inputId: "inputId", renderingStyle: "renderingStyle", placeholder: "placeholder", cdk: "cdk", 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", closeDatePicker: "closeDatePicker", openDatePicker: "openDatePicker" }, providers: [
3196
3203
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
3197
3204
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }
3198
3205
  ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n <ng-container *ngIf=\"showDatepicker\">\n <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\n </ng-container>\n </span>\n </div>\n</ng-template>\n\n<ng-template #dateInput>\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</ng-template>\n\n<ng-template #datePicker>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\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</ng-template>\n", styles: [".backdrop{background-color:transparent}.datepickerContainer{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%}.legacy .backdrop{position:fixed;z-index:2;top:0;right:0;bottom:0;left:0}.legacy .datepickerContainer{position:absolute}.legacy.forLink{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$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]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.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"] }, { kind: "directive", type: i1$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: AutofocusDirective, selector: "[lxAutofocus]", inputs: ["lxAutofocus", "lxAutofocusPreventScroll", "lxAutofocusTimeout"] }, { kind: "pipe", type: CustomDatePipe, name: "lxDate" }] });
@@ -3275,7 +3282,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3275
3282
  type: Input
3276
3283
  }], autoFocus: [{
3277
3284
  type: Input
3278
- }], closeDateInput: [{
3285
+ }], closeDatePicker: [{
3286
+ type: Output
3287
+ }], openDatePicker: [{
3279
3288
  type: Output
3280
3289
  }], input: [{
3281
3290
  type: ViewChild,