@dereekb/dbx-form 9.23.18 → 9.23.20

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.
Files changed (44) hide show
  1. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +10 -5
  2. package/calendar/lib/calendar.schedule.selection.store.d.ts +3 -3
  3. package/esm2020/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +1 -1
  4. package/esm2020/calendar/lib/calendar.schedule.selection.range.component.mjs +45 -11
  5. package/esm2020/calendar/lib/calendar.schedule.selection.store.mjs +13 -5
  6. package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +1 -1
  7. package/esm2020/lib/formly/field/value/date/datetime.field.component.mjs +10 -5
  8. package/esm2020/lib/formly/field/value/date/datetime.field.mjs +35 -4
  9. package/esm2020/lib/formly/field/value/number/number.field.mjs +3 -3
  10. package/esm2020/lib/formly/field/value/text/text.field.mjs +3 -3
  11. package/esm2020/mapbox/lib/field/latlng/index.mjs +2 -1
  12. package/esm2020/mapbox/lib/field/latlng/latlng.field.component.mjs +87 -29
  13. package/esm2020/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +34 -0
  14. package/esm2020/mapbox/lib/field/latlng/latlng.field.mjs +6 -3
  15. package/esm2020/mapbox/lib/field/latlng/latlng.module.mjs +6 -4
  16. package/fesm2015/dereekb-dbx-form-calendar.mjs +59 -16
  17. package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
  18. package/fesm2015/dereekb-dbx-form-mapbox.mjs +128 -38
  19. package/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
  20. package/fesm2015/dereekb-dbx-form.mjs +36 -14
  21. package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
  22. package/fesm2020/dereekb-dbx-form-calendar.mjs +59 -16
  23. package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
  24. package/fesm2020/dereekb-dbx-form-mapbox.mjs +126 -38
  25. package/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
  26. package/fesm2020/dereekb-dbx-form.mjs +47 -11
  27. package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
  28. package/lib/formly/field/value/date/datetime.field.d.ts +11 -2
  29. package/mapbox/esm2020/lib/field/latlng/index.mjs +2 -1
  30. package/mapbox/esm2020/lib/field/latlng/latlng.field.component.mjs +87 -29
  31. package/mapbox/esm2020/lib/field/latlng/latlng.field.marker.component.mjs +34 -0
  32. package/mapbox/esm2020/lib/field/latlng/latlng.field.mjs +6 -3
  33. package/mapbox/esm2020/lib/field/latlng/latlng.module.mjs +6 -4
  34. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs +128 -38
  35. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
  36. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs +126 -38
  37. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
  38. package/mapbox/lib/field/latlng/index.d.ts +1 -0
  39. package/mapbox/lib/field/latlng/latlng.field.component.d.ts +45 -5
  40. package/mapbox/lib/field/latlng/latlng.field.d.ts +1 -1
  41. package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +12 -0
  42. package/mapbox/lib/field/latlng/latlng.module.d.ts +11 -10
  43. package/mapbox/package.json +4 -4
  44. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  import { asArray, filterMaybeValues, dateFromLogicalDate } from '@dereekb/util';
2
- import { DateTimeMinuteInstance, formatToISO8601DayString, guessCurrentTimezone, readableTimeStringToDate, toLocalReadableTimeString, toReadableTimeString, utcDayForDate, formatToISO8601DateString, toJsDate, parseISO8601DayStringToDate, safeToJsDate, findMinDate, findMaxDate, dateTimeMinuteDecisionFunction } from '@dereekb/date';
2
+ import { DateTimeMinuteInstance, formatToISO8601DayString, guessCurrentTimezone, readableTimeStringToDate, toLocalReadableTimeString, toReadableTimeString, utcDayForDate, formatToISO8601DateString, toJsDate, parseISO8601DayStringToDate, safeToJsDate, findMinDate, findMaxDate, dateTimeMinuteDecisionFunction, isSameDateHoursAndMinutes } from '@dereekb/date';
3
3
  import { switchMap, shareReplay, map, startWith, tap, first, distinctUntilChanged, debounceTime, throttleTime, BehaviorSubject, combineLatest, Subject, merge, interval, of } from 'rxjs';
4
4
  import { ChangeDetectorRef, Component } from '@angular/core';
5
5
  import { FormControl, Validators } from '@angular/forms';
@@ -94,6 +94,7 @@ export function syncConfigValueObs(parseConfigsObs, type) {
94
94
  return result;
95
95
  }), distinctUntilChanged(), shareReplay(1));
96
96
  }
97
+ const TIME_OUTPUT_THROTTLE_TIME = 10; // 10 ms
97
98
  export class DbxDateTimeFieldComponent extends FieldType {
98
99
  constructor(cdRef) {
99
100
  super();
@@ -208,7 +209,7 @@ export class DbxDateTimeFieldComponent extends FieldType {
208
209
  }
209
210
  }), shareReplay(1));
210
211
  this.defaultPickerFilter = () => true;
211
- this.timeOutput$ = combineLatest([this.rawDateTime$, this._offset, this.config$]).pipe(throttleTime(40, undefined, { leading: false, trailing: true }), distinctUntilChanged((current, next) => current[0] === next[0] && next[1] === 0), tap(([, stepsOffset]) => (stepsOffset ? this._offset.next(0) : 0)), map(([date, stepsOffset, config]) => {
212
+ this.timeOutput$ = combineLatest([this.rawDateTime$, this._offset, this.config$]).pipe(throttleTime(TIME_OUTPUT_THROTTLE_TIME, undefined, { leading: false, trailing: true }), distinctUntilChanged((current, next) => current[0] === next[0] && next[1] === 0), tap(([, stepsOffset]) => (stepsOffset ? this._offset.next(0) : 0)), map(([date, stepsOffset, config]) => {
212
213
  if (date != null) {
213
214
  const instance = new DateTimeMinuteInstance({
214
215
  date,
@@ -220,7 +221,7 @@ export class DbxDateTimeFieldComponent extends FieldType {
220
221
  date = addMinutes(date, minutes);
221
222
  }
222
223
  return date;
223
- }), distinctUntilChanged((a, b) => a != null && b != null && isSameMinute(a, b)), shareReplay(1));
224
+ }), distinctUntilChanged(isSameDateHoursAndMinutes), shareReplay(1));
224
225
  }
225
226
  get dateLabel() {
226
227
  return this.props.dateLabel ?? 'Date';
@@ -272,7 +273,11 @@ export class DbxDateTimeFieldComponent extends FieldType {
272
273
  this._config.next(this.dateTimeField.getConfigObs?.());
273
274
  this._syncConfigObs.next(this.dateTimeField.getSyncFieldsObs?.());
274
275
  const valueFactory = dbxDateTimeOutputValueFactory(this.valueMode);
275
- this._sub.subscription = this.timeOutput$.pipe(skipFirstMaybe()).subscribe((dateValue) => {
276
+ this._sub.subscription = this.value$
277
+ .pipe(switchMap(() => {
278
+ return this.timeOutput$.pipe(throttleTime(TIME_OUTPUT_THROTTLE_TIME * 2, undefined, { leading: false, trailing: true }), skipFirstMaybe());
279
+ }), distinctUntilChanged(isSameDateHoursAndMinutes))
280
+ .subscribe((dateValue) => {
276
281
  const value = valueFactory(dateValue);
277
282
  this.formControl.setValue(value);
278
283
  this.formControl.markAsDirty();
@@ -431,4 +436,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
431
436
  type: Component,
432
437
  args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"dbx-button-spacer add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\" [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">{{ allDayLabel }}</b>\n {{ displayValue$ | async | date: 'fullDate' }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"value$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <button class=\"dbx-button-spacer\" *ngIf=\"!hideDatePicker\" mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <mat-form-field class=\"dbx-datetime-row-field\" [ngClass]=\"{ 'dbx-datetime-row-field-full-width': hideDatePicker }\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input #dateInput matInput [min]=\"dateInputMin$ | async\" [max]=\"dateInputMax$ | async\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"(pickerFilter$ | async) || defaultPickerFilter\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" (keydown)=\"keydownOnDateInput($event)\" />\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button class=\"dbx-button-spacer\" mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <button mat-menu-item (click)=\"setLogicalTime('now')\">\n <span>Now</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00AM')\">\n <span>Midnight</span>\n </button>\n <button mat-menu-item (click)=\"setTime('6:00AM')\">\n <span>6:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('8:00AM')\">\n <span>8:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('10:00AM')\">\n <span>10:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00PM')\">\n <span>Noon</span>\n </button>\n <button mat-menu-item (click)=\"setTime('2:00PM')\">\n <span>2:00PM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('5:00PM')\">\n <span>5:00PM</span>\n </button>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input #timeInput matInput [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnTimeInput($event)\" />\n </mat-form-field>\n</ng-template>\n" }]
433
438
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
434
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyTCxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDalcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdE0sT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFz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LEVBQUU7WUFDekIsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNaO1FBRUQsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxhQUFhO0lBQ2YsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEF4Y1UseUJBQXlCOzJHQUF6Qix5QkFBeUIsMkVDM010QyxtaklBeUZBOzRGRGtIYSx5QkFBeUI7a0JBSHJDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dpY2FsRGF0ZVN0cmluZ0NvZGUsIE1heWJlLCBSZWFkYWJsZVRpbWVTdHJpbmcsIEFycmF5T3JWYWx1ZSwgSVNPODYwMURhdGVTdHJpbmcsIGFzQXJyYXksIGZpbHRlck1heWJlVmFsdWVzLCBkYXRlRnJvbUxvZ2ljYWxEYXRlLCBEZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYXRlVGltZU1pbnV0ZUNvbmZpZywgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSwgZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nLCBndWVzc0N1cnJlbnRUaW1lem9uZSwgcmVhZGFibGVUaW1lU3RyaW5nVG9EYXRlLCB0b0xvY2FsUmVhZGFibGVUaW1lU3RyaW5nLCB0b1JlYWRhYmxlVGltZVN0cmluZywgdXRjRGF5Rm9yRGF0ZSwgZm9ybWF0VG9JU084NjAxRGF0ZVN0cmluZywgdG9Kc0RhdGUsIHBhcnNlSVNPODYwMURheVN0cmluZ1RvRGF0ZSwgc2FmZVRvSnNEYXRlLCBmaW5kTWluRGF0ZSwgZmluZE1heERhdGUsIGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgbWFwLCBzdGFydFdpdGgsIHRhcCwgZmlyc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUsIHRocm90dGxlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBtZXJnZSwgaW50ZXJ2YWwsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgYWRkTWludXRlcywgaXNTYW1lRGF5LCBpc1NhbWVNaW51dGUsIHN0YXJ0T2ZEYXksIGFkZERheXMgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgc2tpcEZpcnN0TWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVEZWZhdWx0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAvKipcbiAgICogVGltZSBpcyBvcHRpb25hbC5cbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgcGVybWVuYW50bHkgb2ZmLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgZW51bSBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYSBEYXRlLlxuICAgKi9cbiAgREFURSA9IDAsXG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYW4gSVNPODYwMURhdGVTdHJpbmdcbiAgICovXG4gIERBVEVfU1RSSU5HID0gMSxcbiAgLyoqXG4gICAqIFZhbHVlIGlzIHJldHVybmVkL3BhcnNlZCBhcyBhbiBJU084NjAxRGF5U3RyaW5nLCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIERBWV9TVFJJTkcgPSAyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUpOiAoZGF0ZTogTWF5YmU8RGF0ZSB8IHN0cmluZz4pID0+IE1heWJlPERhdGU+IHtcbiAgbGV0IGZhY3Rvcnk6IChkYXRlOiBNYXliZTxEYXRlIHwgc3RyaW5nPikgPT4gTWF5YmU8RGF0ZT47XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8gcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTpcbiAgICBkZWZhdWx0OlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gdG9Kc0RhdGUoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSk6IChkYXRlOiBNYXliZTxEYXRlPikgPT4gTWF5YmU8RGF0ZSB8IHN0cmluZz4ge1xuICBsZXQgZmFjdG9yeTogKGRhdGU6IE1heWJlPERhdGU+KSA9PiBNYXliZTxEYXRlIHwgc3RyaW5nPjtcblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF0ZVN0cmluZyh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU6XG4gICAgZGVmYXVsdDpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4geDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiA9IE9taXQ8RGF0ZVRpbWVNaW51dGVDb25maWcsICdkYXRlJz47XG5cbmV4cG9ydCB0eXBlIERieERhdGVUaW1lRmllbGRTeW5jVHlwZSA9ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkIHtcbiAgLyoqXG4gICAqIEZpZWxkIGtleS9wYXRoIHRvIHN5bmMgd2l0aC9hZ2FpbnN0LlxuICAgKi9cbiAgc3luY1dpdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyB0byBzeW5jIGFnYWluc3QgdGhlIG90aGVyIGZpZWxkLlxuICAgKi9cbiAgc3luY1R5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRlIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEYXRlXG4gICAqL1xuICBkYXRlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0aW1lIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBUaW1lXG4gICAqL1xuICB0aW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBbGwgRGF5XCIuIERlZmF1bHRzIHRvIFwiQWxsIERheVwiLlxuICAgKi9cbiAgYWxsRGF5TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBdFwiLiBEZWZhdWx0cyB0byBcIkF0XCIuXG4gICAqL1xuICBhdFRpbWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUgbW9kZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gREFURVxuICAgKi9cbiAgdmFsdWVNb2RlPzogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkYXRlIGlzIGhpZGRlbiwgYW5kIGF1dG9tYXRpY2FsbHkgdXNlcyB0b2RheS9pbnB1dCBkYXRlLlxuICAgKi9cbiAgdGltZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBvcHRpb25hbGx5LlxuICAgKlxuICAgKiBUaGlzIGlzIGlnbm9yZWQgaWYgdGltZU9ubHkgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgdGltZU1vZGU/OiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIGZvcm0gY29udHJvbCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIGEgZnVsbCBkYXkuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgb25seSB1c2VkIGlmIHRpbWUgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIFdoZW4gdGltZSBpcyBvZmYsIHRoZSBmaWVsZCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGZ1bGxEYXlGaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHBhc3MgdGhlIGRhdGUgdmFsdWUgYXMgYSBVVEMgZGF0ZSwgb3IgYSBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgZnVsbERheUluVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3Qgb3QgaGlkZSB0aGUgZGF0ZSBoaW50IGluZm8gY29udGVudC5cbiAgICpcbiAgICogRmFsc2UgYnkgIGRlZmF1bHRcbiAgICovXG4gIGhpZGVEYXRlSGludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGRhdGUvY2FsZW5kYXIgcGlja2VyLlxuICAgKi9cbiAgaGlkZURhdGVQaWNrZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciByZXR1cm5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2YWJsZS5cbiAgICovXG4gIGdldENvbmZpZ09icz86ICgpID0+IE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogVXNlZCBmb3Igc3luY2luZyB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyB3aXRoIGEgRGF0ZSB2YWx1ZS5cbiAgICovXG4gIGdldFN5bmNGaWVsZHNPYnM/OiAoKSA9PiBPYnNlcnZhYmxlPEFycmF5T3JWYWx1ZTxEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZCBleHRlbmRzIFBpY2s8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZCwgJ3N5bmNUeXBlJz4ge1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8TWF5YmU8RGF0ZSB8IElTTzg2MDFEYXRlU3RyaW5nPj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jQ29uZmlnVmFsdWVPYnMocGFyc2VDb25maWdzT2JzOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4sIHR5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZSk6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+IHtcbiAgcmV0dXJuIHBhcnNlQ29uZmlnc09icy5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0geC5maW5kKCh5KSA9PiB5LnN5bmNUeXBlID09PSB0eXBlKTtcbiAgICAgIGxldCByZXN1bHQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+O1xuXG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgY29udHJvbCB9ID0gY29uZmlnO1xuICAgICAgICByZXN1bHQgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcbiAgICAgICAgICBtYXAoKHgpID0+IHNhZmVUb0pzRGF0ZSh4KSA/PyBudWxsKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdkYXRldGltZS5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RGF0ZVRpbWVGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfZnVsbERheUlucHV0Q3RybD86IEZvcm1Db250cm9sO1xuICBwcml2YXRlIF9mdWxsRGF5Q29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZnVsbERheUNvbnRyb2wkID0gdGhpcy5fZnVsbERheUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9vZmZzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX3VwZGF0ZVRpbWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgbWFwKGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSkpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IChhICE9IG51bGwgJiYgYiAhPSBudWxsID8gaXNTYW1lTWludXRlKGEsIGIpIDogYSA9PT0gYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gdHJpZ2dlci9kaXNwbGF5IHZpc3VhbCB1cGRhdGVzIChzcGVjaWZpY2FsbHkgb24gdGltZURpc3RhbmNlLCBldGMuKS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSQgPSBpbnRlcnZhbCgxMCAqIDEwMDApLnBpcGUoXG4gICAgc3RhcnRXaXRoKDApLFxuICAgIG1hcCgoKSA9PiBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudmFsdWUkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVTdHJpbmckOiBPYnNlcnZhYmxlPFJlYWRhYmxlVGltZVN0cmluZz4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCB0aW1lem9uZSA9IGd1ZXNzQ3VycmVudFRpbWV6b25lKCk7XG4gICAgICBjb25zdCB0aW1lU3RyaW5nID0gdG9SZWFkYWJsZVRpbWVTdHJpbmcoeCwgdGltZXpvbmUpO1xuICAgICAgcmV0dXJuIHRpbWVTdHJpbmc7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHtcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9KTtcblxuICByZWFkb25seSB0aW1lSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucGF0dGVybigvXihub3cpJHxeKFswLTldfCgwWzAtOV0pfCgxWzAtOV0pfCgyWzAtM10pKSg6KT8oWzAtNV1bMC05XSk/KFxccyk/KFthcEFQXVtNbV0pPyhcXFxccykqJC8pXVxuICB9KTtcblxuICBwcml2YXRlIF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3N5bmNDb25maWdPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8QXJyYXlPclZhbHVlPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQ+Pj4+KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IGRhdGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRhdGVMYWJlbCA/PyAnRGF0ZSc7XG4gIH1cblxuICBnZXQgdGltZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGltZUxhYmVsID8/ICdUaW1lJztcbiAgfVxuXG4gIGdldCBhbGxEYXlMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmFsbERheUxhYmVsID8/ICdBbGwgRGF5JztcbiAgfVxuXG4gIGdldCBhdFRpbWVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmF0VGltZUxhYmVsID8/ICdBdCc7XG4gIH1cblxuICBnZXQgZGF0ZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICB9XG5cbiAgZ2V0IGRhdGVUaW1lRmllbGQoKTogRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCB0aW1lT25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lT25seTtcbiAgfVxuXG4gIGdldCBzaG93RGF0ZUlucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50aW1lT25seTtcbiAgfVxuXG4gIGdldCB2YWx1ZU1vZGUoKTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnZhbHVlTW9kZSA/PyBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFO1xuICB9XG5cbiAgZ2V0IHRpbWVNb2RlKCk6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gICAgY29uc3QgZGF0ZVZhbHVlc09ubHkgPSB0aGlzLnZhbHVlTW9kZSA9PT0gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFZX1NUUklORztcblxuICAgIGlmIChkYXRlVmFsdWVzT25seSkge1xuICAgICAgcmV0dXJuIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lTW9kZSA/PyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGhpZGVEYXRlSGludCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5oaWRlRGF0ZUhpbnQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgaGlkZURhdGVQaWNrZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuaGlkZURhdGVQaWNrZXIgPz8gZmFsc2U7XG4gIH1cblxuICByZWFkb25seSBmdWxsRGF5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZnVsbERheUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzaG93VGltZUlucHV0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZnVsbERheSQucGlwZShtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgIT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FKSk7XG5cbiAgcmVhZG9ubHkgc2hvd0FkZFRpbWUkID0gdGhpcy5zaG93VGltZUlucHV0JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gIXggJiYgdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk9QVElPTkFMKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGUkID0gdGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmRhdGVJbnB1dEN0cmwudmFsdWUpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZGF0ZVZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBtZXJnZSh0aGlzLmRhdGUkLCB0aGlzLnZhbHVlJC5waXBlKHNraXBGaXJzdE1heWJlKCkpKS5waXBlKFxuICAgIG1hcCgoeDogTWF5YmU8RGF0ZT4pID0+ICh4ID8gc3RhcnRPZkRheSh4KSA6IG51bGwpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBpc1NhbWVEYXkoYSwgYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZUlucHV0JDogT2JzZXJ2YWJsZTxSZWFkYWJsZVRpbWVTdHJpbmc+ID0gdGhpcy5fdXBkYXRlVGltZS5waXBlKFxuICAgIGRlYm91bmNlVGltZSg1KSxcbiAgICBtYXAoKCkgPT4gdGhpcy50aW1lSW5wdXRDdHJsLnZhbHVlIHx8ICcnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgcmVhZG9ubHkgc3luY0NvbmZpZ09icyQgPSB0aGlzLl9zeW5jQ29uZmlnT2JzLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBwYXJzZWRTeW5jQ29uZmlncyQ6IE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZFtdPiA9IHRoaXMuc3luY0NvbmZpZ09icyQucGlwZShcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGxldCBwYXJzZWQ6IERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXTtcblxuICAgICAgaWYgKHgpIHtcbiAgICAgICAgcGFyc2VkID0gZmlsdGVyTWF5YmVWYWx1ZXMoXG4gICAgICAgICAgYXNBcnJheSh4KS5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHkuc3luY1dpdGgpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgLi4ueVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzeW5jQ29uZmlnQmVmb3JlVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHN5bmNDb25maWdWYWx1ZU9icyh0aGlzLnBhcnNlZFN5bmNDb25maWdzJCwgJ2JlZm9yZScpO1xuICByZWFkb25seSBzeW5jQ29uZmlnQWZ0ZXJWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gc3luY0NvbmZpZ1ZhbHVlT2JzKHRoaXMucGFyc2VkU3luY0NvbmZpZ3MkLCAnYWZ0ZXInKTtcblxuICAvLyBUT0RPOiBHZXQgbWluL21heCB1c2luZyB0aGUgRGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uIHRvb1xuXG4gIHJlYWRvbmx5IGRhdGVJbnB1dE1pbiQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gdGhpcy5zeW5jQ29uZmlnQmVmb3JlVmFsdWUkO1xuICByZWFkb25seSBkYXRlSW5wdXRNYXgkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHRoaXMuc3luY0NvbmZpZ0FmdGVyVmFsdWUkO1xuXG4gIHJlYWRvbmx5IHJhd0RhdGVUaW1lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGVWYWx1ZSQsIHRoaXMudGltZUlucHV0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksIHRoaXMuZnVsbERheSRdKS5waXBlKFxuICAgIG1hcCgoW2RhdGUsIHRpbWVTdHJpbmcsIGZ1bGxEYXldKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlPjtcblxuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgaWYgKGZ1bGxEYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlJblVUQykge1xuICAgICAgICAgICAgcmVzdWx0ID0gdXRjRGF5Rm9yRGF0ZShkYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZkRheShkYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGltZVN0cmluZykge1xuICAgICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUodGltZVN0cmluZywge1xuICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICB1c2VTeXN0ZW1UaW1lem9uZTogdHJ1ZVxuICAgICAgICAgICAgfSkgPz8gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBkYXRlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8TWF5YmU8RGF0ZT4+KChhLCBiKSA9PiBhICE9IG51bGwgJiYgYiAhPSBudWxsICYmIGlzU2FtZU1pbnV0ZShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjb25maWckID0gY29tYmluZUxhdGVzdChbdGhpcy5fY29uZmlnLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIHNoYXJlUmVwbGF5KDEpKSwgdGhpcy5kYXRlSW5wdXRNaW4kLCB0aGlzLmRhdGVJbnB1dE1heCRdKS5waXBlKFxuICAgIG1hcCgoW3gsIGRhdGVJbnB1dE1pbiwgZGF0ZUlucHV0TWF4XSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPiA9IHg7XG5cbiAgICAgIGlmIChkYXRlSW5wdXRNaW4gIT0gbnVsbCB8fCBkYXRlSW5wdXRNYXggIT0gbnVsbCkge1xuICAgICAgICBjb25zdCB7IG1pbjogbGltaXRNaW4sIG1heDogbGltaXRNYXggfSA9IHg/LmxpbWl0cyA/PyB7fTtcbiAgICAgICAgY29uc3QgbWluID0gZmluZE1pbkRhdGUoW2RhdGVJbnB1dE1pbiwgbGltaXRNaW5dKTtcbiAgICAgICAgY29uc3QgbWF4ID0gZmluZE1heERhdGUoW2RhdGVJbnB1dE1heCwgbGltaXRNYXhdKTtcblxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgLi4ueCxcbiAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgIC4uLng/LmxpbWl0cyxcbiAgICAgICAgICAgIG1pbixcbiAgICAgICAgICAgIG1heFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGlja2VyRmlsdGVyJDogT2JzZXJ2YWJsZTxEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgaWYgKHgpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gZGF0ZVRpbWVNaW51dGVEZWNpc2lvbkZ1bmN0aW9uKHgpO1xuICAgICAgICByZXR1cm4gKHg6IERhdGUgfCBudWxsKSA9PiAoeCAhPSBudWxsID8gZmlsdGVyKHgpIDogdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRlZmF1bHRQaWNrZXJGaWx0ZXI6IERlY2lzaW9uRnVuY3Rpb248RGF0ZSB8IG51bGw+ID0gKCkgPT4gdHJ1ZTtcblxuICByZWFkb25seSB0aW1lT3V0cHV0JDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJhd0RhdGVUaW1lJCwgdGhpcy5fb2Zmc2V0LCB0aGlzLmNvbmZpZyRdKS5waXBlKFxuICAgIHRocm90dGxlVGltZSg0MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudFswXSA9PT0gbmV4dFswXSAmJiBuZXh0WzFdID09PSAwKSxcbiAgICB0YXAoKFssIHN0ZXBzT2Zmc2V0XSkgPT4gKHN0ZXBzT2Zmc2V0ID8gdGhpcy5fb2Zmc2V0Lm5leHQoMCkgOiAwKSksXG4gICAgbWFwKChbZGF0ZSwgc3RlcHNPZmZzZXQsIGNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSh7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZSA9IGluc3RhbmNlLmxpbWl0KGRhdGUpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lTWludXRlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG4gICAgdGhpcy5fY29uZmlnLm5leHQodGhpcy5kYXRlVGltZUZpZWxkLmdldENvbmZpZ09icz8uKCkpO1xuICAgIHRoaXMuX3N5bmNDb25maWdPYnMubmV4dCh0aGlzLmRhdGVUaW1lRmllbGQuZ2V0U3luY0ZpZWxkc09icz8uKCkpO1xuXG4gICAgY29uc3QgdmFsdWVGYWN0b3J5ID0gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUpO1xuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZU91dHB1dCQucGlwZShza2lwRmlyc3RNYXliZSgpKS5zdWJzY3JpYmUoKGRhdGVWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZhY3RvcnkoZGF0ZVZhbHVlKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZVN0cmluZyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAvLyBTa2lwIGV2ZW50cyB3aGVyZSB0aGUgdGltZUlucHV0IHZhbHVlIGlzIGNsZWFyZWQuXG4gICAgICBpZiAoIXRoaXMudGltZUlucHV0Q3RybC52YWx1ZSAmJiB4ID09PSAnMTI6MDBBTScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFRpbWUoeCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgZGlzYWJsZWQgY2hhbmdlcyBzbyB3ZSBjYW4gcHJvcG9nYXRlIHRoZW0gcHJvcGVybHkuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoKGRpc2FibGVkKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy50aW1lSW5wdXRDdHJsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0Z1bGxEYXlGaWVsZCA9IHRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5RmllbGROYW1lO1xuICAgIGxldCBmdWxsRGF5RmllbGRDdHJsOiBNYXliZTxBYnN0cmFjdENvbnRyb2w+O1xuXG4gICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5mb3JtLmdldChpc0Z1bGxEYXlGaWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKCFmdWxsRGF5RmllbGRDdHJsKSB7XG4gICAgICBjb25zdCBpc0Z1bGxEYXkgPSB0aGlzLnRpbWVNb2RlID09PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTtcbiAgICAgIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woaXNGdWxsRGF5KTtcblxuICAgICAgLy8gU2V0IHRoZSBjb250cm9sIGluIHRoZSBmb3JtIHRvbyBpZiB0aGUgbmFtZSBpcyBkZWZpbmVkLlxuICAgICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKGlzRnVsbERheUZpZWxkLCB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsKTtcbiAgICAgIH1cblxuICAgICAgZnVsbERheUZpZWxkQ3RybCA9IHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbERheUNvbnRyb2xPYnMubmV4dChmdWxsRGF5RmllbGRDdHJsKTtcblxuICAgIHN3aXRjaCAodGhpcy50aW1lTW9kZSkge1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuT1BUSU9OQUw6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTpcbiAgICAgICAgdGhpcy5yZW1vdmVUaW1lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQ6XG4gICAgICAgIHRoaXMuYWRkVGltZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Z1bGxEYXlDb250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fb2Zmc2V0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl91cGRhdGVUaW1lLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3luY0NvbmZpZ09icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgZGF0ZVBpY2tlZChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZXZlbnQudmFsdWU7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5zZXREYXRlSW5wdXRWYWx1ZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBzZXRMb2dpY2FsVGltZSh0aW1lOiBMb2dpY2FsRGF0ZVN0cmluZ0NvZGUpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZGF0ZUZyb21Mb2dpY2FsRGF0ZSh0aW1lKTtcblxuICAgIGlmIChkYXRlKSB7XG4gICAgICBjb25zdCB0aW1lU3RyaW5nID0gdG9Mb2NhbFJlYWRhYmxlVGltZVN0cmluZyhkYXRlKTtcbiAgICAgIHRoaXMuc2V0VGltZSh0aW1lU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlSW5wdXRWYWx1ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgc2V0VGltZSh0aW1lOiBSZWFkYWJsZVRpbWVTdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnB1dEN0cmwuc2V0VmFsdWUodGltZSk7XG4gICAgdGhpcy5fb2Zmc2V0Lm5leHQoMCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBrZXlkb3duT25EYXRlSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGlyZWN0aW9uID0gMDtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgZGlyZWN0aW9uID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBkaXJlY3Rpb24gPSAtMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDE7XG5cbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzY1O1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzA7XG4gICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNztcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICB0aGlzLmRhdGUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0RhdGUgPSBhZGREYXlzKGRhdGUsIG9mZnNldCAqIGRpcmVjdGlvbik7XG4gICAgICAgIHRoaXMuc2V0RGF0ZUlucHV0VmFsdWUobmV3RGF0ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBrZXlkb3duT25UaW1lSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGlyZWN0aW9uID0gMDtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgZGlyZWN0aW9uID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBkaXJlY3Rpb24gPSAtMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDE7XG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSAzMDA7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDYwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgdGhpcy5fb2Zmc2V0Lm5leHQodGhpcy5fb2Zmc2V0LnZhbHVlICsgb2Zmc2V0ICogZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVGltZSgpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBmb2N1c091dFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBhZGRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RnVsbERheShmYWxzZSk7XG4gIH1cblxuICByZW1vdmVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RnVsbERheSh0cnVlKTtcbiAgfVxuXG4gIHNldEZ1bGxEYXkoZnVsbERheTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZnVsbERheUNvbnRyb2wkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB4LnNldFZhbHVlKGZ1bGxEYXkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLWZpZWxkXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0LnhzPVwiY29sdW1uIHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtZXZlbmx5IHN0cmV0Y2hcIj5cbiAgPCEtLSBEYXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwiZGF0ZU9ubHkgPyAnMTAwJyA6ICc1MCdcIiAqbmdJZj1cInNob3dEYXRlSW5wdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEFkZGl0aW9uYWwgc3BhY2luZyAtLT5cbiAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXIgKm5nSWY9XCIhZGF0ZU9ubHlcIj48L2RieC1idXR0b24tc3BhY2VyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dBZGRUaW1lJCB8IGFzeW5jXCIgY2xhc3M9XCJhZGQtdGltZS1idXR0b24td3JhcHBlclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiZGJ4LWJ1dHRvbi1zcGFjZXIgYWRkLXRpbWUtYnV0dG9uXCIgbmdDbGFzcy5sdC1zbT1cImFkZC10aW1lLWJ1dHRvbi1mdWxsXCIgKGNsaWNrKT1cImFkZFRpbWUoKVwiPlxuICAgICAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICAgICAgICBBZGQgVGltZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWhpZGVEYXRlSGludFwiIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdyBkYngtZGF0ZXRpbWUtaGludC1yb3dcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWhpbnRcIiBbbmdTd2l0Y2hdPVwiZnVsbERheSQgfCBhc3luY1wiPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYWxsRGF5TGFiZWwgfX08L2I+XG4gICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdmdWxsRGF0ZScgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGVEaXN0YW5jZSB9fSlcbiAgICAgIDwvc21hbGw+XG4gICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWx1ZSQgfCBhc3luY1wiPlxuICAgICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYXRUaW1lTGFiZWwgfX08L2I+XG4gICAgICAgICAge3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ21lZGl1bScgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IHRpbWVEaXN0YW5jZSB9fSlcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIERhdGUgSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uIGNsYXNzPVwiZGJ4LWJ1dHRvbi1zcGFjZXJcIiAqbmdJZj1cIiFoaWRlRGF0ZVBpY2tlclwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtaWNvbj5jYWxlbmRhcl90b2RheTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCIgW25nQ2xhc3NdPVwieyAnZGJ4LWRhdGV0aW1lLXJvdy1maWVsZC1mdWxsLXdpZHRoJzogaGlkZURhdGVQaWNrZXIgfVwiPlxuICAgIDxtYXQtbGFiZWw+e3sgZGF0ZUxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0ICNkYXRlSW5wdXQgbWF0SW5wdXQgW21pbl09XCJkYXRlSW5wdXRNaW4kIHwgYXN5bmNcIiBbbWF4XT1cImRhdGVJbnB1dE1heCQgfCBhc3luY1wiIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIFttYXREYXRlcGlja2VyRmlsdGVyXT1cIihwaWNrZXJGaWx0ZXIkIHwgYXN5bmMpIHx8IGRlZmF1bHRQaWNrZXJGaWx0ZXJcIiAoZGF0ZUNoYW5nZSk9XCJkYXRlUGlja2VkKCRldmVudClcIiBbdmFsdWVdPVwiZGF0ZVZhbHVlJCB8IGFzeW5jXCIgKGtleWRvd24pPVwia2V5ZG93bk9uRGF0ZUlucHV0KCRldmVudClcIiAvPlxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRpbWUgTWVudS9JbnB1dCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uIGNsYXNzPVwiZGJ4LWJ1dHRvbi1zcGFjZXJcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRpbWVtZW51XCIgYXJpYS1sYWJlbD1cIm9wZW5zIHRoZSB0aW1lIG1lbnVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG1hdC1tZW51ICN0aW1lbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGltZU1vZGUgPT09ICdvcHRpb25hbCdcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVtb3ZlVGltZSgpXCI+XG4gICAgICAgIDxzcGFuPlJlbW92ZSBUaW1lPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldExvZ2ljYWxUaW1lKCdub3cnKVwiPlxuICAgICAgPHNwYW4+Tm93PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTI6MDBBTScpXCI+XG4gICAgICA8c3Bhbj5NaWRuaWdodDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzY6MDBBTScpXCI+XG4gICAgICA8c3Bhbj42OjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc4OjAwQU0nKVwiPlxuICAgICAgPHNwYW4+ODowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTA6MDBBTScpXCI+XG4gICAgICA8c3Bhbj4xMDowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTI6MDBQTScpXCI+XG4gICAgICA8c3Bhbj5Ob29uPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMjowMFBNJylcIj5cbiAgICAgIDxzcGFuPjI6MDBQTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzU6MDBQTScpXCI+XG4gICAgICA8c3Bhbj41OjAwUE08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIj5cbiAgICA8bWF0LWxhYmVsPnt7IHRpbWVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRDdHJsXCIgKGZvY3VzKT1cImZvY3VzVGltZSgpXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0VGltZSgpXCIgKGtleWRvd24pPVwia2V5ZG93bk9uVGltZUlucHV0KCRldmVudClcIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
439
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUNuTSxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQWMseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeFksT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQVMsTUFBTSxNQUFNLENBQUM7QUFDN00sT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFB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ZGUsIE1heWJlLCBSZWFkYWJsZVRpbWVTdHJpbmcsIEFycmF5T3JWYWx1ZSwgSVNPODYwMURhdGVTdHJpbmcsIGFzQXJyYXksIGZpbHRlck1heWJlVmFsdWVzLCBkYXRlRnJvbUxvZ2ljYWxEYXRlLCBEZWNpc2lvbkZ1bmN0aW9uLCBNaWxsaXNlY29uZHMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERhdGVUaW1lTWludXRlQ29uZmlnLCBEYXRlVGltZU1pbnV0ZUluc3RhbmNlLCBmb3JtYXRUb0lTTzg2MDFEYXlTdHJpbmcsIGd1ZXNzQ3VycmVudFRpbWV6b25lLCByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUsIHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcsIHRvUmVhZGFibGVUaW1lU3RyaW5nLCB1dGNEYXlGb3JEYXRlLCBmb3JtYXRUb0lTTzg2MDFEYXRlU3RyaW5nLCB0b0pzRGF0ZSwgcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlLCBzYWZlVG9Kc0RhdGUsIGZpbmRNaW5EYXRlLCBmaW5kTWF4RGF0ZSwgZGF0ZVRpbWVNaW51dGVEZWNpc2lvbkZ1bmN0aW9uLCBpc1NhbWVEYXRlLCBpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwLCBmaXJzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIG1lcmdlLCBpbnRlcnZhbCwgb2YsIGRlbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgYWRkTWludXRlcywgaXNTYW1lRGF5LCBpc1NhbWVNaW51dGUsIHN0YXJ0T2ZEYXksIGFkZERheXMgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgc2tpcEZpcnN0TWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVEZWZhdWx0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAvKipcbiAgICogVGltZSBpcyBvcHRpb25hbC5cbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgcGVybWVuYW50bHkgb2ZmLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgZW51bSBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYSBEYXRlLlxuICAgKi9cbiAgREFURSA9IDAsXG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYW4gSVNPODYwMURhdGVTdHJpbmdcbiAgICovXG4gIERBVEVfU1RSSU5HID0gMSxcbiAgLyoqXG4gICAqIFZhbHVlIGlzIHJldHVybmVkL3BhcnNlZCBhcyBhbiBJU084NjAxRGF5U3RyaW5nLCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIERBWV9TVFJJTkcgPSAyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUpOiAoZGF0ZTogTWF5YmU8RGF0ZSB8IHN0cmluZz4pID0+IE1heWJlPERhdGU+IHtcbiAgbGV0IGZhY3Rvcnk6IChkYXRlOiBNYXliZTxEYXRlIHwgc3RyaW5nPikgPT4gTWF5YmU8RGF0ZT47XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8gcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTpcbiAgICBkZWZhdWx0OlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gdG9Kc0RhdGUoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSk6IChkYXRlOiBNYXliZTxEYXRlPikgPT4gTWF5YmU8RGF0ZSB8IHN0cmluZz4ge1xuICBsZXQgZmFjdG9yeTogKGRhdGU6IE1heWJlPERhdGU+KSA9PiBNYXliZTxEYXRlIHwgc3RyaW5nPjtcblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF0ZVN0cmluZyh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU6XG4gICAgZGVmYXVsdDpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4geDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiA9IE9taXQ8RGF0ZVRpbWVNaW51dGVDb25maWcsICdkYXRlJz47XG5cbmV4cG9ydCB0eXBlIERieERhdGVUaW1lRmllbGRTeW5jVHlwZSA9ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkIHtcbiAgLyoqXG4gICAqIEZpZWxkIGtleS9wYXRoIHRvIHN5bmMgd2l0aC9hZ2FpbnN0LlxuICAgKi9cbiAgc3luY1dpdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyB0byBzeW5jIGFnYWluc3QgdGhlIG90aGVyIGZpZWxkLlxuICAgKi9cbiAgc3luY1R5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRlIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEYXRlXG4gICAqL1xuICBkYXRlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0aW1lIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBUaW1lXG4gICAqL1xuICB0aW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBbGwgRGF5XCIuIERlZmF1bHRzIHRvIFwiQWxsIERheVwiLlxuICAgKi9cbiAgYWxsRGF5TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBdFwiLiBEZWZhdWx0cyB0byBcIkF0XCIuXG4gICAqL1xuICBhdFRpbWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUgbW9kZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gREFURVxuICAgKi9cbiAgdmFsdWVNb2RlPzogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkYXRlIGlzIGhpZGRlbiwgYW5kIGF1dG9tYXRpY2FsbHkgdXNlcyB0b2RheS9pbnB1dCBkYXRlLlxuICAgKi9cbiAgdGltZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBvcHRpb25hbGx5LlxuICAgKlxuICAgKiBUaGlzIGlzIGlnbm9yZWQgaWYgdGltZU9ubHkgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgdGltZU1vZGU/OiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIGZvcm0gY29udHJvbCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIGEgZnVsbCBkYXkuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgb25seSB1c2VkIGlmIHRpbWUgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIFdoZW4gdGltZSBpcyBvZmYsIHRoZSBmaWVsZCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGZ1bGxEYXlGaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHBhc3MgdGhlIGRhdGUgdmFsdWUgYXMgYSBVVEMgZGF0ZSwgb3IgYSBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgZnVsbERheUluVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3Qgb3QgaGlkZSB0aGUgZGF0ZSBoaW50IGluZm8gY29udGVudC5cbiAgICpcbiAgICogRmFsc2UgYnkgIGRlZmF1bHRcbiAgICovXG4gIGhpZGVEYXRlSGludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGRhdGUvY2FsZW5kYXIgcGlja2VyLlxuICAgKi9cbiAgaGlkZURhdGVQaWNrZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciByZXR1cm5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2YWJsZS5cbiAgICovXG4gIGdldENvbmZpZ09icz86ICgpID0+IE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogVXNlZCBmb3Igc3luY2luZyB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyB3aXRoIGEgRGF0ZSB2YWx1ZS5cbiAgICovXG4gIGdldFN5bmNGaWVsZHNPYnM/OiAoKSA9PiBPYnNlcnZhYmxlPEFycmF5T3JWYWx1ZTxEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZCBleHRlbmRzIFBpY2s8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZCwgJ3N5bmNUeXBlJz4ge1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8TWF5YmU8RGF0ZSB8IElTTzg2MDFEYXRlU3RyaW5nPj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jQ29uZmlnVmFsdWVPYnMocGFyc2VDb25maWdzT2JzOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4sIHR5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZSk6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+IHtcbiAgcmV0dXJuIHBhcnNlQ29uZmlnc09icy5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0geC5maW5kKCh5KSA9PiB5LnN5bmNUeXBlID09PSB0eXBlKTtcbiAgICAgIGxldCByZXN1bHQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+O1xuXG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgY29udHJvbCB9ID0gY29uZmlnO1xuICAgICAgICByZXN1bHQgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcbiAgICAgICAgICBtYXAoKHgpID0+IHNhZmVUb0pzRGF0ZSh4KSA/PyBudWxsKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuXG5jb25zdCBUSU1FX09VVFBVVF9USFJPVFRMRV9USU1FOiBNaWxsaXNlY29uZHMgPSAxMDsgLy8gMTAgbXNcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERieERhdGVUaW1lRmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2Z1bGxEYXlJbnB1dEN0cmw/OiBGb3JtQ29udHJvbDtcbiAgcHJpdmF0ZSBfZnVsbERheUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZ1bGxEYXlDb250cm9sJCA9IHRoaXMuX2Z1bGxEYXlDb250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfb2Zmc2V0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF91cGRhdGVUaW1lID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSksIG1hcChkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUpKSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiAoYSAhPSBudWxsICYmIGIgIT0gbnVsbCA/IGlzU2FtZU1pbnV0ZShhLCBiKSA6IGEgPT09IGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHRyaWdnZXIvZGlzcGxheSB2aXN1YWwgdXBkYXRlcyAoc3BlY2lmaWNhbGx5IG9uIHRpbWVEaXN0YW5jZSwgZXRjLikuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5VmFsdWUkID0gaW50ZXJ2YWwoMTAgKiAxMDAwKS5waXBlKFxuICAgIHN0YXJ0V2l0aCgwKSxcbiAgICBtYXAoKCkgPT4gbmV3IERhdGUoKS5nZXRNaW51dGVzKCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgdGFwKCgpID0+IHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnZhbHVlJCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lU3RyaW5nJDogT2JzZXJ2YWJsZTxSZWFkYWJsZVRpbWVTdHJpbmc+ID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgdGltZXpvbmUgPSBndWVzc0N1cnJlbnRUaW1lem9uZSgpO1xuICAgICAgY29uc3QgdGltZVN0cmluZyA9IHRvUmVhZGFibGVUaW1lU3RyaW5nKHgsIHRpbWV6b25lKTtcbiAgICAgIHJldHVybiB0aW1lU3RyaW5nO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZUlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbChuZXcgRGF0ZSgpLCB7XG4gICAgdmFsaWRhdG9yczogW11cbiAgfSk7XG5cbiAgcmVhZG9ubHkgdGltZUlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnBhdHRlcm4oL14obm93KSR8XihbMC05XXwoMFswLTldKXwoMVswLTldKXwoMlswLTNdKSkoOik/KFswLTVdWzAtOV0pPyhcXHMpPyhbYXBBUF1bTW1dKT8oXFxcXHMpKiQvKV1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9zeW5jQ29uZmlnT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPEFycmF5T3JWYWx1ZTxEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkPj4+Pih1bmRlZmluZWQpO1xuXG4gIGdldCBkYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kYXRlTGFiZWwgPz8gJ0RhdGUnO1xuICB9XG5cbiAgZ2V0IHRpbWVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnRpbWVMYWJlbCA/PyAnVGltZSc7XG4gIH1cblxuICBnZXQgYWxsRGF5TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hbGxEYXlMYWJlbCA/PyAnQWxsIERheSc7XG4gIH1cblxuICBnZXQgYXRUaW1lTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hdFRpbWVMYWJlbCA/PyAnQXQnO1xuICB9XG5cbiAgZ2V0IGRhdGVPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRpbWVNb2RlID09PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTtcbiAgfVxuXG4gIGdldCBkYXRlVGltZUZpZWxkKCk6IERieERhdGVUaW1lRmllbGRQcm9wcyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHM7XG4gIH1cblxuICBnZXQgdGltZU9ubHkoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVUaW1lRmllbGQudGltZU9ubHk7XG4gIH1cblxuICBnZXQgc2hvd0RhdGVJbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudGltZU9ubHk7XG4gIH1cblxuICBnZXQgdmFsdWVNb2RlKCk6IERieERhdGVUaW1lVmFsdWVNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy52YWx1ZU1vZGUgPz8gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTtcbiAgfVxuXG4gIGdldCB0aW1lTW9kZSgpOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUge1xuICAgIGNvbnN0IGRhdGVWYWx1ZXNPbmx5ID0gdGhpcy52YWx1ZU1vZGUgPT09IERieERhdGVUaW1lVmFsdWVNb2RlLkRBWV9TVFJJTkc7XG5cbiAgICBpZiAoZGF0ZVZhbHVlc09ubHkpIHtcbiAgICAgIHJldHVybiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudGltZU9ubHkgPyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQgOiB0aGlzLmRhdGVUaW1lRmllbGQudGltZU1vZGUgPz8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBoaWRlRGF0ZUhpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuaGlkZURhdGVIaW50ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhpZGVEYXRlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmhpZGVEYXRlUGlja2VyID8/IGZhbHNlO1xuICB9XG5cbiAgcmVhZG9ubHkgZnVsbERheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2hvd1RpbWVJbnB1dCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXkkLnBpcGUobWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlICE9PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSkpO1xuXG4gIHJlYWRvbmx5IHNob3dBZGRUaW1lJCA9IHRoaXMuc2hvd1RpbWVJbnB1dCQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlJCA9IHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlKSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGRhdGVWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gbWVyZ2UodGhpcy5kYXRlJCwgdGhpcy52YWx1ZSQucGlwZShza2lwRmlyc3RNYXliZSgpKSkucGlwZShcbiAgICBtYXAoKHg6IE1heWJlPERhdGU+KSA9PiAoeCA/IHN0YXJ0T2ZEYXkoeCkgOiBudWxsKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lRGF5KGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dCQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMuX3VwZGF0ZVRpbWUucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgbWFwKCgpID0+IHRoaXMudGltZUlucHV0Q3RybC52YWx1ZSB8fCAnJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IHN5bmNDb25maWdPYnMkID0gdGhpcy5fc3luY0NvbmZpZ09icy5waXBlKHN3aXRjaE1hcE1heWJlRGVmYXVsdCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcGFyc2VkU3luY0NvbmZpZ3MkOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4gPSB0aGlzLnN5bmNDb25maWdPYnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBsZXQgcGFyc2VkOiBEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW107XG5cbiAgICAgIGlmICh4KSB7XG4gICAgICAgIHBhcnNlZCA9IGZpbHRlck1heWJlVmFsdWVzKFxuICAgICAgICAgIGFzQXJyYXkoeCkubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh5LnN5bmNXaXRoKTtcblxuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgICAgIC4uLnlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZCA9IFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBzeW5jQ29uZmlnVmFsdWVPYnModGhpcy5wYXJzZWRTeW5jQ29uZmlncyQsICdiZWZvcmUnKTtcbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0FmdGVyVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHN5bmNDb25maWdWYWx1ZU9icyh0aGlzLnBhcnNlZFN5bmNDb25maWdzJCwgJ2FmdGVyJyk7XG5cbiAgLy8gVE9ETzogR2V0IG1pbi9tYXggdXNpbmcgdGhlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB0b29cblxuICByZWFkb25seSBkYXRlSW5wdXRNaW4kOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHRoaXMuc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDtcbiAgcmVhZG9ubHkgZGF0ZUlucHV0TWF4JDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSB0aGlzLnN5bmNDb25maWdBZnRlclZhbHVlJDtcblxuICByZWFkb25seSByYXdEYXRlVGltZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXRlVmFsdWUkLCB0aGlzLnRpbWVJbnB1dCQucGlwZShzdGFydFdpdGgobnVsbCkpLCB0aGlzLmZ1bGxEYXkkXSkucGlwZShcbiAgICBtYXAoKFtkYXRlLCB0aW1lU3RyaW5nLCBmdWxsRGF5XSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZT47XG5cbiAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgIGlmIChmdWxsRGF5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5SW5VVEMpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHV0Y0RheUZvckRhdGUoZGF0ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHN0YXJ0T2ZEYXkoZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgcmVhZGFibGVUaW1lU3RyaW5nVG9EYXRlKHRpbWVTdHJpbmcsIHtcbiAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgdXNlU3lzdGVtVGltZXpvbmU6IHRydWVcbiAgICAgICAgICAgIH0pID8/IGRhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGU+PigoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBpc1NhbWVNaW51dGUoYSwgYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29uZmlnJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbmZpZy5waXBlKHN3aXRjaE1hcE1heWJlRGVmYXVsdCgpLCBzaGFyZVJlcGxheSgxKSksIHRoaXMuZGF0ZUlucHV0TWluJCwgdGhpcy5kYXRlSW5wdXRNYXgkXSkucGlwZShcbiAgICBtYXAoKFt4LCBkYXRlSW5wdXRNaW4sIGRhdGVJbnB1dE1heF0pID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IE1heWJlPERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSB4O1xuXG4gICAgICBpZiAoZGF0ZUlucHV0TWluICE9IG51bGwgfHwgZGF0ZUlucHV0TWF4ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBtaW46IGxpbWl0TWluLCBtYXg6IGxpbWl0TWF4IH0gPSB4Py5saW1pdHMgPz8ge307XG4gICAgICAgIGNvbnN0IG1pbiA9IGZpbmRNaW5EYXRlKFtkYXRlSW5wdXRNaW4sIGxpbWl0TWluXSk7XG4gICAgICAgIGNvbnN0IG1heCA9IGZpbmRNYXhEYXRlKFtkYXRlSW5wdXRNYXgsIGxpbWl0TWF4XSk7XG5cbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgIC4uLngsXG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAuLi54Py5saW1pdHMsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXhcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbih4KTtcbiAgICAgICAgcmV0dXJuICh4OiBEYXRlIHwgbnVsbCkgPT4gKHggIT0gbnVsbCA/IGZpbHRlcih4KSA6IHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkZWZhdWx0UGlja2VyRmlsdGVyOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPiA9ICgpID0+IHRydWU7XG5cbiAgcmVhZG9ubHkgdGltZU91dHB1dCQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5yYXdEYXRlVGltZSQsIHRoaXMuX29mZnNldCwgdGhpcy5jb25maWckXSkucGlwZShcbiAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudFswXSA9PT0gbmV4dFswXSAmJiBuZXh0WzFdID09PSAwKSxcbiAgICB0YXAoKFssIHN0ZXBzT2Zmc2V0XSkgPT4gKHN0ZXBzT2Zmc2V0ID8gdGhpcy5fb2Zmc2V0Lm5leHQoMCkgOiAwKSksXG4gICAgbWFwKChbZGF0ZSwgc3RlcHNPZmZzZXQsIGNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSh7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZSA9IGluc3RhbmNlLmxpbWl0KGRhdGUpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcyksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KHRoaXMuZGF0ZVRpbWVGaWVsZC5nZXRDb25maWdPYnM/LigpKTtcbiAgICB0aGlzLl9zeW5jQ29uZmlnT2JzLm5leHQodGhpcy5kYXRlVGltZUZpZWxkLmdldFN5bmNGaWVsZHNPYnM/LigpKTtcblxuICAgIGNvbnN0IHZhbHVlRmFjdG9yeSA9IGRieERhdGVUaW1lT3V0cHV0VmFsdWVGYWN0b3J5KHRoaXMudmFsdWVNb2RlKTtcblxuICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGltZU91dHB1dCQucGlwZSh0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSAqIDIsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksIHNraXBGaXJzdE1heWJlKCkpO1xuICAgICAgICB9KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGVWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlRmFjdG9yeShkYXRlVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVTdHJpbmckLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgLy8gU2tpcCBldmVudHMgd2hlcmUgdGhlIHRpbWVJbnB1dCB2YWx1ZSBpcyBjbGVhcmVkLlxuICAgICAgaWYgKCF0aGlzLnRpbWVJbnB1dEN0cmwudmFsdWUgJiYgeCA9PT0gJzEyOjAwQU0nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRUaW1lKHgpO1xuICAgIH0pO1xuXG4gICAgLy8gV2F0Y2ggZm9yIGRpc2FibGVkIGNoYW5nZXMgc28gd2UgY2FuIHByb3BvZ2F0ZSB0aGVtIHByb3Blcmx5LlxuICAgIHRoaXMuZm9ybUNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKChkaXNhYmxlZCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuZGF0ZUlucHV0Q3RybC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy50aW1lSW5wdXRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMudGltZUlucHV0Q3RybC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaXNGdWxsRGF5RmllbGQgPSB0aGlzLmRhdGVUaW1lRmllbGQuZnVsbERheUZpZWxkTmFtZTtcbiAgICBsZXQgZnVsbERheUZpZWxkQ3RybDogTWF5YmU8QWJzdHJhY3RDb250cm9sPjtcblxuICAgIGlmIChpc0Z1bGxEYXlGaWVsZCkge1xuICAgICAgZnVsbERheUZpZWxkQ3RybCA9IHRoaXMuZm9ybS5nZXQoaXNGdWxsRGF5RmllbGQpO1xuICAgIH1cblxuICAgIGlmICghZnVsbERheUZpZWxkQ3RybCkge1xuICAgICAgY29uc3QgaXNGdWxsRGF5ID0gdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gICAgICB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKGlzRnVsbERheSk7XG5cbiAgICAgIC8vIFNldCB0aGUgY29udHJvbCBpbiB0aGUgZm9ybSB0b28gaWYgdGhlIG5hbWUgaXMgZGVmaW5lZC5cbiAgICAgIGlmIChpc0Z1bGxEYXlGaWVsZCkge1xuICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbChpc0Z1bGxEYXlGaWVsZCwgdGhpcy5fZnVsbERheUlucHV0Q3RybCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bGxEYXlGaWVsZEN0cmwgPSB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsO1xuICAgIH1cblxuICAgIHRoaXMuX2Z1bGxEYXlDb250cm9sT2JzLm5leHQoZnVsbERheUZpZWxkQ3RybCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMudGltZU1vZGUpIHtcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk9QVElPTkFMOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU6XG4gICAgICAgIHRoaXMucmVtb3ZlVGltZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEOlxuICAgICAgICB0aGlzLmFkZFRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX29mZnNldC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N5bmNDb25maWdPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGRhdGVQaWNrZWQoZXZlbnQ6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZUlucHV0VmFsdWUoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TG9naWNhbFRpbWUodGltZTogTG9naWNhbERhdGVTdHJpbmdDb2RlKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGVGcm9tTG9naWNhbERhdGUodGltZSk7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgdGltZVN0cmluZyA9IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcoZGF0ZSk7XG4gICAgICB0aGlzLnNldFRpbWUodGltZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0ZUlucHV0VmFsdWUoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMuZGF0ZUlucHV0Q3RybC5zZXRWYWx1ZShkYXRlKTtcbiAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgfVxuXG4gIHNldFRpbWUodGltZTogUmVhZGFibGVUaW1lU3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW5wdXRDdHJsLnNldFZhbHVlKHRpbWUpO1xuICAgIHRoaXMuX29mZnNldC5uZXh0KDApO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAga2V5ZG93bk9uRGF0ZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDM2NTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDc7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgdGhpcy5kYXRlJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gYWRkRGF5cyhkYXRlLCBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLnNldERhdGVJbnB1dFZhbHVlKG5ld0RhdGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAga2V5ZG93bk9uVGltZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzAwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA2MDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA1O1xuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHRoaXMuX29mZnNldC5uZXh0KHRoaXMuX29mZnNldC52YWx1ZSArIG9mZnNldCAqIGRpcmVjdGlvbik7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1RpbWUoKTogdm9pZCB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgZm9jdXNPdXRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgYWRkVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkoZmFsc2UpO1xuICB9XG5cbiAgcmVtb3ZlVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkodHJ1ZSk7XG4gIH1cblxuICBzZXRGdWxsRGF5KGZ1bGxEYXk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgeC5zZXRWYWx1ZShmdWxsRGF5KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRieC1kYXRldGltZS1maWVsZFwiIGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dC54cz1cImNvbHVtbiB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWV2ZW5seSBzdHJldGNoXCI+XG4gIDwhLS0gRGF0ZSAtLT5cbiAgPGRpdiBjbGFzcz1cImRieC1kYXRldGltZS1yb3dcIiBmeEZsZXgubHQtc209XCIxMDBcIiBbZnhGbGV4XT1cImRhdGVPbmx5ID8gJzEwMCcgOiAnNTAnXCIgKm5nSWY9XCJzaG93RGF0ZUlucHV0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBBZGRpdGlvbmFsIHNwYWNpbmcgLS0+XG4gICAgPGRieC1idXR0b24tc3BhY2VyICpuZ0lmPVwiIWRhdGVPbmx5XCI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgPC9kaXY+XG4gIDwhLS0gVGltZSAtLT5cbiAgPGRpdiBjbGFzcz1cImRieC1kYXRldGltZS1yb3dcIiBmeEZsZXgubHQtc209XCIxMDBcIiBbZnhGbGV4XT1cInNob3dEYXRlSW5wdXQgPyAnNTAnIDogJzEwMCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RpbWVJbnB1dCQgfCBhc3luY1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpbWVNZW51QW5kSW5wdXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93QWRkVGltZSQgfCBhc3luY1wiIGNsYXNzPVwiYWRkLXRpbWUtYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyIGFkZC10aW1lLWJ1dHRvblwiIG5nQ2xhc3MubHQtc209XCJhZGQtdGltZS1idXR0b24tZnVsbFwiIChjbGljayk9XCJhZGRUaW1lKClcIj5cbiAgICAgICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgICAgICAgQWRkIFRpbWVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlRGF0ZUhpbnRcIiBjbGFzcz1cImRieC1kYXRldGltZS1yb3cgZGJ4LWRhdGV0aW1lLWhpbnQtcm93XCIgZnhGbGV4PVwiMTAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImRieC1oaW50XCIgW25nU3dpdGNoXT1cImZ1bGxEYXkkIHwgYXN5bmNcIj5cbiAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICA8YiBjbGFzcz1cImRieC1va1wiPnt7IGFsbERheUxhYmVsIH19PC9iPlxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlOiAnZnVsbERhdGUnIH19ICh7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlRGlzdGFuY2UgfX0pXG4gICAgICA8L3NtYWxsPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWUkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8YiBjbGFzcz1cImRieC1va1wiPnt7IGF0VGltZUxhYmVsIH19PC9iPlxuICAgICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdtZWRpdW0nIH19ICh7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCB0aW1lRGlzdGFuY2UgfX0pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEYXRlIElucHV0IFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNkYXRlSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyXCIgKm5nSWY9XCIhaGlkZURhdGVQaWNrZXJcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LWljb24+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdy1maWVsZFwiIFtuZ0NsYXNzXT1cInsgJ2RieC1kYXRldGltZS1yb3ctZmllbGQtZnVsbC13aWR0aCc6IGhpZGVEYXRlUGlja2VyIH1cIj5cbiAgICA8bWF0LWxhYmVsPnt7IGRhdGVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjZGF0ZUlucHV0IG1hdElucHV0IFttaW5dPVwiZGF0ZUlucHV0TWluJCB8IGFzeW5jXCIgW21heF09XCJkYXRlSW5wdXRNYXgkIHwgYXN5bmNcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCIocGlja2VyRmlsdGVyJCB8IGFzeW5jKSB8fCBkZWZhdWx0UGlja2VyRmlsdGVyXCIgKGRhdGVDaGFuZ2UpPVwiZGF0ZVBpY2tlZCgkZXZlbnQpXCIgW3ZhbHVlXT1cImRhdGVWYWx1ZSQgfCBhc3luY1wiIChrZXlkb3duKT1cImtleWRvd25PbkRhdGVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUaW1lIE1lbnUvSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3RpbWVNZW51QW5kSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0aW1lbWVudVwiIGFyaWEtbGFiZWw9XCJvcGVucyB0aGUgdGltZSBtZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjdGltZW1lbnU9XCJtYXRNZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVNb2RlID09PSAnb3B0aW9uYWwnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlbW92ZVRpbWUoKVwiPlxuICAgICAgICA8c3Bhbj5SZW1vdmUgVGltZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRMb2dpY2FsVGltZSgnbm93JylcIj5cbiAgICAgIDxzcGFuPk5vdzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEyOjAwQU0nKVwiPlxuICAgICAgPHNwYW4+TWlkbmlnaHQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc2OjAwQU0nKVwiPlxuICAgICAgPHNwYW4+NjowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnODowMEFNJylcIj5cbiAgICAgIDxzcGFuPjg6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEwOjAwQU0nKVwiPlxuICAgICAgPHNwYW4+MTA6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEyOjAwUE0nKVwiPlxuICAgICAgPHNwYW4+Tm9vbjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzI6MDBQTScpXCI+XG4gICAgICA8c3Bhbj4yOjAwUE08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc1OjAwUE0nKVwiPlxuICAgICAgPHNwYW4+NTowMFBNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L21hdC1tZW51PlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCI+XG4gICAgPG1hdC1sYWJlbD57eyB0aW1lTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGltZUlucHV0Q3RybFwiIChmb2N1cyk9XCJmb2N1c1RpbWUoKVwiIChmb2N1c291dCk9XCJmb2N1c091dFRpbWUoKVwiIChrZXlkb3duKT1cImtleWRvd25PblRpbWVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -44,21 +44,24 @@ export function dateTimeField(config = {}) {
44
44
  });
45
45
  }
46
46
  export function dateRangeField(config = {}) {
47
- const { start, end } = config;
47
+ const { required: inputRequired, start, end } = config;
48
+ const required = inputRequired ?? start?.required ?? false;
48
49
  const startFieldKey = start?.key ?? 'start';
49
50
  const endFieldKey = end?.key ?? 'end';
50
51
  const startField = dateTimeField({
51
52
  dateLabel: 'Start',
53
+ ...start,
52
54
  timeMode: DbxDateTimeFieldTimeMode.NONE,
53
55
  getSyncFieldsObs: () => of([{ syncWith: endFieldKey, syncType: 'after' }]),
54
- ...start,
56
+ required,
55
57
  key: startFieldKey
56
58
  });
57
59
  const endField = dateTimeField({
58
60
  dateLabel: 'End',
61
+ ...end,
59
62
  timeMode: DbxDateTimeFieldTimeMode.NONE,
60
63
  getSyncFieldsObs: () => of([{ syncWith: startFieldKey, syncType: 'before' }]),
61
- ...end,
64
+ required,
62
65
  key: endFieldKey
63
66
  });
64
67
  return {
@@ -66,4 +69,32 @@ export function dateRangeField(config = {}) {
66
69
  fieldGroup: [flexLayoutWrapper([startField, endField], { size: 1, relative: true })]
67
70
  };
68
71
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQStCLE1BQU0sNEJBQTRCLENBQUM7QUFDMUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3hFLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFrRCxHQUFHLEVBQUUsQ0FDcEcsRUFBRSxDQUFDO0lBQ0Qsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixpQkFBaUIsRUFBRSxJQUFJO0NBQ3hCLENBQUMsQ0FBQztBQUVMOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUFtQyxFQUFFO0lBQ2pFLE9BQU8sYUFBYSxDQUFDO1FBQ25CLEdBQUcsTUFBTTtRQUNULFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRO1FBQzNDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBdUMsRUFBRTtJQUNyRSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFNVEsTUFBTSxXQUFXLEdBQTZDLFdBQVcsQ0FBQztRQUN4RSxHQUFHO1FBQ0gsSUFBSSxFQUFFLFVBQVU7UUFDaEIsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsU0FBUztZQUNULFNBQVM7WUFDVCxXQUFXO1lBQ1gsV0FBVztZQUNYLFNBQVM7WUFDVCxRQUFRO1lBQ1IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ2pFLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osY0FBYztZQUNkLFlBQVk7WUFDWixZQUFZO1lBQ1osZ0JBQWdCO1NBQ2pCLENBQUM7S0FDSCxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsV0FBVyxFQUFFLDJFQUEyRTtLQUN6RixDQUFDLENBQUM7QUFDTCxDQUFDO0FBT0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFtQyxFQUFFO0lBQ2xFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTlCLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDO0lBRXRDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMvQixTQUFTLEVBQUUsT0FBTztRQUNsQixRQUFRLEVBQUUsd0JBQXdCLENBQUMsSUFBSTtRQUN2QyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUUsR0FBRyxLQUFLO1FBQ1IsR0FBRyxFQUFFLGFBQWE7S0FDbkIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQzdCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJO1FBQ3ZDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RSxHQUFHLEdBQUc7UUFDTixHQUFHLEVBQUUsV0FBVztLQUNqQixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsR0FBRyxFQUFFLFNBQVM7UUFDZCxVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FDckYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IGZsZXhMYXlvdXRXcmFwcGVyLCBzdHlsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi93cmFwcGVyL3dyYXBwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIERieERhdGVUaW1lRmllbGRQcm9wcywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge31cbmV4cG9ydCB0eXBlIFRpbWVGaWVsZENvbmZpZyA9IE9taXQ8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3Nob3dEYXRlJz47XG5cbmV4cG9ydCBjb25zdCBUQUtFX05FWFRfVVBDT01JTkdfVElNRV9DT05GSUdfT0JTOiAoKSA9PiBPYnNlcnZhYmxlPERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSAoKSA9PlxuICBvZih7XG4gICAgdGFrZU5leHRVcGNvbWluZ1RpbWU6IHRydWUsXG4gICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgfSk7XG5cbi8qKlxuICogU2FtZSBhcyBEYXRlVGltZSBmaWVsZCBidXQgd2l0aCB0aGUgRGF0ZSBpbnB1dCBoaWRkZW4gYnkgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPbmx5RmllbGQoY29uZmlnOiBQYXJ0aWFsPFRpbWVGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIGRhdGVUaW1lRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgIHRpbWVPbmx5OiB0cnVlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVGaWVsZChjb25maWc6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7fSkge1xuICBjb25zdCB7IGtleSA9ICdkYXRlJywgZGF0ZUxhYmVsLCB0aW1lTGFiZWwsIGFsbERheUxhYmVsLCBhdFRpbWVMYWJlbCwgdGltZU1vZGUgPSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBmdWxsRGF5RmllbGROYW1lLCBnZXRDb25maWdPYnMsIGdldFN5bmNGaWVsZHNPYnMsIGhpZGVEYXRlUGlja2VyLCBoaWRlRGF0ZUhpbnQsIHRpbWVPbmx5ID0gZmFsc2UsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG5cbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdkYXRldGltZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgYXBwZWFyYW5jZTogJ3N0YW5kYXJkJyxcbiAgICAgIGRhdGVMYWJlbCxcbiAgICAgIHRpbWVMYWJlbCxcbiAgICAgIGFsbERheUxhYmVsLFxuICAgICAgYXRUaW1lTGFiZWwsXG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICB0aW1lT25seSxcbiAgICAgIHRpbWVNb2RlOiB0aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRpbWVNb2RlLFxuICAgICAgZnVsbERheUZpZWxkTmFtZSxcbiAgICAgIGZ1bGxEYXlJblVUQyxcbiAgICAgIGhpZGVEYXRlUGlja2VyLFxuICAgICAgaGlkZURhdGVIaW50LFxuICAgICAgZ2V0Q29uZmlnT2JzLFxuICAgICAgZ2V0U3luY0ZpZWxkc09ic1xuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdHlsZVdyYXBwZXIoZmllbGRDb25maWcsIHtcbiAgICBjbGFzc0dldHRlcjogJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtbWF0LWZvcm0tZGF0ZS10aW1lLWZpZWxkLXdyYXBwZXInXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyB7XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZUZpZWxkKGNvbmZpZzogRGF0ZURhdGVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGRLZXkgPSBzdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEZpZWxkS2V5ID0gZW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ1N0YXJ0JyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IGVuZEZpZWxkS2V5LCBzeW5jVHlwZTogJ2FmdGVyJyB9XSksXG4gICAgLi4uc3RhcnQsXG4gICAga2V5OiBzdGFydEZpZWxkS2V5XG4gIH0pO1xuXG4gIGNvbnN0IGVuZEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnRW5kJyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IHN0YXJ0RmllbGRLZXksIHN5bmNUeXBlOiAnYmVmb3JlJyB9XSksXG4gICAgLi4uZW5kLFxuICAgIGtleTogZW5kRmllbGRLZXlcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IHVuZGVmaW5lZCxcbiAgICBmaWVsZEdyb3VwOiBbZmxleExheW91dFdyYXBwZXIoW3N0YXJ0RmllbGQsIGVuZEZpZWxkXSwgeyBzaXplOiAxLCByZWxhdGl2ZTogdHJ1ZSB9KV1cbiAgfTtcbn1cbiJdfQ==
72
+ export function dateTimeRangeField(inputConfig = {}) {
73
+ const { required = false, start: inputStart, end: inputEnd } = inputConfig;
74
+ function dateTimeRangeFieldConfig(config) {
75
+ return {
76
+ ...config,
77
+ required,
78
+ timeOnly: true,
79
+ hideDateHint: true
80
+ };
81
+ }
82
+ const startKey = inputStart?.key ?? 'start';
83
+ const endKey = inputEnd?.key ?? 'end';
84
+ const start = {
85
+ label: 'Start Time',
86
+ ...dateTimeRangeFieldConfig(inputStart),
87
+ key: startKey
88
+ };
89
+ const end = {
90
+ label: 'End Time',
91
+ ...dateTimeRangeFieldConfig(inputEnd),
92
+ key: endKey
93
+ };
94
+ const config = {
95
+ start,
96
+ end
97
+ };
98
+ return dateRangeField(config);
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQStCLE1BQU0sNEJBQTRCLENBQUM7QUFDMUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTXhFLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFrRCxHQUFHLEVBQUUsQ0FDcEcsRUFBRSxDQUFDO0lBQ0Qsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixpQkFBaUIsRUFBRSxJQUFJO0NBQ3hCLENBQUMsQ0FBQztBQUVMOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUFtQyxFQUFFO0lBQ2pFLE9BQU8sYUFBYSxDQUFDO1FBQ25CLEdBQUcsTUFBTTtRQUNULFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRO1FBQzNDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBdUMsRUFBRTtJQUNyRSxNQUFNLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyxLQUFL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QUUsWUFBWTtRQUNuQixHQUFHLHdCQUF3QixDQUFDLFVBQVUsQ0FBQztRQUN2QyxHQUFHLEVBQUUsUUFBUTtLQUNkLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBaUM7UUFDeEMsS0FBSyxFQUFFLFVBQVU7UUFDakIsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7UUFDckMsR0FBRyxFQUFFLE1BQU07S0FDWixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUc7UUFDYixLQUFLO1FBQ0wsR0FBRztLQUNKLENBQUM7SUFFRixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IERieERhdGVUaW1lRmllbGRQcm9wcywgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLCBEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmbGV4TGF5b3V0V3JhcHBlciwgc3R5bGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7fVxuZXhwb3J0IHR5cGUgVGltZUZpZWxkQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnc2hvd0RhdGUnPjtcblxuZXhwb3J0IGNvbnN0IFRBS0VfTkVYVF9VUENPTUlOR19USU1FX0NPTkZJR19PQlM6ICgpID0+IE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPiA9ICgpID0+XG4gIG9mKHtcbiAgICB0YWtlTmV4dFVwY29taW5nVGltZTogdHJ1ZSxcbiAgICByb3VuZERvd25Ub01pbnV0ZTogdHJ1ZVxuICB9KTtcblxuLyoqXG4gKiBTYW1lIGFzIERhdGVUaW1lIGZpZWxkIGJ1dCB3aXRoIHRoZSBEYXRlIGlucHV0IGhpZGRlbiBieSBkZWZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZU9ubHlGaWVsZChjb25maWc6IFBhcnRpYWw8VGltZUZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICByZXR1cm4gZGF0ZVRpbWVGaWVsZCh7XG4gICAgLi4uY29uZmlnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsXG4gICAgdGltZU9ubHk6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZUZpZWxkKGNvbmZpZzogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGUnLCBkYXRlTGFiZWwsIHRpbWVMYWJlbCwgYWxsRGF5TGFiZWwsIGF0VGltZUxhYmVsLCB0aW1lTW9kZSA9IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCwgdmFsdWVNb2RlLCBmdWxsRGF5SW5VVEMsIGZ1bGxEYXlGaWVsZE5hbWUsIGdldENvbmZpZ09icywgZ2V0U3luY0ZpZWxkc09icywgaGlkZURhdGVQaWNrZXIsIGhpZGVEYXRlSGludCwgdGltZU9ubHkgPSBmYWxzZSwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2RhdGV0aW1lJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBhcHBlYXJhbmNlOiAnc3RhbmRhcmQnLFxuICAgICAgZGF0ZUxhYmVsLFxuICAgICAgdGltZUxhYmVsLFxuICAgICAgYWxsRGF5TGFiZWwsXG4gICAgICBhdFRpbWVMYWJlbCxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHRpbWVPbmx5LFxuICAgICAgdGltZU1vZGU6IHRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGltZU1vZGUsXG4gICAgICBmdWxsRGF5RmllbGROYW1lLFxuICAgICAgZnVsbERheUluVVRDLFxuICAgICAgaGlkZURhdGVQaWNrZXIsXG4gICAgICBoaWRlRGF0ZUhpbnQsXG4gICAgICBnZXRDb25maWdPYnMsXG4gICAgICBnZXRTeW5jRmllbGRzT2JzXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0eWxlV3JhcHBlcihmaWVsZENvbmZpZywge1xuICAgIGNsYXNzR2V0dGVyOiAnZGJ4LW1hdC1mb3JtLWZpZWxkLWRpc2FibGUtdW5kZXJsaW5lIGRieC1tYXQtZm9ybS1kYXRlLXRpbWUtZmllbGQtd3JhcHBlcidcbiAgfSk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdkYXRlTGFiZWwnIHwgJ3RpbWVPbmx5JyB8ICd0aW1lTW9kZScgfCAnZ2V0U3luY0ZpZWxkc09icyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyB7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc3RhcnQ/OiBQYXJ0aWFsPERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWc+O1xuICBlbmQ/OiBQYXJ0aWFsPERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVJhbmdlRmllbGQoY29uZmlnOiBEYXRlRGF0ZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZDogaW5wdXRSZXF1aXJlZCwgc3RhcnQsIGVuZCB9ID0gY29uZmlnO1xuICBjb25zdCByZXF1aXJlZCA9IGlucHV0UmVxdWlyZWQgPz8gc3RhcnQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGRLZXkgPSBzdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEZpZWxkS2V5ID0gZW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ1N0YXJ0JyxcbiAgICAuLi5zdGFydCxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IGVuZEZpZWxkS2V5LCBzeW5jVHlwZTogJ2FmdGVyJyB9XSksXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBzdGFydEZpZWxkS2V5XG4gIH0pO1xuXG4gIGNvbnN0IGVuZEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnRW5kJyxcbiAgICAuLi5lbmQsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FLFxuICAgIGdldFN5bmNGaWVsZHNPYnM6ICgpID0+IG9mKFt7IHN5bmNXaXRoOiBzdGFydEZpZWxkS2V5LCBzeW5jVHlwZTogJ2JlZm9yZScgfV0pLFxuICAgIHJlcXVpcmVkLFxuICAgIGtleTogZW5kRmllbGRLZXlcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IHVuZGVmaW5lZCxcbiAgICBmaWVsZEdyb3VwOiBbZmxleExheW91dFdyYXBwZXIoW3N0YXJ0RmllbGQsIGVuZEZpZWxkXSwgeyBzaXplOiAxLCByZWxhdGl2ZTogdHJ1ZSB9KV1cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZyA9IE9taXQ8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZywgJ2FsbERheUxhYmVsJyB8ICdmdWxsRGF5RmllbGROYW1lJyB8ICdmdWxsRGF5SW5VVEMnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnIHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVJhbmdlRmllbGQoaW5wdXRDb25maWc6IERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZCA9IGZhbHNlLCBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCB9ID0gaW5wdXRDb25maWc7XG5cbiAgZnVuY3Rpb24gZGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnKGNvbmZpZzogTWF5YmU8UGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPj4pOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB0aW1lT25seTogdHJ1ZSxcbiAgICAgIGhpZGVEYXRlSGludDogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdGFydEtleSA9IGlucHV0U3RhcnQ/LmtleSA/PyAnc3RhcnQnO1xuICBjb25zdCBlbmRLZXkgPSBpbnB1dEVuZD8ua2V5ID8/ICdlbmQnO1xuXG4gIGNvbnN0IHN0YXJ0OiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+ID0ge1xuICAgIGxhYmVsOiAnU3RhcnQgVGltZScsXG4gICAgLi4uZGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnKGlucHV0U3RhcnQpLFxuICAgIGtleTogc3RhcnRLZXlcbiAgfTtcblxuICBjb25zdCBlbmQ6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7XG4gICAgbGFiZWw6ICdFbmQgVGltZScsXG4gICAgLi4uZGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnKGlucHV0RW5kKSxcbiAgICBrZXk6IGVuZEtleVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZyA9IHtcbiAgICBzdGFydCxcbiAgICBlbmRcbiAgfTtcblxuICByZXR1cm4gZGF0ZVJhbmdlRmllbGQoY29uZmlnKTtcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { concatArrays, transformNumberFunction } from '@dereekb/util';
1
+ import { concatArrays, transformNumberFunction, mapMaybeFunction } from '@dereekb/util';
2
2
  import { isDivisibleBy } from '../../../../validator';
3
3
  import { formlyField, propsAndConfigForFieldConfig, validatorsForFieldConfig } from '../../field';
4
4
  export function numberFieldTransformParser(config) {
@@ -8,7 +8,7 @@ export function numberFieldTransformParser(config) {
8
8
  parsers = inputParsers;
9
9
  }
10
10
  if (transform) {
11
- const transformParser = transformNumberFunction(transform);
11
+ const transformParser = mapMaybeFunction(transformNumberFunction(transform));
12
12
  parsers = concatArrays([transformParser], parsers);
13
13
  }
14
14
  return parsers;
@@ -39,4 +39,4 @@ export function numberField(config) {
39
39
  export function dollarAmountField(config) {
40
40
  return numberField({ ...config, transform: { ...config.transform, precision: 2 } });
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvbnVtYmVyL251bWJlci5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFvQyx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUE2QyxXQUFXLEVBQUUsNEJBQTRCLEVBQTBCLHdCQUF3QixFQUFxRSxNQUFNLGFBQWEsQ0FBQztBQWV4TyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBa0Y7SUFDM0gsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3BELElBQUksT0FBd0MsQ0FBQztJQUU3QyxJQUFJLFlBQVksRUFBRTtRQUNoQixPQUFPLEdBQUcsWUFBWSxDQUFDO0tBQ3hCO0lBRUQsSUFBSSxTQUFTLEVBQUU7UUFDYixNQUFNLGVBQWUsR0FBc0IsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUUsT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBeUI7SUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDbkcsTUFBTSxPQUFPLEdBQUcsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkQsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLElBQUksSUFBSSxXQUFXLEVBQUU7UUFDdkIsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUN0QztJQUVELE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUsT0FBTztRQUNiLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLElBQUk7WUFDSixHQUFHO1lBQ0gsR0FBRztZQUNILElBQUk7U0FDTCxDQUFDO1FBQ0YsR0FBRyx3QkFBd0IsQ0FBQztZQUMxQixVQUFVO1NBQ1gsQ0FBQztRQUNGLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDO0FBSUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQStCO0lBQy9ELE9BQU8sV0FBVyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29uY2F0QXJyYXlzLCBUcmFuc2Zvcm1OdW1iZXJGdW5jdGlvbkNvbmZpZ1JlZiwgdHJhbnNmb3JtTnVtYmVyRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBpc0RpdmlzaWJsZUJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdmFsaWRhdG9yJztcbmltcG9ydCB7IEF0dHJpYnV0ZXNGaWVsZENvbmZpZywgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgdmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnLCBGaWVsZENvbmZpZ1BhcnNlcnNSZWYsIEZvcm1seVZhbHVlUGFyc2VyLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcblxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGaWVsZE51bWJlckNvbmZpZyB7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBzdGVwPzogbnVtYmVyO1xuICBlbmZvcmNlU3RlcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE51bWJlckZpZWxkSW5wdXRUeXBlID0gJ251bWJlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE51bWJlckZpZWxkTnVtYmVyQ29uZmlnLCBBdHRyaWJ1dGVzRmllbGRDb25maWcsIFBhcnRpYWw8VHJhbnNmb3JtTnVtYmVyRnVuY3Rpb25Db25maWdSZWY+LCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7XG4gIGlucHV0VHlwZT86IE51bWJlckZpZWxkSW5wdXRUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyRmllbGRUcmFuc2Zvcm1QYXJzZXIoY29uZmlnOiBQYXJ0aWFsPEZpZWxkQ29uZmlnUGFyc2Vyc1JlZj4gJiBQYXJ0aWFsPFRyYW5zZm9ybU51bWJlckZ1bmN0aW9uQ29uZmlnUmVmPikge1xuICBjb25zdCB7IHBhcnNlcnM6IGlucHV0UGFyc2VycywgdHJhbnNmb3JtIH0gPSBjb25maWc7XG4gIGxldCBwYXJzZXJzOiBGb3JtbHlWYWx1ZVBhcnNlcltdIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChpbnB1dFBhcnNlcnMpIHtcbiAgICBwYXJzZXJzID0gaW5wdXRQYXJzZXJzO1xuICB9XG5cbiAgaWYgKHRyYW5zZm9ybSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybVBhcnNlcjogRm9ybWx5VmFsdWVQYXJzZXIgPSB0cmFuc2Zvcm1OdW1iZXJGdW5jdGlvbih0cmFuc2Zvcm0pO1xuICAgIHBhcnNlcnMgPSBjb25jYXRBcnJheXMoW3RyYW5zZm9ybVBhcnNlcl0sIHBhcnNlcnMpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJGaWVsZChjb25maWc6IE51bWJlckZpZWxkQ29uZmlnKTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgbWluLCBtYXgsIHN0ZXAsIGVuZm9yY2VTdGVwLCBpbnB1dFR5cGU6IHR5cGUgPSAnbnVtYmVyJywgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcbiAgY29uc3QgcGFyc2VycyA9IG51bWJlckZpZWxkVHJhbnNmb3JtUGFyc2VyKGNvbmZpZyk7XG5cbiAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXG4gIGlmIChzdGVwICYmIGVuZm9yY2VTdGVwKSB7XG4gICAgdmFsaWRhdG9ycy5wdXNoKGlzRGl2aXNpYmxlQnkoc3RlcCkpO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2lucHV0JyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICB0eXBlLFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgc3RlcFxuICAgIH0pLFxuICAgIC4uLnZhbGlkYXRvcnNGb3JGaWVsZENvbmZpZyh7XG4gICAgICB2YWxpZGF0b3JzXG4gICAgfSksXG4gICAgcGFyc2Vyc1xuICB9KTtcbn1cblxuZXhwb3J0IHR5cGUgRG9sbGFyQW1vdW50RmllbGRDb25maWcgPSBPbWl0PE51bWJlckZpZWxkQ29uZmlnLCAncm91bmRUb1N0ZXAnIHwgJ3ByZWNpc2lvbic+O1xuXG5leHBvcnQgZnVuY3Rpb24gZG9sbGFyQW1vdW50RmllbGQoY29uZmlnOiBEb2xsYXJBbW91bnRGaWVsZENvbmZpZykge1xuICByZXR1cm4gbnVtYmVyRmllbGQoeyAuLi5jb25maWcsIHRyYW5zZm9ybTogeyAuLi5jb25maWcudHJhbnNmb3JtLCBwcmVjaXNpb246IDIgfSB9KTtcbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvbnVtYmVyL251bWJlci5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFvQyx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUE2QyxXQUFXLEVBQUUsNEJBQTRCLEVBQTBCLHdCQUF3QixFQUFxRSxNQUFNLGFBQWEsQ0FBQztBQWV4TyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBa0Y7SUFDM0gsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3BELElBQUksT0FBd0MsQ0FBQztJQUU3QyxJQUFJLFlBQVksRUFBRTtRQUNoQixPQUFPLEdBQUcsWUFBWSxDQUFDO0tBQ3hCO0lBRUQsSUFBSSxTQUFTLEVBQUU7UUFDYixNQUFNLGVBQWUsR0FBc0IsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUF5QjtJQUNuRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuRyxNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuRCxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBRXJDLElBQUksSUFBSSxJQUFJLFdBQVcsRUFBRTtRQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRztRQUNILElBQUksRUFBRSxPQUFPO1FBQ2IsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsSUFBSTtZQUNKLEdBQUc7WUFDSCxHQUFHO1lBQ0gsSUFBSTtTQUNMLENBQUM7UUFDRixHQUFHLHdCQUF3QixDQUFDO1lBQzFCLFVBQVU7U0FDWCxDQUFDO1FBQ0YsT0FBTztLQUNSLENBQUMsQ0FBQztBQUNMLENBQUM7QUFJRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBK0I7SUFDL0QsT0FBTyxXQUFXLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb25jYXRBcnJheXMsIFRyYW5zZm9ybU51bWJlckZ1bmN0aW9uQ29uZmlnUmVmLCB0cmFuc2Zvcm1OdW1iZXJGdW5jdGlvbiwgbWFwTWF5YmVGdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IGlzRGl2aXNpYmxlQnkgfSBmcm9tICcuLi8uLi8uLi8uLi92YWxpZGF0b3InO1xuaW1wb3J0IHsgQXR0cmlidXRlc0ZpZWxkQ29uZmlnLCBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCB2YWxpZGF0b3JzRm9yRmllbGRDb25maWcsIEZpZWxkQ29uZmlnUGFyc2Vyc1JlZiwgRm9ybWx5VmFsdWVQYXJzZXIsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZpZWxkTnVtYmVyQ29uZmlnIHtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIGVuZm9yY2VTdGVwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTnVtYmVyRmllbGRJbnB1dFR5cGUgPSAnbnVtYmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgTnVtYmVyRmllbGROdW1iZXJDb25maWcsIEF0dHJpYnV0ZXNGaWVsZENvbmZpZywgUGFydGlhbDxUcmFuc2Zvcm1OdW1iZXJGdW5jdGlvbkNvbmZpZ1JlZj4sIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHtcbiAgaW5wdXRUeXBlPzogTnVtYmVyRmllbGRJbnB1dFR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJGaWVsZFRyYW5zZm9ybVBhcnNlcihjb25maWc6IFBhcnRpYWw8RmllbGRDb25maWdQYXJzZXJzUmVmPiAmIFBhcnRpYWw8VHJhbnNmb3JtTnVtYmVyRnVuY3Rpb25Db25maWdSZWY+KSB7XG4gIGNvbnN0IHsgcGFyc2VyczogaW5wdXRQYXJzZXJzLCB0cmFuc2Zvcm0gfSA9IGNvbmZpZztcbiAgbGV0IHBhcnNlcnM6IEZvcm1seVZhbHVlUGFyc2VyW10gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGlucHV0UGFyc2Vycykge1xuICAgIHBhcnNlcnMgPSBpbnB1dFBhcnNlcnM7XG4gIH1cblxuICBpZiAodHJhbnNmb3JtKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtUGFyc2VyOiBGb3JtbHlWYWx1ZVBhcnNlciA9IG1hcE1heWJlRnVuY3Rpb24odHJhbnNmb3JtTnVtYmVyRnVuY3Rpb24odHJhbnNmb3JtKSk7XG4gICAgcGFyc2VycyA9IGNvbmNhdEFycmF5cyhbdHJhbnNmb3JtUGFyc2VyXSwgcGFyc2Vycyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2Vycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlckZpZWxkKGNvbmZpZzogTnVtYmVyRmllbGRDb25maWcpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtaW4sIG1heCwgc3RlcCwgZW5mb3JjZVN0ZXAsIGlucHV0VHlwZTogdHlwZSA9ICdudW1iZXInLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICBjb25zdCBwYXJzZXJzID0gbnVtYmVyRmllbGRUcmFuc2Zvcm1QYXJzZXIoY29uZmlnKTtcblxuICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG5cbiAgaWYgKHN0ZXAgJiYgZW5mb3JjZVN0ZXApIHtcbiAgICB2YWxpZGF0b3JzLnB1c2goaXNEaXZpc2libGVCeShzdGVwKSk7XG4gIH1cblxuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnaW5wdXQnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIHR5cGUsXG4gICAgICBtaW4sXG4gICAgICBtYXgsXG4gICAgICBzdGVwXG4gICAgfSksXG4gICAgLi4udmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnKHtcbiAgICAgIHZhbGlkYXRvcnNcbiAgICB9KSxcbiAgICBwYXJzZXJzXG4gIH0pO1xufVxuXG5leHBvcnQgdHlwZSBEb2xsYXJBbW91bnRGaWVsZENvbmZpZyA9IE9taXQ8TnVtYmVyRmllbGRDb25maWcsICdyb3VuZFRvU3RlcCcgfCAncHJlY2lzaW9uJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2xsYXJBbW91bnRGaWVsZChjb25maWc6IERvbGxhckFtb3VudEZpZWxkQ29uZmlnKSB7XG4gIHJldHVybiBudW1iZXJGaWVsZCh7IC4uLmNvbmZpZywgdHJhbnNmb3JtOiB7IC4uLmNvbmZpZy50cmFuc2Zvcm0sIHByZWNpc2lvbjogMiB9IH0pO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { concatArrays, transformStringFunction } from '@dereekb/util';
1
+ import { concatArrays, mapMaybeFunction, transformStringFunction } from '@dereekb/util';
2
2
  import { formlyField, propsAndConfigForFieldConfig } from '../../field';
3
3
  export function textFieldTransformParser(config) {
4
4
  const { parsers: inputParsers, transform } = config;
@@ -7,7 +7,7 @@ export function textFieldTransformParser(config) {
7
7
  parsers = inputParsers;
8
8
  }
9
9
  if (transform) {
10
- const transformParser = transformStringFunction(transform);
10
+ const transformParser = mapMaybeFunction(transformStringFunction(transform));
11
11
  parsers = concatArrays([transformParser], parsers);
12
12
  }
13
13
  return parsers;
@@ -44,4 +44,4 @@ export function textAreaField(config) {
44
44
  parsers
45
45
  });
46
46
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3ZhbHVlL3RleHQvdGV4dC5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFtRSxNQUFNLGVBQWUsQ0FBQztBQUV2SSxPQUFPLEVBQTZDLFdBQVcsRUFBRSw0QkFBNEIsRUFBNkYsTUFBTSxhQUFhLENBQUM7QUFrQjlNLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFrRjtJQUN6SCxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDcEQsSUFBSSxPQUF3QyxDQUFDO0lBRTdDLElBQUksWUFBWSxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxZQUFZLENBQUM7S0FDeEI7SUFFRCxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sZUFBZSxHQUFzQix1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RSxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUF1QjtJQUMvQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM5RyxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRCxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLE9BQU87UUFDYixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixJQUFJO1lBQ0osU0FBUztZQUNULFNBQVM7WUFDVCxPQUFPO1NBQ1IsQ0FBQztRQUNGLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDO0FBTUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUEyQjtJQUN2RCxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakQsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRztRQUNILElBQUksRUFBRSxVQUFVO1FBQ2hCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLElBQUk7WUFDSixTQUFTO1lBQ1QsU0FBUztZQUNULE9BQU87U0FDUixDQUFDO1FBQ0YsT0FBTztLQUNSLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXRBcnJheXMsIHRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uLCBUcmFuc2Zvcm1TdHJpbmdGdW5jdGlvbkNvbmZpZywgVHJhbnNmb3JtU3RyaW5nRnVuY3Rpb25Db25maWdSZWYgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVzRmllbGRDb25maWcsIExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIEZvcm1seVZhbHVlUGFyc2VyLCBGaWVsZENvbmZpZ1BhcnNlcnNSZWYsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRGaWVsZExlbmd0aENvbmZpZyB7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRGaWVsZFBhdHRlcm5Db25maWcge1xuICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xufVxuXG5leHBvcnQgdHlwZSBUZXh0RmllbGRJbnB1dFR5cGUgPSAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ2VtYWlsJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0RmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIFRleHRGaWVsZFBhdHRlcm5Db25maWcsIFRleHRGaWVsZExlbmd0aENvbmZpZywgQXR0cmlidXRlc0ZpZWxkQ29uZmlnLCBQYXJ0aWFsPFRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uQ29uZmlnUmVmPiwgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge1xuICBpbnB1dFR5cGU/OiBUZXh0RmllbGRJbnB1dFR5cGU7XG4gIHRyYW5zZm9ybT86IFRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uQ29uZmlnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGV4dEZpZWxkVHJhbnNmb3JtUGFyc2VyKGNvbmZpZzogUGFydGlhbDxGaWVsZENvbmZpZ1BhcnNlcnNSZWY+ICYgUGFydGlhbDxUcmFuc2Zvcm1TdHJpbmdGdW5jdGlvbkNvbmZpZ1JlZj4pIHtcbiAgY29uc3QgeyBwYXJzZXJzOiBpbnB1dFBhcnNlcnMsIHRyYW5zZm9ybSB9ID0gY29uZmlnO1xuICBsZXQgcGFyc2VyczogRm9ybWx5VmFsdWVQYXJzZXJbXSB8IHVuZGVmaW5lZDtcblxuICBpZiAoaW5wdXRQYXJzZXJzKSB7XG4gICAgcGFyc2VycyA9IGlucHV0UGFyc2VycztcbiAgfVxuXG4gIGlmICh0cmFuc2Zvcm0pIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1QYXJzZXI6IEZvcm1seVZhbHVlUGFyc2VyID0gdHJhbnNmb3JtU3RyaW5nRnVuY3Rpb24odHJhbnNmb3JtKTtcbiAgICBwYXJzZXJzID0gY29uY2F0QXJyYXlzKFt0cmFuc2Zvcm1QYXJzZXJdLCBwYXJzZXJzKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGV4dEZpZWxkKGNvbmZpZzogVGV4dEZpZWxkQ29uZmlnKTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IHRyYW5zZm9ybSwga2V5LCBwYXR0ZXJuLCBtaW5MZW5ndGgsIG1heExlbmd0aCwgaW5wdXRUeXBlOiB0eXBlID0gJ3RleHQnLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICBjb25zdCBwYXJzZXJzID0gdGV4dEZpZWxkVHJhbnNmb3JtUGFyc2VyKGNvbmZpZyk7XG5cbiAgcmV0dXJuIGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2lucHV0JyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICB0eXBlLFxuICAgICAgbWluTGVuZ3RoLFxuICAgICAgbWF4TGVuZ3RoLFxuICAgICAgcGF0dGVyblxuICAgIH0pLFxuICAgIHBhcnNlcnNcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEFyZWFGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgVGV4dEZpZWxkUGF0dGVybkNvbmZpZywgVGV4dEZpZWxkTGVuZ3RoQ29uZmlnLCBBdHRyaWJ1dGVzRmllbGRDb25maWcsIFBhcnRpYWw8VHJhbnNmb3JtU3RyaW5nRnVuY3Rpb25Db25maWdSZWY+LCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7XG4gIHJvd3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0QXJlYUZpZWxkKGNvbmZpZzogVGV4dEFyZWFGaWVsZENvbmZpZyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXksIHJvd3MgPSAzLCBwYXR0ZXJuLCBtaW5MZW5ndGgsIG1heExlbmd0aCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcbiAgY29uc3QgcGFyc2VycyA9IHRleHRGaWVsZFRyYW5zZm9ybVBhcnNlcihjb25maWcpO1xuXG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgcm93cyxcbiAgICAgIG1pbkxlbmd0aCxcbiAgICAgIG1heExlbmd0aCxcbiAgICAgIHBhdHRlcm5cbiAgICB9KSxcbiAgICBwYXJzZXJzXG4gIH0pO1xufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3ZhbHVlL3RleHQvdGV4dC5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFtRSxNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEVBQTZDLFdBQVcsRUFBRSw0QkFBNEIsRUFBNkYsTUFBTSxhQUFhLENBQUM7QUFrQjlNLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFrRjtJQUN6SCxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDcEQsSUFBSSxPQUF3QyxDQUFDO0lBRTdDLElBQUksWUFBWSxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxZQUFZLENBQUM7S0FDeEI7SUFFRCxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sZUFBZSxHQUFzQixnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQXVCO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzlHLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpELE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUsT0FBTztRQUNiLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLElBQUk7WUFDSixTQUFTO1lBQ1QsU0FBUztZQUNULE9BQU87U0FDUixDQUFDO1FBQ0YsT0FBTztLQUNSLENBQUMsQ0FBQztBQUNMLENBQUM7QUFNRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuRixNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRCxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLFVBQVU7UUFDaEIsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsSUFBSTtZQUNKLFNBQVM7WUFDVCxTQUFTO1lBQ1QsT0FBTztTQUNSLENBQUM7UUFDRixPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmNhdEFycmF5cywgbWFwTWF5YmVGdW5jdGlvbiwgdHJhbnNmb3JtU3RyaW5nRnVuY3Rpb24sIFRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uQ29uZmlnLCBUcmFuc2Zvcm1TdHJpbmdGdW5jdGlvbkNvbmZpZ1JlZiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEF0dHJpYnV0ZXNGaWVsZENvbmZpZywgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRm9ybWx5VmFsdWVQYXJzZXIsIEZpZWxkQ29uZmlnUGFyc2Vyc1JlZiwgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9maWVsZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpZWxkTGVuZ3RoQ29uZmlnIHtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpZWxkUGF0dGVybkNvbmZpZyB7XG4gIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHA7XG59XG5cbmV4cG9ydCB0eXBlIFRleHRGaWVsZElucHV0VHlwZSA9ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnZW1haWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgVGV4dEZpZWxkUGF0dGVybkNvbmZpZywgVGV4dEZpZWxkTGVuZ3RoQ29uZmlnLCBBdHRyaWJ1dGVzRmllbGRDb25maWcsIFBhcnRpYWw8VHJhbnNmb3JtU3RyaW5nRnVuY3Rpb25Db25maWdSZWY+LCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7XG4gIGlucHV0VHlwZT86IFRleHRGaWVsZElucHV0VHlwZTtcbiAgdHJhbnNmb3JtPzogVHJhbnNmb3JtU3RyaW5nRnVuY3Rpb25Db25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0RmllbGRUcmFuc2Zvcm1QYXJzZXIoY29uZmlnOiBQYXJ0aWFsPEZpZWxkQ29uZmlnUGFyc2Vyc1JlZj4gJiBQYXJ0aWFsPFRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uQ29uZmlnUmVmPikge1xuICBjb25zdCB7IHBhcnNlcnM6IGlucHV0UGFyc2VycywgdHJhbnNmb3JtIH0gPSBjb25maWc7XG4gIGxldCBwYXJzZXJzOiBGb3JtbHlWYWx1ZVBhcnNlcltdIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChpbnB1dFBhcnNlcnMpIHtcbiAgICBwYXJzZXJzID0gaW5wdXRQYXJzZXJzO1xuICB9XG5cbiAgaWYgKHRyYW5zZm9ybSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybVBhcnNlcjogRm9ybWx5VmFsdWVQYXJzZXIgPSBtYXBNYXliZUZ1bmN0aW9uKHRyYW5zZm9ybVN0cmluZ0Z1bmN0aW9uKHRyYW5zZm9ybSkpO1xuICAgIHBhcnNlcnMgPSBjb25jYXRBcnJheXMoW3RyYW5zZm9ybVBhcnNlcl0sIHBhcnNlcnMpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0RmllbGQoY29uZmlnOiBUZXh0RmllbGRDb25maWcpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgdHJhbnNmb3JtLCBrZXksIHBhdHRlcm4sIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBpbnB1dFR5cGU6IHR5cGUgPSAndGV4dCcsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG4gIGNvbnN0IHBhcnNlcnMgPSB0ZXh0RmllbGRUcmFuc2Zvcm1QYXJzZXIoY29uZmlnKTtcblxuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnaW5wdXQnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIHR5cGUsXG4gICAgICBtaW5MZW5ndGgsXG4gICAgICBtYXhMZW5ndGgsXG4gICAgICBwYXR0ZXJuXG4gICAgfSksXG4gICAgcGFyc2Vyc1xuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0QXJlYUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBUZXh0RmllbGRQYXR0ZXJuQ29uZmlnLCBUZXh0RmllbGRMZW5ndGhDb25maWcsIEF0dHJpYnV0ZXNGaWVsZENvbmZpZywgUGFydGlhbDxUcmFuc2Zvcm1TdHJpbmdGdW5jdGlvbkNvbmZpZ1JlZj4sIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHtcbiAgcm93cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRleHRBcmVhRmllbGQoY29uZmlnOiBUZXh0QXJlYUZpZWxkQ29uZmlnKTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgcm93cyA9IDMsIHBhdHRlcm4sIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICBjb25zdCBwYXJzZXJzID0gdGV4dEZpZWxkVHJhbnNmb3JtUGFyc2VyKGNvbmZpZyk7XG5cbiAgcmV0dXJuIGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICByb3dzLFxuICAgICAgbWluTGVuZ3RoLFxuICAgICAgbWF4TGVuZ3RoLFxuICAgICAgcGF0dGVyblxuICAgIH0pLFxuICAgIHBhcnNlcnNcbiAgfSk7XG59XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  export * from './latlng.field';
2
2
  export * from './latlng.field.component';
3
+ export * from './latlng.field.marker.component';
3
4
  export * from './latlng.module';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC9sYXRsbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xhdGxuZy5maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2xhdGxuZy5maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXRsbmcubW9kdWxlJztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC9sYXRsbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGF0bG5nLmZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vbGF0bG5nLmZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xhdGxuZy5maWVsZC5tYXJrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGF0bG5nLm1vZHVsZSc7XG4iXX0=