@hmcts/ccd-case-ui-toolkit 7.2.34 → 7.2.35-exui-3066-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -89,6 +89,7 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
89
89
  minError = false;
90
90
  maxError = false;
91
91
  dateTimeEntryFormat;
92
+ isUpdating = false;
92
93
  datetimePicker;
93
94
  inputElement;
94
95
  dateControl = new FormControl(new Date());
@@ -111,7 +112,7 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
111
112
  // otherwise the last format given will be how the text shown will be displayed
112
113
  setTimeout(() => {
113
114
  this.setDateTimeFormat();
114
- this.formatValueAndSetErrors();
115
+ this.loadValue();
115
116
  }, 1000);
116
117
  // when the status changes check that the maximum/minimum date has not been exceeded
117
118
  this.dateControl.statusChanges.subscribe(() => {
@@ -213,24 +214,54 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
213
214
  this.valueChanged();
214
215
  }
215
216
  }
217
+ loadValue() {
218
+ if (this.inputElement.nativeElement.value) {
219
+ const inputValue = this.inputElement.nativeElement.value;
220
+ const formValue = moment(inputValue, this.dateTimeEntryFormat).format(this.momentFormat);
221
+ if (formValue !== 'Invalid date') {
222
+ const localMoment = moment.utc(formValue).local();
223
+ this.dateControl.setValue(moment(formValue).format(this.momentFormat));
224
+ this.inputElement.nativeElement.value = localMoment.format(this.dateTimeEntryFormat);
225
+ if (this.datetimePicker) {
226
+ this.datetimePicker.select(localMoment);
227
+ }
228
+ }
229
+ else {
230
+ // If invalid, just show the raw value
231
+ this.inputElement.nativeElement.value = this.dateControl.value;
232
+ }
233
+ }
234
+ else {
235
+ this.inputElement.nativeElement.value = '';
236
+ }
237
+ }
216
238
  formatValueAndSetErrors() {
239
+ if (this.isUpdating)
240
+ return;
241
+ this.isUpdating = true;
217
242
  if (this.inputElement.nativeElement.value) {
218
- let formValue = this.inputElement.nativeElement.value;
219
- formValue = moment(formValue, this.dateTimeEntryFormat).format(this.momentFormat);
243
+ const inputValue = this.inputElement.nativeElement.value;
244
+ const formValue = moment(inputValue, this.dateTimeEntryFormat).format(this.momentFormat);
245
+ const localMoment = moment(inputValue, this.dateTimeEntryFormat, true);
220
246
  if (formValue !== 'Invalid date') {
221
- // if not invalid set the value as the formatted value
222
- this.dateControl.setValue(formValue);
247
+ const utcValue = localMoment.clone().utc().format(this.momentFormat);
248
+ this.dateControl.setValue(utcValue);
249
+ this.inputElement.nativeElement.value = localMoment.format(this.dateTimeEntryFormat);
250
+ if (this.datetimePicker) {
251
+ this.datetimePicker.select(localMoment); // guarded from recursion
252
+ }
253
+ this.isUpdating = false;
223
254
  }
224
255
  else {
225
- // ensure that the datepicker picks up the invalid error
226
256
  const keepErrorText = this.inputElement.nativeElement.value;
227
257
  this.dateControl.setValue(keepErrorText);
228
258
  this.inputElement.nativeElement.value = keepErrorText;
259
+ this.isUpdating = false;
229
260
  }
230
261
  }
231
262
  else {
232
- // ensure required errors are picked up if relevant
233
263
  this.dateControl.setValue('');
264
+ this.isUpdating = false;
234
265
  }
235
266
  }
236
267
  static ɵfac = function DatetimePickerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DatetimePickerComponent)(i0.ɵɵdirectiveInject(i1.FormatTranslatorService), i0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS)); };
@@ -249,7 +280,7 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
249
280
  deps: [MAT_LEGACY_DATE_LOCALE, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
250
281
  },
251
282
  { provide: NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
252
- ]), i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 27, consts: [["input", ""], ["picker", ""], [1, "govuk-form-group", "bottom-30", 3, "id", "ngClass"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "datepicker-container"], ["ng-model-options", "{timezone:'utc'}", 1, "govuk-input", 3, "focusin", "focusout", "dateChange", "min", "max", "formControl", "ngxMatDatetimePicker"], ["matSuffix", "", "id", "pickerOpener", 3, "for"], [3, "yearSelected", "monthSelected", "opened", "color", "touchUi", "hideTime", "startView", "stepHour", "stepSecond", "stepMinute", "showSeconds", "showSpinners", "disableMinute", "enableMeridian"], ["mat-raised-button", "", "color", "primary", "ngxMatDatepickerApply", ""], [1, "form-label"], [1, "form-hint"], [1, "error-message"]], template: function DatetimePickerComponent_Template(rf, ctx) { if (rf & 1) {
283
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 27, consts: [["input", ""], ["picker", ""], [1, "govuk-form-group", "bottom-30", 3, "id", "ngClass"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "datepicker-container"], ["readonly", "", 1, "govuk-input", 2, "pointer-events", "none", 3, "focusin", "focusout", "dateChange", "min", "max", "formControl", "ngxMatDatetimePicker"], ["matSuffix", "", "id", "pickerOpener", 3, "for"], [3, "yearSelected", "monthSelected", "opened", "color", "touchUi", "hideTime", "startView", "stepHour", "stepSecond", "stepMinute", "showSeconds", "showSpinners", "disableMinute", "enableMeridian"], ["mat-raised-button", "", "color", "primary", "ngxMatDatepickerApply", ""], [1, "form-label"], [1, "form-hint"], [1, "error-message"]], template: function DatetimePickerComponent_Template(rf, ctx) { if (rf & 1) {
253
284
  const _r1 = i0.ɵɵgetCurrentView();
254
285
  i0.ɵɵelementStart(0, "div", 2)(1, "fieldset")(2, "legend");
255
286
  i0.ɵɵtemplate(3, DatetimePickerComponent_span_3_Template, 3, 3, "span", 3)(4, DatetimePickerComponent_span_4_Template, 3, 3, "span", 4)(5, DatetimePickerComponent_span_5_Template, 3, 4, "span", 5)(6, DatetimePickerComponent_span_6_Template, 3, 3, "span", 5)(7, DatetimePickerComponent_span_7_Template, 3, 3, "span", 5);
@@ -295,7 +326,7 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
295
326
  deps: [MAT_LEGACY_DATE_LOCALE, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
296
327
  },
297
328
  { provide: NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
298
- ], template: "<div class=\"govuk-form-group bottom-30\" [id]=\"caseField.id\"\n [ngClass]=\"{'form-group-error': dateControl && !dateControl.valid && dateControl.dirty}\">\n <fieldset>\n <legend>\n <span class=\"form-label\" *ngIf=\"caseField.label\">{{(caseField | ccdFieldLabel)}}</span>\n <span class=\"form-hint\" *ngIf=\"caseField.hint_text\">{{caseField.hint_text | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.errors && dateControl.dirty && !(minError || maxError)\">{{(dateControl.errors | ccdFirstError:caseField.label)}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && minError\">{{'This date is older than the minimum date allowed' | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && maxError\">{{'This date is later than the maximum date allowed' | rpxTranslate}}</span>\n </legend>\n <div class=\"datepicker-container\">\n <input class=\"govuk-input\"\n #input\n attr.aria-label=\"Please enter a date and time in the format | rpxTranslate {{dateTimeEntryFormat}}\"\n [min]=\"minDate(caseField)\"\n [max]=\"maxDate(caseField)\"\n [formControl]=\"dateControl\"\n [ngxMatDatetimePicker]=\"picker\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut()\"\n (dateChange)=\"valueChanged()\"\n ng-model-options=\"{timezone:'utc'}\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\" id=\"pickerOpener\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #picker\n [color]=\"color\"\n [touchUi]=\"touchUi\"\n [hideTime]=\"hideTime\"\n [startView]=\"startView\"\n [stepHour]=\"stepHour\"\n [stepSecond]=\"stepSecond\"\n [stepMinute]=\"stepMinute\"\n [showSeconds]=\"showSeconds\"\n [showSpinners]=\"showSpinners\"\n [disableMinute]=\"disableMinute\"\n [enableMeridian]=\"enableMeridian\"\n (yearSelected)=\"yearSelected($event)\"\n (monthSelected)=\"monthSelected($event)\"\n (opened)=\"toggleClick()\"\n >\n <ngx-mat-datepicker-actions>\n <button mat-raised-button color=\"primary\" ngxMatDatepickerApply>Confirm</button>\n </ngx-mat-datepicker-actions>\n </ngx-mat-datetime-picker>\n </div>\n </fieldset>\n</div>\n", styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #ffdd00;border:1px solid black}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #ffdd00}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base{width:32px;height:32px;padding:5px 0 0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base:focus{outline:1px solid #fd0}.cdk-overlay-container .mat-datepicker-content{border:1px solid black;border-radius:0;max-width:295px;background:#fff}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(1):after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true],.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-pressed=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:nth-of-type(1){visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(1) [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1) [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1).ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \\25b2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\\25bc\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid black;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions{margin-top:120px;padding:8px 8px 28px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}\n"] }]
329
+ ], template: "<div class=\"govuk-form-group bottom-30\" [id]=\"caseField.id\"\n [ngClass]=\"{'form-group-error': dateControl && !dateControl.valid && dateControl.dirty}\">\n <fieldset>\n <legend>\n <span class=\"form-label\" *ngIf=\"caseField.label\">{{(caseField | ccdFieldLabel)}}</span>\n <span class=\"form-hint\" *ngIf=\"caseField.hint_text\">{{caseField.hint_text | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.errors && dateControl.dirty && !(minError || maxError)\">{{(dateControl.errors | ccdFirstError:caseField.label)}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && minError\">{{'This date is older than the minimum date allowed' | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && maxError\">{{'This date is later than the maximum date allowed' | rpxTranslate}}</span>\n </legend>\n <div class=\"datepicker-container\">\n <input readonly \n class=\"govuk-input\"\n #input\n attr.aria-label=\"Please enter a date and time in the format | rpxTranslate {{dateTimeEntryFormat}}\"\n [min]=\"minDate(caseField)\"\n [max]=\"maxDate(caseField)\"\n [formControl]=\"dateControl\"\n [ngxMatDatetimePicker]=\"picker\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut()\"\n (dateChange)=\"valueChanged()\"\n style=\"pointer-events: none;\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\" id=\"pickerOpener\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #picker\n [color]=\"color\"\n [touchUi]=\"touchUi\"\n [hideTime]=\"hideTime\"\n [startView]=\"startView\"\n [stepHour]=\"stepHour\"\n [stepSecond]=\"stepSecond\"\n [stepMinute]=\"stepMinute\"\n [showSeconds]=\"showSeconds\"\n [showSpinners]=\"showSpinners\"\n [disableMinute]=\"disableMinute\"\n [enableMeridian]=\"enableMeridian\"\n (yearSelected)=\"yearSelected($event)\"\n (monthSelected)=\"monthSelected($event)\"\n (opened)=\"toggleClick()\"\n >\n <ngx-mat-datepicker-actions>\n <button mat-raised-button color=\"primary\" ngxMatDatepickerApply>Confirm</button>\n </ngx-mat-datepicker-actions>\n </ngx-mat-datetime-picker>\n </div>\n </fieldset>\n</div>\n", styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #ffdd00;border:1px solid black}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #ffdd00}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base{width:32px;height:32px;padding:5px 0 0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base:focus{outline:1px solid #fd0}.cdk-overlay-container .mat-datepicker-content{border:1px solid black;border-radius:0;max-width:295px;background:#fff}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(1):after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true],.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-pressed=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:nth-of-type(1){visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(1) [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1) [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1).ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \\25b2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\\25bc\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid black;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions{margin-top:120px;padding:8px 8px 28px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}\n"] }]
299
330
  }], () => [{ type: i1.FormatTranslatorService }, { type: undefined, decorators: [{
300
331
  type: Inject,
301
332
  args: [NGX_MAT_DATE_FORMATS]
@@ -309,4 +340,4 @@ export class DatetimePickerComponent extends AbstractFormFieldComponent {
309
340
  type: Input
310
341
  }] }); })();
311
342
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatetimePickerComponent, { className: "DatetimePickerComponent", filePath: "lib/shared/components/palette/datetime-picker/datetime-picker.component.ts", lineNumber: 35 }); })();
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBRWpCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDckIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBc0MsTUFBTSwrQkFBK0IsQ0FBQztBQUczRyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ1oxRCxnQ0FBaUQ7SUFBQSxZQUErQjs7SUFB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SyxFQUFFO1lBQ1EsWUFBWTtrQkFBekQsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRXJCLFdBQVc7a0JBQTFCLEtBQUs7O2tGQXhCSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ3hNYXREYXRlQWRhcHRlcixcbiAgTmd4TWF0RGF0ZUZvcm1hdHMsXG4gIE5neE1hdERhdGV0aW1lcGlja2VyLFxuICBOR1hfTUFUX0RBVEVfRk9STUFUU1xufSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBOZ3hNYXRNb21lbnRBZGFwdGVyLCBOR1hfTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0xFR0FDWV9EQVRFX0xPQ0FMRSwgTGVnYWN5VGhlbWVQYWxldHRlIGFzIFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudC9tb21lbnQnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdFRyYW5zbGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FzZS1maWVsZHMvZm9ybWF0LXRyYW5zbGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ1VTVE9NX01PTUVOVF9GT1JNQVRTIH0gZnJvbSAnLi9kYXRldGltZS1waWNrZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HWF9NQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogQ1VTVE9NX01PTUVOVF9GT1JNQVRTIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogTmd4TWF0TW9tZW50QWRhcHRlcixcbiAgICAgIGRlcHM6IFtNQVRfTEVHQUNZX0RBVEVfTE9DQUxFLCBOR1hfTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU11cbiAgICB9LFxuICAgIHsgcHJvdmlkZTogTkdYX01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIHVzZVZhbHVlOiB7IHVzZVV0YzogdHJ1ZSB9IH1cbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIERhdGV0aW1lUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzaG93U3Bpbm5lcnMgPSB0cnVlO1xuICBwdWJsaWMgc2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgcHVibGljIHRvdWNoVWkgPSBmYWxzZTtcbiAgcHVibGljIGVuYWJsZU1lcmlkaWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzdGVwSG91ciA9IDE7XG4gIHB1YmxpYyBzdGVwTWludXRlID0gMTtcbiAgcHVibGljIHN0ZXBTZWNvbmQgPSAxO1xuICBwdWJsaWMgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcbiAgcHVibGljIGRpc2FibGVNaW51dGUgPSB0cnVlO1xuICBwdWJsaWMgaGlkZVRpbWUgPSB0cnVlO1xuICBwdWJsaWMgaGlkZU1pbnV0ZXMgPSB0cnVlO1xuICBwdWJsaWMgc3RhcnRWaWV3ID0gJ21vbnRoJztcbiAgcHVibGljIHllYXJTZWxlY3Rpb24gPSBmYWxzZTtcbiAgcHVibGljIGNoZWNrVGltZSA9IHRydWU7XG4gIHB1YmxpYyBzdHJpbmdFZGl0ZWQgPSBmYWxzZTtcbiAgcHVibGljIG1pbkVycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBtYXhFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgZGF0ZVRpbWVFbnRyeUZvcm1hdDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgZGF0ZXRpbWVQaWNrZXI6IE5neE1hdERhdGV0aW1lcGlja2VyPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQElucHV0KCkgcHVibGljIGRhdGVDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChuZXcgRGF0ZSgpKTtcblxuICBwcml2YXRlIG1pbmltdW1EYXRlID0gbmV3IERhdGUoJzAxLzAxLzE4MDAnKTtcbiAgcHJpdmF0ZSBtYXhpbXVtRGF0ZSA9IG51bGw7XG4gIHByaXZhdGUgbW9tZW50Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZvcm1hdFRyYW5zbGF0aW9uU2VydmljZTogRm9ybWF0VHJhbnNsYXRvclNlcnZpY2UsXG4gICAgQEluamVjdChOR1hfTUFUX0RBVEVfRk9STUFUUykgcHJpdmF0ZSByZWFkb25seSBuZ3hNYXREYXRlRm9ybWF0czogTmd4TWF0RGF0ZUZvcm1hdHMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCA9IHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLnNob3dPbmx5RGF0ZXModGhpcy5jYXNlRmllbGQuZGF0ZVRpbWVFbnRyeUZvcm1hdCk7XG4gICAgdGhpcy5jb25maWd1cmVEYXRlUGlja2VyKHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCk7XG4gICAgLy8gc2V0IGRhdGUgY29udHJvbCBiYXNlZCBvbiBtYW5kYXRvcnkgZmllbGRcbiAgICB0aGlzLmRhdGVDb250cm9sID0gKHRoaXMuY2FzZUZpZWxkLmlzTWFuZGF0b3J5ID9cbiAgICAgIHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtQ29udHJvbCh0aGlzLmNhc2VGaWVsZC52YWx1ZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSlcbiAgICAgIDogdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1Db250cm9sKHRoaXMuY2FzZUZpZWxkLnZhbHVlKSkpIGFzIEZvcm1Db250cm9sO1xuICAgIC8vIGluIHJlc2V0dGluZyB0aGUgZm9ybWF0IGp1c3QgYWZ0ZXIgdGhlIHBhZ2UgaW5pdGlhbGlzZXMsIHRoZSBpbnB1dCBjYW4gYmUgcmVmb3JtYXR0ZWRcbiAgICAvLyBvdGhlcndpc2UgdGhlIGxhc3QgZm9ybWF0IGdpdmVuIHdpbGwgYmUgaG93IHRoZSB0ZXh0IHNob3duIHdpbGwgYmUgZGlzcGxheWVkXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldERhdGVUaW1lRm9ybWF0KCk7XG4gICAgICB0aGlzLmZvcm1hdFZhbHVlQW5kU2V0RXJyb3JzKCk7XG4gICAgfSwgMTAwMCk7XG4gICAgLy8gd2hlbiB0aGUgc3RhdHVzIGNoYW5nZXMgY2hlY2sgdGhhdCB0aGUgbWF4aW11bS9taW5pbXVtIGRhdGUgaGFzIG5vdCBiZWVuIGV4Y2VlZGVkXG4gICAgdGhpcy5kYXRlQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm1pbkVycm9yID0gdGhpcy5kYXRlQ29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXRpbWVQaWNrZXJNaW4nKTtcbiAgICAgIHRoaXMubWF4RXJyb3IgPSB0aGlzLmRhdGVDb250cm9sLmhhc0Vycm9yKCdtYXREYXRldGltZVBpY2tlck1heCcpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldERhdGVUaW1lRm9ybWF0KCk6IHZvaWQge1xuICAgIHRoaXMubmd4TWF0RGF0ZUZvcm1hdHMucGFyc2UuZGF0ZUlucHV0ID0gdGhpcy5kYXRlVGltZUVudHJ5Rm9ybWF0O1xuICAgIHRoaXMubmd4TWF0RGF0ZUZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXQgPSB0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQ7XG4gIH1cblxuICAvKlxuICBXaGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLCB1cGRhdGUgdGhlIGZvcm0gY29udHJvbFxuICAqL1xuICBwdWJsaWMgdmFsdWVDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybWF0VmFsdWVBbmRTZXRFcnJvcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0luKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c091dCgpOiB2b2lkIHtcbiAgICAvLyBmb2N1cyBvdXQgbmVlZGVkIHRvIG9idGFpbiBlcnJvcnMgKHJlbGV2YW50IHRvIGZvcm1hdHRpbmcpXG4gICAgdGhpcy5mb3JtYXRWYWx1ZUFuZFNldEVycm9ycygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBtaW5EYXRlKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogRGF0ZSB7XG4gICAgLy8gc2V0IG1pbmltdW0gZGF0ZVxuICAgIGlmIChjYXNlRmllbGQuZmllbGRfdHlwZS5taW4gaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB0aGlzLm1pbmltdW1EYXRlID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUubWluID8gbmV3IERhdGUoY2FzZUZpZWxkLmZpZWxkX3R5cGUubWluKSA6IHRoaXMubWluaW11bURhdGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1pbmltdW1EYXRlO1xuICB9XG5cbiAgcHVibGljIG1heERhdGUoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBEYXRlIHtcbiAgICAvLyBzZXQgbWF4aW11bSBkYXRlXG4gICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHRoaXMubWF4aW11bURhdGUgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5tYXggPyBuZXcgRGF0ZShjYXNlRmllbGQuZmllbGRfdHlwZS5tYXgpIDogdGhpcy5tYXhpbXVtRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWF4aW11bURhdGU7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlRGF0ZVBpY2tlcihkYXRlVGltZVBpY2tlckZvcm1hdDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0RhdGUnKSB7XG4gICAgICB0aGlzLmhpZGVUaW1lID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hlY2tUaW1lID0gZmFsc2U7XG4gICAgICB0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQgPSB0aGlzLmZvcm1hdFRyYW5zbGF0aW9uU2VydmljZS5yZW1vdmVUaW1lKHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCk7XG4gICAgICB0aGlzLm1vbWVudEZvcm1hdCA9ICdZWVlZLU1NLUREJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGVja1RpbWUpIHtcblxuICAgICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc1NlY29uZHMoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICAgIHRoaXMuc2hvd1NlY29uZHMgPSB0cnVlO1xuICAgICAgICB0aGlzLmhpZGVNaW51dGVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZU1pbnV0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGVUaW1lID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaXMyNEhvdXIoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVNZXJpZGlhbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1hdFRyYW5zbGF0aW9uU2VydmljZS5oYXNIb3VycyhkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgICAgdGhpcy5oaWRlVGltZSA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmlzMjRIb3VyKGRhdGVUaW1lUGlja2VyRm9ybWF0KSkge1xuICAgICAgICAgIHRoaXMuZW5hYmxlTWVyaWRpYW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc01pbnV0ZXMoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICAgIHRoaXMuaGlkZU1pbnV0ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaXNhYmxlTWludXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGlkZVRpbWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFRyYW5zbGF0aW9uU2VydmljZS5pczI0SG91cihkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZU1lcmlkaWFuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc0RhdGUoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc05vRGF5KGRhdGVUaW1lUGlja2VyRm9ybWF0KSkge1xuICAgICAgdGhpcy5zdGFydFZpZXcgPSAnbXVsdGkteWVhcic7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc05vRGF5QW5kTW9udGgoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICB0aGlzLnN0YXJ0VmlldyA9ICdtdWx0aS15ZWFyJztcbiAgICAgIHRoaXMueWVhclNlbGVjdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHllYXJTZWxlY3RlZChldmVudDogTW9tZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhcnRWaWV3ID09PSAnbXVsdGkteWVhcicgJiYgdGhpcy55ZWFyU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmRhdGVDb250cm9sLnBhdGNoVmFsdWUoZXZlbnQudG9JU09TdHJpbmcoKSk7XG4gICAgICB0aGlzLmRhdGV0aW1lUGlja2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb250aFNlbGVjdGVkKGV2ZW50OiBNb21lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydFZpZXcgPT09ICdtdWx0aS15ZWFyJykge1xuICAgICAgdGhpcy5kYXRlQ29udHJvbC5wYXRjaFZhbHVlKGV2ZW50LnRvSVNPU3RyaW5nKCkpO1xuICAgICAgdGhpcy5kYXRlQ29udHJvbC5wYXRjaFZhbHVlKGV2ZW50LnRvSVNPU3RyaW5nKCkpO1xuICAgICAgdGhpcy5kYXRldGltZVBpY2tlci5jbG9zZSgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlQW5kU2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICBsZXQgZm9ybVZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIGZvcm1WYWx1ZSA9IG1vbWVudChmb3JtVmFsdWUsIHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCkuZm9ybWF0KHRoaXMubW9tZW50Rm9ybWF0KTtcbiAgICAgIGlmIChmb3JtVmFsdWUgIT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIC8vIGlmIG5vdCBpbnZhbGlkIHNldCB0aGUgdmFsdWUgYXMgdGhlIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgZGF0ZXBpY2tlciBwaWNrcyB1cCB0aGUgaW52YWxpZCBlcnJvclxuICAgICAgICBjb25zdCBrZWVwRXJyb3JUZXh0ID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShrZWVwRXJyb3JUZXh0KTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IGtlZXBFcnJvclRleHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVuc3VyZSByZXF1aXJlZCBlcnJvcnMgYXJlIHBpY2tlZCB1cCBpZiByZWxldmFudFxuICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cCAgYm90dG9tLTMwXCIgW2lkXT1cImNhc2VGaWVsZC5pZFwiXG4gICAgIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGRhdGVDb250cm9sICYmICFkYXRlQ29udHJvbC52YWxpZCAmJiBkYXRlQ29udHJvbC5kaXJ0eX1cIj5cbiAgPGZpZWxkc2V0PlxuICAgIDxsZWdlbmQ+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cImNhc2VGaWVsZC5sYWJlbFwiPnt7KGNhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwpfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dFwiPnt7Y2FzZUZpZWxkLmhpbnRfdGV4dCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0ZUNvbnRyb2wgJiYgZGF0ZUNvbnRyb2wuZXJyb3JzICYmIGRhdGVDb250cm9sLmRpcnR5ICYmICEobWluRXJyb3IgfHwgbWF4RXJyb3IpXCI+e3soZGF0ZUNvbnRyb2wuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWwpfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRlQ29udHJvbCAmJiBkYXRlQ29udHJvbC5kaXJ0eSAmJiBtaW5FcnJvclwiPnt7J1RoaXMgZGF0ZSBpcyBvbGRlciB0aGFuIHRoZSBtaW5pbXVtIGRhdGUgYWxsb3dlZCcgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGVDb250cm9sICYmIGRhdGVDb250cm9sLmRpcnR5ICYmIG1heEVycm9yXCI+e3snVGhpcyBkYXRlIGlzIGxhdGVyIHRoYW4gdGhlIG1heGltdW0gZGF0ZSBhbGxvd2VkJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIlBsZWFzZSBlbnRlciBhIGRhdGUgYW5kIHRpbWUgaW4gdGhlIGZvcm1hdCB8IHJweFRyYW5zbGF0ZSB7e2RhdGVUaW1lRW50cnlGb3JtYXR9fVwiXG4gICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlKGNhc2VGaWVsZClcIlxuICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZShjYXNlRmllbGQpXCJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxuICAgICAgICAgICAgIFtuZ3hNYXREYXRldGltZVBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICAgICAgIChmb2N1c2luKT1cImZvY3VzSW4oKVwiXG4gICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImZvY3VzT3V0KClcIlxuICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICBuZy1tb2RlbC1vcHRpb25zPVwie3RpbWV6b25lOid1dGMnfVwiXG4gICAgICA+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiIGlkPVwicGlja2VyT3BlbmVyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bmd4LW1hdC1kYXRldGltZS1waWNrZXIgI3BpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdWNoVWldPVwidG91Y2hVaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVUaW1lXT1cImhpZGVUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBIb3VyXT1cInN0ZXBIb3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcFNlY29uZF09XCJzdGVwU2Vjb25kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcE1pbnV0ZV09XCJzdGVwTWludXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U3Bpbm5lcnNdPVwic2hvd1NwaW5uZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU1pbnV0ZV09XCJkaXNhYmxlTWludXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlTWVyaWRpYW5dPVwiZW5hYmxlTWVyaWRpYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250aFNlbGVjdGVkKT1cIm1vbnRoU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJ0b2dnbGVDbGljaygpXCJcbiAgICAgID5cbiAgICAgICAgPG5neC1tYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbmd4TWF0RGF0ZXBpY2tlckFwcGx5PkNvbmZpcm08L2J1dHRvbj5cbiAgICAgICAgPC9uZ3gtbWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cbiAgICAgIDwvbmd4LW1hdC1kYXRldGltZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBRWpCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDckIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBc0MsTUFBTSwrQkFBK0IsQ0FBQztBQUczRyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ1oxRCxnQ0FBaUQ7SUFBQSxZQUErQjs7SUFB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LEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxpQ0FBZSx3QkFDSSwwQkFDRSw0QkFDRSwwQkFDRiw4QkFDSSw4QkFDQSxnQ0FDRSxrQ0FDRSxvQ0FDRSxzQ0FDRTs7O2lGRExuRCx1QkFBdUI7Y0FoQm5DLFNBQVM7MkJBQ0UscUJBQXFCLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO29CQUNULEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtvQkFDbEU7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsUUFBUSxFQUFFLG1CQUFtQjt3QkFDN0IsSUFBSSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUNBQW1DLENBQUM7cUJBQ3BFO29CQUNELEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtpQkFDN0U7O3NCQW1DRSxNQUFNO3VCQUFDLG9CQUFvQjtxQkFWaUIsY0FBYztrQkFBNUQsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ1EsWUFBWTtrQkFBekQsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRXJCLFdBQVc7a0JBQTFCLEtBQUs7O2tGQXpCSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ3hNYXREYXRlQWRhcHRlcixcbiAgTmd4TWF0RGF0ZUZvcm1hdHMsXG4gIE5neE1hdERhdGV0aW1lcGlja2VyLFxuICBOR1hfTUFUX0RBVEVfRk9STUFUU1xufSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBOZ3hNYXRNb21lbnRBZGFwdGVyLCBOR1hfTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0xFR0FDWV9EQVRFX0xPQ0FMRSwgTGVnYWN5VGhlbWVQYWxldHRlIGFzIFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudC9tb21lbnQnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdFRyYW5zbGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FzZS1maWVsZHMvZm9ybWF0LXRyYW5zbGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ1VTVE9NX01PTUVOVF9GT1JNQVRTIH0gZnJvbSAnLi9kYXRldGltZS1waWNrZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HWF9NQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogQ1VTVE9NX01PTUVOVF9GT1JNQVRTIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogTmd4TWF0TW9tZW50QWRhcHRlcixcbiAgICAgIGRlcHM6IFtNQVRfTEVHQUNZX0RBVEVfTE9DQUxFLCBOR1hfTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU11cbiAgICB9LFxuICAgIHsgcHJvdmlkZTogTkdYX01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIHVzZVZhbHVlOiB7IHVzZVV0YzogdHJ1ZSB9IH1cbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIERhdGV0aW1lUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzaG93U3Bpbm5lcnMgPSB0cnVlO1xuICBwdWJsaWMgc2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgcHVibGljIHRvdWNoVWkgPSBmYWxzZTtcbiAgcHVibGljIGVuYWJsZU1lcmlkaWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzdGVwSG91ciA9IDE7XG4gIHB1YmxpYyBzdGVwTWludXRlID0gMTtcbiAgcHVibGljIHN0ZXBTZWNvbmQgPSAxO1xuICBwdWJsaWMgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcbiAgcHVibGljIGRpc2FibGVNaW51dGUgPSB0cnVlO1xuICBwdWJsaWMgaGlkZVRpbWUgPSB0cnVlO1xuICBwdWJsaWMgaGlkZU1pbnV0ZXMgPSB0cnVlO1xuICBwdWJsaWMgc3RhcnRWaWV3ID0gJ21vbnRoJztcbiAgcHVibGljIHllYXJTZWxlY3Rpb24gPSBmYWxzZTtcbiAgcHVibGljIGNoZWNrVGltZSA9IHRydWU7XG4gIHB1YmxpYyBzdHJpbmdFZGl0ZWQgPSBmYWxzZTtcbiAgcHVibGljIG1pbkVycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBtYXhFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgZGF0ZVRpbWVFbnRyeUZvcm1hdDogc3RyaW5nO1xuICBwcml2YXRlIGlzVXBkYXRpbmcgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIGRhdGV0aW1lUGlja2VyOiBOZ3hNYXREYXRldGltZXBpY2tlcjxhbnk+O1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRlQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSk7XG5cbiAgcHJpdmF0ZSBtaW5pbXVtRGF0ZSA9IG5ldyBEYXRlKCcwMS8wMS8xODAwJyk7XG4gIHByaXZhdGUgbWF4aW11bURhdGUgPSBudWxsO1xuICBwcml2YXRlIG1vbWVudEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmb3JtYXRUcmFuc2xhdGlvblNlcnZpY2U6IEZvcm1hdFRyYW5zbGF0b3JTZXJ2aWNlLFxuICAgIEBJbmplY3QoTkdYX01BVF9EQVRFX0ZPUk1BVFMpIHByaXZhdGUgcmVhZG9ubHkgbmd4TWF0RGF0ZUZvcm1hdHM6IE5neE1hdERhdGVGb3JtYXRzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQgPSB0aGlzLmZvcm1hdFRyYW5zbGF0aW9uU2VydmljZS5zaG93T25seURhdGVzKHRoaXMuY2FzZUZpZWxkLmRhdGVUaW1lRW50cnlGb3JtYXQpO1xuICAgIHRoaXMuY29uZmlndXJlRGF0ZVBpY2tlcih0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQpO1xuICAgIC8vIHNldCBkYXRlIGNvbnRyb2wgYmFzZWQgb24gbWFuZGF0b3J5IGZpZWxkXG4gICAgdGhpcy5kYXRlQ29udHJvbCA9ICh0aGlzLmNhc2VGaWVsZC5pc01hbmRhdG9yeSA/XG4gICAgICB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUNvbnRyb2wodGhpcy5jYXNlRmllbGQudmFsdWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpXG4gICAgICA6IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtQ29udHJvbCh0aGlzLmNhc2VGaWVsZC52YWx1ZSkpKSBhcyBGb3JtQ29udHJvbDtcbiAgICAvLyBpbiByZXNldHRpbmcgdGhlIGZvcm1hdCBqdXN0IGFmdGVyIHRoZSBwYWdlIGluaXRpYWxpc2VzLCB0aGUgaW5wdXQgY2FuIGJlIHJlZm9ybWF0dGVkXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSBsYXN0IGZvcm1hdCBnaXZlbiB3aWxsIGJlIGhvdyB0aGUgdGV4dCBzaG93biB3aWxsIGJlIGRpc3BsYXllZFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuICAgICAgdGhpcy5sb2FkVmFsdWUoKTtcbiAgICB9LCAxMDAwKTtcbiAgICAvLyB3aGVuIHRoZSBzdGF0dXMgY2hhbmdlcyBjaGVjayB0aGF0IHRoZSBtYXhpbXVtL21pbmltdW0gZGF0ZSBoYXMgbm90IGJlZW4gZXhjZWVkZWRcbiAgICB0aGlzLmRhdGVDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubWluRXJyb3IgPSB0aGlzLmRhdGVDb250cm9sLmhhc0Vycm9yKCdtYXREYXRldGltZVBpY2tlck1pbicpO1xuICAgICAgdGhpcy5tYXhFcnJvciA9IHRoaXMuZGF0ZUNvbnRyb2wuaGFzRXJyb3IoJ21hdERhdGV0aW1lUGlja2VyTWF4Jyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0ZVRpbWVGb3JtYXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ3hNYXREYXRlRm9ybWF0cy5wYXJzZS5kYXRlSW5wdXQgPSB0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQ7XG4gICAgdGhpcy5uZ3hNYXREYXRlRm9ybWF0cy5kaXNwbGF5LmRhdGVJbnB1dCA9IHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdDtcbiAgfVxuXG4gIC8qXG4gIFdoZW4gdGhlIHZhbHVlIGNoYW5nZXMsIHVwZGF0ZSB0aGUgZm9ybSBjb250cm9sXG4gICovXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXRWYWx1ZUFuZFNldEVycm9ycygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzSW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzT3V0KCk6IHZvaWQge1xuICAgIC8vIGZvY3VzIG91dCBuZWVkZWQgdG8gb2J0YWluIGVycm9ycyAocmVsZXZhbnQgdG8gZm9ybWF0dGluZylcbiAgICB0aGlzLmZvcm1hdFZhbHVlQW5kU2V0RXJyb3JzKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuICB9XG5cbiAgcHVibGljIG1pbkRhdGUoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBEYXRlIHtcbiAgICAvLyBzZXQgbWluaW11bSBkYXRlXG4gICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlLm1pbiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHRoaXMubWluaW11bURhdGUgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5taW4gPyBuZXcgRGF0ZShjYXNlRmllbGQuZmllbGRfdHlwZS5taW4pIDogdGhpcy5taW5pbXVtRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWluaW11bURhdGU7XG4gIH1cblxuICBwdWJsaWMgbWF4RGF0ZShjYXNlRmllbGQ6IENhc2VGaWVsZCk6IERhdGUge1xuICAgIC8vIHNldCBtYXhpbXVtIGRhdGVcbiAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUubWF4IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdGhpcy5tYXhpbXVtRGF0ZSA9IGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCA/IG5ldyBEYXRlKGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCkgOiB0aGlzLm1heGltdW1EYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYXhpbXVtRGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVEYXRlUGlja2VyKGRhdGVUaW1lUGlja2VyRm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnRGF0ZScpIHtcbiAgICAgIHRoaXMuaGlkZVRpbWUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGVja1RpbWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCA9IHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLnJlbW92ZVRpbWUodGhpcy5kYXRlVGltZUVudHJ5Rm9ybWF0KTtcbiAgICAgIHRoaXMubW9tZW50Rm9ybWF0ID0gJ1lZWVktTU0tREQnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoZWNrVGltZSkge1xuXG4gICAgICBpZiAodGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaGFzU2Vjb25kcyhkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgICAgdGhpcy5zaG93U2Vjb25kcyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlkZU1pbnV0ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaXNhYmxlTWludXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGlkZVRpbWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFRyYW5zbGF0aW9uU2VydmljZS5pczI0SG91cihkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZU1lcmlkaWFuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmhhc0hvdXJzKGRhdGVUaW1lUGlja2VyRm9ybWF0KSkge1xuICAgICAgICB0aGlzLmhpZGVUaW1lID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaXMyNEhvdXIoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVNZXJpZGlhbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaGFzTWludXRlcyhkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgICAgdGhpcy5oaWRlTWludXRlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpc2FibGVNaW51dGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlVGltZSA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMuZm9ybWF0VHJhbnNsYXRpb25TZXJ2aWNlLmlzMjRIb3VyKGRhdGVUaW1lUGlja2VyRm9ybWF0KSkge1xuICAgICAgICAgIHRoaXMuZW5hYmxlTWVyaWRpYW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaGFzRGF0ZShkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaGFzTm9EYXkoZGF0ZVRpbWVQaWNrZXJGb3JtYXQpKSB7XG4gICAgICB0aGlzLnN0YXJ0VmlldyA9ICdtdWx0aS15ZWFyJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtYXRUcmFuc2xhdGlvblNlcnZpY2UuaGFzTm9EYXlBbmRNb250aChkYXRlVGltZVBpY2tlckZvcm1hdCkpIHtcbiAgICAgIHRoaXMuc3RhcnRWaWV3ID0gJ211bHRpLXllYXInO1xuICAgICAgdGhpcy55ZWFyU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgeWVhclNlbGVjdGVkKGV2ZW50OiBNb21lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydFZpZXcgPT09ICdtdWx0aS15ZWFyJyAmJiB0aGlzLnllYXJTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wucGF0Y2hWYWx1ZShldmVudC50b0lTT1N0cmluZygpKTtcbiAgICAgIHRoaXMuZGF0ZXRpbWVQaWNrZXIuY2xvc2UoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG1vbnRoU2VsZWN0ZWQoZXZlbnQ6IE1vbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0VmlldyA9PT0gJ211bHRpLXllYXInKSB7XG4gICAgICB0aGlzLmRhdGVDb250cm9sLnBhdGNoVmFsdWUoZXZlbnQudG9JU09TdHJpbmcoKSk7XG4gICAgICB0aGlzLmRhdGVDb250cm9sLnBhdGNoVmFsdWUoZXZlbnQudG9JU09TdHJpbmcoKSk7XG4gICAgICB0aGlzLmRhdGV0aW1lUGlja2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IG1vbWVudChpbnB1dFZhbHVlLCB0aGlzLmRhdGVUaW1lRW50cnlGb3JtYXQpLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdCk7XG4gICAgICBpZiAoZm9ybVZhbHVlICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICBjb25zdCBsb2NhbE1vbWVudCA9IG1vbWVudC51dGMoZm9ybVZhbHVlKS5sb2NhbCgpO1xuICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdCkpO1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbG9jYWxNb21lbnQuZm9ybWF0KHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCk7XG4gICAgICAgIGlmICh0aGlzLmRhdGV0aW1lUGlja2VyKSB7XG4gICAgICAgICAgdGhpcy5kYXRldGltZVBpY2tlci5zZWxlY3QobG9jYWxNb21lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaW52YWxpZCwganVzdCBzaG93IHRoZSByYXcgdmFsdWVcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlQW5kU2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVXBkYXRpbmcpIHJldHVybjtcbiAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gbW9tZW50KGlucHV0VmFsdWUsIHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCkuZm9ybWF0KHRoaXMubW9tZW50Rm9ybWF0KTtcbiAgICAgIGNvbnN0IGxvY2FsTW9tZW50ID0gbW9tZW50KGlucHV0VmFsdWUsIHRoaXMuZGF0ZVRpbWVFbnRyeUZvcm1hdCwgdHJ1ZSk7XG4gICAgICBpZiAoZm9ybVZhbHVlICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICBjb25zdCB1dGNWYWx1ZSA9IGxvY2FsTW9tZW50LmNsb25lKCkudXRjKCkuZm9ybWF0KHRoaXMubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh1dGNWYWx1ZSk7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsb2NhbE1vbWVudC5mb3JtYXQodGhpcy5kYXRlVGltZUVudHJ5Rm9ybWF0KTtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZXRpbWVQaWNrZXIpIHtcbiAgICAgICAgICB0aGlzLmRhdGV0aW1lUGlja2VyLnNlbGVjdChsb2NhbE1vbWVudCk7IC8vIGd1YXJkZWQgZnJvbSByZWN1cnNpb25cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtlZXBFcnJvclRleHQgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKGtlZXBFcnJvclRleHQpO1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0ga2VlcEVycm9yVGV4dDtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59ICAgICAgICAgICAgICBcbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwICBib3R0b20tMzBcIiBbaWRdPVwiY2FzZUZpZWxkLmlkXCJcbiAgICAgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZGF0ZUNvbnRyb2wgJiYgIWRhdGVDb250cm9sLnZhbGlkICYmIGRhdGVDb250cm9sLmRpcnR5fVwiPlxuICA8ZmllbGRzZXQ+XG4gICAgPGxlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiICpuZ0lmPVwiY2FzZUZpZWxkLmxhYmVsXCI+e3soY2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbCl9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCIgKm5nSWY9XCJjYXNlRmllbGQuaGludF90ZXh0XCI+e3tjYXNlRmllbGQuaGludF90ZXh0IHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRlQ29udHJvbCAmJiBkYXRlQ29udHJvbC5lcnJvcnMgJiYgZGF0ZUNvbnRyb2wuZGlydHkgJiYgIShtaW5FcnJvciB8fCBtYXhFcnJvcilcIj57eyhkYXRlQ29udHJvbC5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOmNhc2VGaWVsZC5sYWJlbCl9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGVDb250cm9sICYmIGRhdGVDb250cm9sLmRpcnR5ICYmIG1pbkVycm9yXCI+e3snVGhpcyBkYXRlIGlzIG9sZGVyIHRoYW4gdGhlIG1pbmltdW0gZGF0ZSBhbGxvd2VkJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0ZUNvbnRyb2wgJiYgZGF0ZUNvbnRyb2wuZGlydHkgJiYgbWF4RXJyb3JcIj57eydUaGlzIGRhdGUgaXMgbGF0ZXIgdGhhbiB0aGUgbWF4aW11bSBkYXRlIGFsbG93ZWQnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPC9sZWdlbmQ+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXQgcmVhZG9ubHkgXG4gICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1pbnB1dFwiXG4gICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiUGxlYXNlIGVudGVyIGEgZGF0ZSBhbmQgdGltZSBpbiB0aGUgZm9ybWF0IHwgcnB4VHJhbnNsYXRlIHt7ZGF0ZVRpbWVFbnRyeUZvcm1hdH19XCJcbiAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUoY2FzZUZpZWxkKVwiXG4gICAgICAgICAgICAgW21heF09XCJtYXhEYXRlKGNhc2VGaWVsZClcIlxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlQ29udHJvbFwiXG4gICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cInBpY2tlclwiXG4gICAgICAgICAgICAgKGZvY3VzaW4pPVwiZm9jdXNJbigpXCJcbiAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoKVwiXG4gICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKClcIlxuICAgICAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7XCJcbiAgICAgID5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCIgaWQ9XCJwaWNrZXJPcGVuZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxuZ3gtbWF0LWRhdGV0aW1lLXBpY2tlciAjcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG91Y2hVaV09XCJ0b3VjaFVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVRpbWVdPVwiaGlkZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydFZpZXddPVwic3RhcnRWaWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcEhvdXJdPVwic3RlcEhvdXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwU2Vjb25kXT1cInN0ZXBTZWNvbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwTWludXRlXT1cInN0ZXBNaW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJzaG93U2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTcGlubmVyc109XCJzaG93U3Bpbm5lcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlTWludXRlXT1cImRpc2FibGVNaW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVNZXJpZGlhbl09XCJlbmFibGVNZXJpZGlhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cInRvZ2dsZUNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8bmd4LW1hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBuZ3hNYXREYXRlcGlja2VyQXBwbHk+Q29uZmlybTwvYnV0dG9uPlxuICAgICAgICA8L25neC1tYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxuICAgICAgPC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
@@ -7,6 +7,7 @@ export class FieldTypeSanitiser {
7
7
  static FIELD_TYPE_DYNAMIC_RADIO_LIST = 'DynamicRadioList';
8
8
  static FIELD_TYPE_DYNAMIC_MULTISELECT_LIST = 'DynamicMultiSelectList';
9
9
  static DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList', 'DynamicMultiSelectList'];
10
+ static DATE_FORMAT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
10
11
  /**
11
12
  * This method finds dynamiclists in a form and replaces their string
12
13
  * values, with a JSON object, as below:
@@ -126,4 +127,4 @@ export class FieldTypeSanitiser {
126
127
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldTypeSanitiser, [{
127
128
  type: Injectable
128
129
  }], null, null); })();
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS1zYW5pdGlzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Zvcm0vZmllbGQtdHlwZS1zYW5pdGlzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixNQUFNLENBQVUsa0JBQWtCLEdBQWtCLFNBQVMsQ0FBQztJQUM5RCxNQUFNLENBQVUscUJBQXFCLEdBQWtCLFlBQVksQ0FBQztJQUNwRSxNQUFNLENBQVUsdUJBQXVCLEdBQWtCLGFBQWEsQ0FBQztJQUN2RSxNQUFNLENBQVUsNkJBQTZCLEdBQWtCLGtCQUFrQixDQUFDO0lBQ2xGLE1BQU0sQ0FBVSxtQ0FBbUMsR0FBa0Isd0JBQXdCLENBQUM7SUFDOUYsTUFBTSxDQUFVLGlCQUFpQixHQUFvQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFIOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSSxhQUFhLENBQUMsVUFBdUIsRUFBRSxJQUFTO1FBQ3JELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELFVBQVUsR0FBRyxJQUFJLENBQUMscUNBQXFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9CLDBDQUEwQztZQUMxQyxRQUFRLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssa0JBQWtCLENBQUMsbUNBQW1DO29CQUN6RCxJQUFJLENBQUMsK0JBQStCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFD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QUM7UUFDbkMsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUc7b0JBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ2pCLFVBQVUsRUFBRSxTQUFTO2lCQUN0QixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWdCO1FBQ25DLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDOUQsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs0R0EvSFUsa0JBQWtCO2dFQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCOztpRkFBbEIsa0JBQWtCO2NBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9maWVsZC10eXBlLWVudW0ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmllbGRUeXBlU2FuaXRpc2VyIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0NPTVBMRVg6IEZpZWxkVHlwZUVudW0gPSAnQ29tcGxleCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklFTERfVFlQRV9DT0xMRUNUSU9OOiBGaWVsZFR5cGVFbnVtID0gJ0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfRFlOQU1JQ19MSVNUOiBGaWVsZFR5cGVFbnVtID0gJ0R5bmFtaWNMaXN0JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0RZTkFNSUNfUkFESU9fTElTVDogRmllbGRUeXBlRW51bSA9ICdEeW5hbWljUmFkaW9MaXN0JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0RZTkFNSUNfTVVMVElTRUxFQ1RfTElTVDogRmllbGRUeXBlRW51bSA9ICdEeW5hbWljTXVsdGlTZWxlY3RMaXN0JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBEWU5BTUlDX0xJU1RfVFlQRTogRmllbGRUeXBlRW51bVtdID0gWydEeW5hbWljTGlzdCcsICdEeW5hbWljUmFkaW9MaXN0JywgJ0R5bmFtaWNNdWx0aVNlbGVjdExpc3QnXTtcbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZpbmRzIGR5bmFtaWNsaXN0cyBpbiBhIGZvcm0gYW5kIHJlcGxhY2VzIHRoZWlyIHN0cmluZ1xuICAgKiB2YWx1ZXMsIHdpdGggYSBKU09OIG9iamVjdCwgYXMgYmVsb3c6XG4gICAqIEZyb206ICd4eXonXG4gICAqIFRvICA6IHtcbiAgICogICB2YWx1ZTogeyBjb2RlOid4eXonLCBsYWJlbDonWFlaJyB9LFxuICAgKiAgIGxpc3RfaXRlbXM6IFtcbiAgICogICAgIHsgY29kZToneHl6JywgbGFiZWw6J1hZWid9LFxuICAgKiAgICAgeyBjb2RlOidhYmMnLCBsYWJlbDonQUJDJ31cbiAgICogICBdXG4gICAqIH1cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIENhc2VGaWVsZHMgdG8gYXNzZXNzLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBpbiB0aGUgZm9ybS5cbiAgICovXG4gIHB1YmxpYyBzYW5pdGlzZUxpc3RzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBkYXRhOiBhbnkpIHtcbiAgICBpZiAoIWRhdGEgfHwgIWNhc2VGaWVsZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2FzZUZpZWxkcyA9IHRoaXMuZW5zdXJlRHluYW1pY011bHRpU2VsZWN0TGlzdFBvcHVsYXRlZChjYXNlRmllbGRzKTtcbiAgICBjYXNlRmllbGRzLmZvckVhY2goKGNhc2VGaWVsZCkgPT4ge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0XG4gICAgICBzd2l0Y2ggKGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVTYW5pdGlzZXIuRklFTERfVFlQRV9EWU5BTUlDX01VTFRJU0VMRUNUX0xJU1Q6XG4gICAgICAgICAgdGhpcy5jb252ZXJ0QXJyYXlUb0R5bmFtaWNMaXN0T3V0cHV0KGNhc2VGaWVsZCwgZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmllbGRUeXBlU2FuaXRpc2VyLkZJRUxEX1RZUEVfRFlOQU1JQ19SQURJT19MSVNUOlxuICAgICAgICBjYXNlIEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0RZTkFNSUNfTElTVDpcbiAgICAgICAgICB0aGlzLmNvbnZlcnRTdHJpbmdUb0R5bmFtaWNMaXN0T3V0cHV0KGNhc2VGaWVsZCwgZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGaWVsZFR5cGVTYW5pdGlzZXIuRklFTERfVFlQRV9DT01QTEVYOlxuICAgICAgICAgIHRoaXMuc2FuaXRpc2VMaXN0cyhjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZGF0YVtjYXNlRmllbGQuaWRdKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTExFQ1RJT046XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVtjYXNlRmllbGQuaWRdKSkge1xuICAgICAgICAgICAgZGF0YVtjYXNlRmllbGQuaWRdLmZvckVhY2goKGZvcm1FbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGlzZUxpc3RzKGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZm9ybUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZUR5bmFtaWNNdWx0aVNlbGVjdExpc3RQb3B1bGF0ZWQoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUudHlwZSAhPT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhc2VGaWVsZERhdGEgPSBmaWVsZC5fdmFsdWU7XG4gICAgICAvLyBQcm9jZXNzIGVhY2ggY29tcGxleCBmaWVsZFxuICAgICAgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5mb3JFYWNoKChjb21wbGV4RmllbGQpID0+IHtcbiAgICAgICAgaWYgKGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrTmVzdGVkRHluYW1pY0xpc3QoY29tcGxleEZpZWxkLCBjYXNlRmllbGREYXRhPy5bY29tcGxleEZpZWxkLmlkXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0R5bmFtaWNMaXN0KGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUpICYmXG4gICAgICAgICAgY29tcGxleEZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gJ0hJRERFTicgJiZcbiAgICAgICAgICBmaWVsZC5fdmFsdWU/Lltjb21wbGV4RmllbGQuaWRdXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbXBsZXhGaWVsZC5saXN0X2l0ZW1zID0gZmllbGQuX3ZhbHVlW2NvbXBsZXhGaWVsZC5pZF0/Lmxpc3RfaXRlbXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gRmluYWwgdHJhbnNmb3JtYXRpb246IGNvbnN0cnVjdCB1cGRhdGVkIGZpZWxkIG9iamVjdFxuICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIGZpZWxkX3R5cGU6IHsgLi4uZmllbGQ/LmZpZWxkX3R5cGUgfSB9IGFzIENhc2VGaWVsZDtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNoZWNrTmVzdGVkRHluYW1pY0xpc3QoY2FzZUZpZWxkOiBDYXNlRmllbGQsIGZpZWxkRGF0YTogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goKGNvbXBsZXhGaWVsZCkgPT4ge1xuICAgICAgaWYgKGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgICAgdGhpcy5jaGVja05lc3RlZER5bmFtaWNMaXN0KGNvbXBsZXhGaWVsZCwgZmllbGREYXRhPy5bY29tcGxleEZpZWxkLmlkXSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNEeW5hbWljTGlzdChjb21wbGV4RmllbGQuZmllbGRfdHlwZS50eXBlKSAmJlxuICAgICAgICBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSAnSElEREVOJyAmJlxuICAgICAgICBmaWVsZERhdGE/Lltjb21wbGV4RmllbGQuaWRdXG4gICAgICApIHtcbiAgICAgICAgY29tcGxleEZpZWxkLmxpc3RfaXRlbXMgPSBmaWVsZERhdGE/Lltjb21wbGV4RmllbGQuaWRdPy5saXN0X2l0ZW1zO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0R5bmFtaWNMaXN0KGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGaWVsZFR5cGVTYW5pdGlzZXIuRFlOQU1JQ19MSVNUX1RZUEUuaW5kZXhPZihmaWVsZFR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEFycmF5VG9EeW5hbWljTGlzdE91dHB1dChmaWVsZDogQ2FzZUZpZWxkLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICBjb25zdCBsaXN0SXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhmaWVsZCk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gbGlzdEl0ZW1zLmZpbHRlcihpdGVtID0+IHZhbHVlcy5tYXAodiA9PiB2LmNvZGUpLmluZGV4T2YoaXRlbS5jb2RlKSAhPT0gLTEpO1xuXG4gICAgICBkYXRhW2ZpZWxkLmlkXSA9IHtcbiAgICAgICAgdmFsdWU6IG1hdGNoZXMsXG4gICAgICAgIGxpc3RfaXRlbXM6IGxpc3RJdGVtc1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTdHJpbmdUb0R5bmFtaWNMaXN0T3V0cHV0KGZpZWxkOiBDYXNlRmllbGQsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gZGF0YVtmaWVsZC5pZF07XG4gICAgaWYgKHR5cGVvZiBzdHJpbmdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpc3RJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGZpZWxkKTtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBsaXN0SXRlbXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlPy5jb2RlID09PSBzdHJpbmdWYWx1ZSk7XG4gICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGF0YVtmaWVsZC5pZF0gPSB7XG4gICAgICAgICAgdmFsdWU6IG1hdGNoZXNbMF0sXG4gICAgICAgICAgbGlzdF9pdGVtczogbGlzdEl0ZW1zXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMaXN0SXRlbXMoZmllbGQ6IENhc2VGaWVsZCk6IGFueVtdIHtcbiAgICBpZiAoZmllbGQpIHtcbiAgICAgIGlmIChmaWVsZC5saXN0X2l0ZW1zKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5saXN0X2l0ZW1zO1xuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLmZvcm1hdHRlZF92YWx1ZSAmJiBmaWVsZC5mb3JtYXR0ZWRfdmFsdWUubGlzdF9pdGVtcykge1xuICAgICAgICByZXR1cm4gZmllbGQuZm9ybWF0dGVkX3ZhbHVlLmxpc3RfaXRlbXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS1zYW5pdGlzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Zvcm0vZmllbGQtdHlwZS1zYW5pdGlzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixNQUFNLENBQVUsa0JBQWtCLEdBQWtCLFNBQVMsQ0FBQztJQUM5RCxNQUFNLENBQVUscUJBQXFCLEdBQWtCLFlBQVksQ0FBQztJQUNwRSxNQUFNLENBQVUsdUJBQXVCLEdBQWtCLGFBQWEsQ0FBQztJQUN2RSxNQUFNLENBQVUsNkJBQTZCLEdBQWtCLGtCQUFrQixDQUFDO0lBQ2xGLE1BQU0sQ0FBVSxtQ0FBbUMsR0FBa0Isd0JBQXdCLENBQUM7SUFDOUYsTUFBTSxDQUFVLGlCQUFpQixHQUFvQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ25ILE1BQU0sQ0FBVSxXQUFXLEdBQUcsOENBQThDLENBQUM7SUFDcEY7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLGFBQWEsQ0FBQyxVQUF1QixFQUFFLElBQVM7UUFDckQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsMENBQTBDO1lBQzFDLFFBQVEsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxrQkFBa0IsQ0FBQyxtQ0FBbUM7b0JBQ3pELElBQUksQ0FB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LEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUM7WUFDdkUsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRztvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDakIsVUFBVSxFQUFFLFNBQVM7aUJBQ3RCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsS0FBZ0I7UUFDbkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyQixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM5RCxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzRHQWhJVSxrQkFBa0I7Z0VBQWxCLGtCQUFrQixXQUFsQixrQkFBa0I7O2lGQUFsQixrQkFBa0I7Y0FEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2ZpZWxkLXR5cGUtZW51bS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWVsZFR5cGVTYW5pdGlzZXIge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfQ09NUExFWDogRmllbGRUeXBlRW51bSA9ICdDb21wbGV4JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0NPTExFQ1RJT046IEZpZWxkVHlwZUVudW0gPSAnQ29sbGVjdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklFTERfVFlQRV9EWU5BTUlDX0xJU1Q6IEZpZWxkVHlwZUVudW0gPSAnRHluYW1pY0xpc3QnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfRFlOQU1JQ19SQURJT19MSVNUOiBGaWVsZFR5cGVFbnVtID0gJ0R5bmFtaWNSYWRpb0xpc3QnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfRFlOQU1JQ19NVUxUSVNFTEVDVF9MSVNUOiBGaWVsZFR5cGVFbnVtID0gJ0R5bmFtaWNNdWx0aVNlbGVjdExpc3QnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERZTkFNSUNfTElTVF9UWVBFOiBGaWVsZFR5cGVFbnVtW10gPSBbJ0R5bmFtaWNMaXN0JywgJ0R5bmFtaWNSYWRpb0xpc3QnLCAnRHluYW1pY011bHRpU2VsZWN0TGlzdCddO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBVEVfRk9STUFUID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfS5cXGR7M31aJC87ICBcbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZpbmRzIGR5bmFtaWNsaXN0cyBpbiBhIGZvcm0gYW5kIHJlcGxhY2VzIHRoZWlyIHN0cmluZ1xuICAgKiB2YWx1ZXMsIHdpdGggYSBKU09OIG9iamVjdCwgYXMgYmVsb3c6XG4gICAqIEZyb206ICd4eXonXG4gICAqIFRvICA6IHtcbiAgICogICB2YWx1ZTogeyBjb2RlOid4eXonLCBsYWJlbDonWFlaJyB9LFxuICAgKiAgIGxpc3RfaXRlbXM6IFtcbiAgICogICAgIHsgY29kZToneHl6JywgbGFiZWw6J1hZWid9LFxuICAgKiAgICAgeyBjb2RlOidhYmMnLCBsYWJlbDonQUJDJ31cbiAgICogICBdXG4gICAqIH1cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIENhc2VGaWVsZHMgdG8gYXNzZXNzLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBpbiB0aGUgZm9ybS5cbiAgICovXG4gIHB1YmxpYyBzYW5pdGlzZUxpc3RzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBkYXRhOiBhbnkpIHtcbiAgICBpZiAoIWRhdGEgfHwgIWNhc2VGaWVsZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2FzZUZpZWxkcyA9IHRoaXMuZW5zdXJlRHluYW1pY011bHRpU2VsZWN0TGlzdFBvcHVsYXRlZChjYXNlRmllbGRzKTtcbiAgICBjYXNlRmllbGRzLmZvckVhY2goKGNhc2VGaWVsZCkgPT4ge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0XG4gICAgICBzd2l0Y2ggKGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVTYW5pdGlzZXIuRklFTERfVFlQRV9EWU5BTUlDX01VTFRJU0VMRUNUX0xJU1Q6XG4gICAgICAgICAgdGhpcy5jb252ZXJ0QXJyYXlUb0R5bmFtaWNMaXN0T3V0cHV0KGNhc2VGaWVsZCwgZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmllbGRUeXBlU2FuaXRpc2VyLkZJRUxEX1RZUEVfRFlOQU1JQ19SQURJT19MSVNUOlxuICAgICAgICBjYXNlIEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0RZTkFNSUNfTElTVDpcbiAgICAgICAgICB0aGlzLmNvbnZlcnRTdHJpbmdUb0R5bmFtaWNMaXN0T3V0cHV0KGNhc2VGaWVsZCwgZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGaWVsZFR5cGVTYW5pdGlzZXIuRklFTERfVFlQRV9DT01QTEVYOlxuICAgICAgICAgIHRoaXMuc2FuaXRpc2VMaXN0cyhjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZGF0YVtjYXNlRmllbGQuaWRdKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTExFQ1RJT046XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVtjYXNlRmllbGQuaWRdKSkge1xuICAgICAgICAgICAgZGF0YVtjYXNlRmllbGQuaWRdLmZvckVhY2goKGZvcm1FbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGlzZUxpc3RzKGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZm9ybUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZUR5bmFtaWNNdWx0aVNlbGVjdExpc3RQb3B1bGF0ZWQoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUudHlwZSAhPT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhc2VGaWVsZERhdGEgPSBmaWVsZC5fdmFsdWU7XG4gICAgICAvLyBQcm9jZXNzIGVhY2ggY29tcGxleCBmaWVsZFxuICAgICAgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5mb3JFYWNoKChjb21wbGV4RmllbGQpID0+IHtcbiAgICAgICAgaWYgKGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrTmVzdGVkRHluYW1pY0xpc3QoY29tcGxleEZpZWxkLCBjYXNlRmllbGREYXRhPy5bY29tcGxleEZpZWxkLmlkXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0R5bmFtaWNMaXN0KGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUpICYmXG4gICAgICAgICAgY29tcGxleEZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gJ0hJRERFTicgJiZcbiAgICAgICAgICBmaWVsZC5fdmFsdWU/Lltjb21wbGV4RmllbGQuaWRdXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbXBsZXhGaWVsZC5saXN0X2l0ZW1zID0gZmllbGQuX3ZhbHVlW2NvbXBsZXhGaWVsZC5pZF0/Lmxpc3RfaXRlbXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gRmluYWwgdHJhbnNmb3JtYXRpb246IGNvbnN0cnVjdCB1cGRhdGVkIGZpZWxkIG9iamVjdFxuICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIGZpZWxkX3R5cGU6IHsgLi4uZmllbGQ/LmZpZWxkX3R5cGUgfSB9IGFzIENhc2VGaWVsZDtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNoZWNrTmVzdGVkRHluYW1pY0xpc3QoY2FzZUZpZWxkOiBDYXNlRmllbGQsIGZpZWxkRGF0YTogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goKGNvbXBsZXhGaWVsZCkgPT4ge1xuICAgICAgaWYgKGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IEZpZWxkVHlwZVNhbml0aXNlci5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgICAgdGhpcy5jaGVja05lc3RlZER5bmFtaWNMaXN0KGNvbXBsZXhGaWVsZCwgZmllbGREYXRhPy5bY29tcGxleEZpZWxkLmlkXSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNEeW5hbWljTGlzdChjb21wbGV4RmllbGQuZmllbGRfdHlwZS50eXBlKSAmJlxuICAgICAgICBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSAnSElEREVOJyAmJlxuICAgICAgICBmaWVsZERhdGE/Lltjb21wbGV4RmllbGQuaWRdXG4gICAgICApIHtcbiAgICAgICAgY29tcGxleEZpZWxkLmxpc3RfaXRlbXMgPSBmaWVsZERhdGE/Lltjb21wbGV4RmllbGQuaWRdPy5saXN0X2l0ZW1zO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0R5bmFtaWNMaXN0KGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGaWVsZFR5cGVTYW5pdGlzZXIuRFlOQU1JQ19MSVNUX1RZUEUuaW5kZXhPZihmaWVsZFR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEFycmF5VG9EeW5hbWljTGlzdE91dHB1dChmaWVsZDogQ2FzZUZpZWxkLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICBjb25zdCBsaXN0SXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhmaWVsZCk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gbGlzdEl0ZW1zLmZpbHRlcihpdGVtID0+IHZhbHVlcy5tYXAodiA9PiB2LmNvZGUpLmluZGV4T2YoaXRlbS5jb2RlKSAhPT0gLTEpO1xuXG4gICAgICBkYXRhW2ZpZWxkLmlkXSA9IHtcbiAgICAgICAgdmFsdWU6IG1hdGNoZXMsXG4gICAgICAgIGxpc3RfaXRlbXM6IGxpc3RJdGVtc1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTdHJpbmdUb0R5bmFtaWNMaXN0T3V0cHV0KGZpZWxkOiBDYXNlRmllbGQsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gZGF0YVtmaWVsZC5pZF07XG4gICAgaWYgKHR5cGVvZiBzdHJpbmdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpc3RJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGZpZWxkKTtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBsaXN0SXRlbXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlPy5jb2RlID09PSBzdHJpbmdWYWx1ZSk7XG4gICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGF0YVtmaWVsZC5pZF0gPSB7XG4gICAgICAgICAgdmFsdWU6IG1hdGNoZXNbMF0sXG4gICAgICAgICAgbGlzdF9pdGVtczogbGlzdEl0ZW1zXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMaXN0SXRlbXMoZmllbGQ6IENhc2VGaWVsZCk6IGFueVtdIHtcbiAgICBpZiAoZmllbGQpIHtcbiAgICAgIGlmIChmaWVsZC5saXN0X2l0ZW1zKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5saXN0X2l0ZW1zO1xuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLmZvcm1hdHRlZF92YWx1ZSAmJiBmaWVsZC5mb3JtYXR0ZWRfdmFsdWUubGlzdF9pdGVtcykge1xuICAgICAgICByZXR1cm4gZmllbGQuZm9ybWF0dGVkX3ZhbHVlLmxpc3RfaXRlbXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19