@coreui/angular-pro 5.0.0-alpha.13 → 5.0.0-alpha.15

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 (70) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +22 -16
  2. package/esm2022/lib/alert/alert.component.mjs +30 -38
  3. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +7 -6
  4. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +4 -4
  5. package/esm2022/lib/calendar/calendar/calendar.component.mjs +4 -4
  6. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +1 -1
  7. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +4 -9
  8. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
  9. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +3 -4
  10. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -4
  11. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +7 -8
  12. package/esm2022/lib/collapse/collapse.directive.mjs +30 -40
  13. package/esm2022/lib/date-picker/date-picker.component.mjs +5 -7
  14. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +5 -7
  15. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +26 -34
  16. package/esm2022/lib/element-cover/element-cover.component.mjs +4 -4
  17. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +10 -8
  18. package/esm2022/lib/loading-button/loading-button.component.mjs +15 -21
  19. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +2 -2
  20. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +8 -7
  21. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +6 -12
  22. package/esm2022/lib/placeholder/placeholder.directive.mjs +11 -18
  23. package/esm2022/lib/shared/theme.directive.mjs +3 -2
  24. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +34 -46
  25. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
  26. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
  27. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +17 -18
  28. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +6 -11
  29. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +20 -24
  30. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +4 -6
  31. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +4 -4
  32. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +7 -12
  33. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -5
  34. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +7 -7
  35. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +12 -9
  36. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +5 -6
  37. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +9 -8
  38. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +9 -8
  39. package/esm2022/lib/time-picker/time-picker.component.mjs +5 -7
  40. package/esm2022/lib/time-picker/time-picker.module.mjs +2 -4
  41. package/esm2022/lib/toast/toast/toast.component.mjs +11 -9
  42. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +3 -4
  43. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +4 -4
  44. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
  45. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +5 -5
  46. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +4 -4
  47. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +4 -4
  48. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +4 -4
  49. package/fesm2022/coreui-angular-pro.mjs +313 -363
  50. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  51. package/lib/accordion/accordion/accordion.component.d.ts +4 -6
  52. package/lib/alert/alert.component.d.ts +8 -12
  53. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -0
  54. package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -2
  55. package/lib/collapse/collapse.directive.d.ts +13 -13
  56. package/lib/dropdown/dropdown/dropdown.component.d.ts +8 -12
  57. package/lib/form/form-check/form-check-input.directive.d.ts +4 -3
  58. package/lib/loading-button/loading-button.component.d.ts +4 -5
  59. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +3 -1
  60. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +2 -5
  61. package/lib/placeholder/placeholder.directive.d.ts +3 -7
  62. package/lib/sidebar/sidebar/sidebar.component.d.ts +13 -11
  63. package/lib/smart-pagination/smart-pagination.component.d.ts +4 -8
  64. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -0
  65. package/lib/tabs/tab-content/tab-content.component.d.ts +1 -0
  66. package/lib/tabs/tab-content-ref.directive.d.ts +4 -2
  67. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +2 -0
  68. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +2 -0
  69. package/lib/toast/toast/toast.component.d.ts +3 -2
  70. package/package.json +1 -1
@@ -1,7 +1,6 @@
1
- import { Component, Directive, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
1
+ import { NgClass } from '@angular/common';
2
+ import { booleanAttribute, Component, Directive, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
4
  export class DayPeriodElementDirective {
6
5
  constructor(elementRef) {
7
6
  this.elementRef = elementRef;
@@ -84,13 +83,14 @@ export class TimePickerRollAmPmComponent {
84
83
  }
85
84
  }
86
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerRollAmPmComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: TimePickerRollAmPmComponent, isStandalone: true, selector: "c-time-picker-roll-am-pm", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "dayPeriodElements", predicate: DayPeriodElementDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: DayPeriodElementDirective, selector: "[cDayPeriodElement]", inputs: ["cDayPeriodElement"], exportAs: ["cDayPeriodElement"] }] }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: TimePickerRollAmPmComponent, isStandalone: true, selector: "c-time-picker-roll-am-pm", inputs: { disabled: ["disabled", "disabled", booleanAttribute], elements: "elements", onClick: "onClick", selected: "selected", refresh: ["refresh", "refresh", booleanAttribute] }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "dayPeriodElements", predicate: DayPeriodElementDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@for (element of elements; track trackByElement; let i = $index) {\n <div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n >\n {{ element.label }}\n </div>\n}\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: DayPeriodElementDirective, selector: "[cDayPeriodElement]", inputs: ["cDayPeriodElement"], exportAs: ["cDayPeriodElement"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
88
87
  }
89
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerRollAmPmComponent, decorators: [{
90
89
  type: Component,
91
- args: [{ selector: 'c-time-picker-roll-am-pm', standalone: true, imports: [CommonModule, DayPeriodElementDirective], template: "<div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
90
+ args: [{ selector: 'c-time-picker-roll-am-pm', standalone: true, imports: [DayPeriodElementDirective, NgClass], template: "@for (element of elements; track trackByElement; let i = $index) {\n <div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n [attr.disabled]=\"element.disabled || null\"\n [cDayPeriodElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n >\n {{ element.label }}\n </div>\n}\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
92
91
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disabled: [{
93
- type: Input
92
+ type: Input,
93
+ args: [{ transform: booleanAttribute }]
94
94
  }], elements: [{
95
95
  type: Input
96
96
  }], onClick: [{
@@ -98,7 +98,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
98
98
  }], selected: [{
99
99
  type: Input
100
100
  }], refresh: [{
101
- type: Input
101
+ type: Input,
102
+ args: [{ transform: booleanAttribute }]
102
103
  }], selectedChange: [{
103
104
  type: Output
104
105
  }], hostClasses: [{
@@ -108,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
108
109
  type: ViewChildren,
109
110
  args: [DayPeriodElementDirective]
110
111
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcm9sbC1hbS1wbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWFtLXBtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFHTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFnQi9DLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDUyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzNCLENBQUM7OEdBSk0seUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQU9VLGlCQUFpQjtzQkFBekIsS0FBSzs7QUFVUixNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQ1MsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUd2QixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBRVgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQWlCLEVBQUUsQ0FBQztRQUszQixtQkFBYyxHQUFzQixJ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TyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFxQixFQUFFLE9BQW1CO1FBQzdELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2RCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFzQixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7OEdBaEZVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLHNWQXdCeEIseUJBQXlCLHFFQ3RFekMsb2ZBV0EsbUhEaUNZLFlBQVksMFBBZFgseUJBQXlCOzsyRkFnQnpCLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHlCQUF5QixDQUFDOytFQVV6QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBUXFCLGlCQUFpQjtzQkFBekQsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IERheVBlcmlvZCB9IGZyb20gJy4uL3RpbWUudXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXlQZXJpb2Qge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBkYXlQZXJpb2Q/OiBEYXlQZXJpb2Q7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NEYXlQZXJpb2RFbGVtZW50XScsXG4gIGV4cG9ydEFzOiAnY0RheVBlcmlvZEVsZW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERheVBlcmlvZEVsZW1lbnREaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkgeyB9XG5cbiAgQElucHV0KCkgY0RheVBlcmlvZEVsZW1lbnQhOiBJRGF5UGVyaW9kO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRpbWUtcGlja2VyLXJvbGwtYW0tcG0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXItcm9sbC1hbS1wbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIHByaXZhdGUgaW5pdCA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZWxlbWVudHM6IElEYXlQZXJpb2RbXSA9IFtdO1xuICBASW5wdXQoKSBvbkNsaWNrPzogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIHNlbGVjdGVkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KCkgcmVmcmVzaD86IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICd0aW1lLXBpY2tlci1yb2xsLWNvbCc6IHRydWUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBAVmlld0NoaWxkcmVuKERheVBlcmlvZEVsZW1lbnREaXJlY3RpdmUpIGRheVBlcmlvZEVsZW1lbnRzITogUXVlcnlMaXN0PERheVBlcmlvZEVsZW1lbnREaXJlY3RpdmU+O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRheVBlcmlvZEVsZW1lbnRzPy5jaGFuZ2VzLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLmRheVBlcmlvZEVsZW1lbnRzPy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5jRGF5UGVyaW9kRWxlbWVudD8udmFsdWUgPT09IDxzdHJpbmc+dGhpcy5zZWxlY3RlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpO1xuICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KHNlbGVjdGVkRWxlbWVudCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKChjaGFuZ2VzWydyZWZyZXNoJ10gJiYgY2hhbmdlc1sncmVmcmVzaCddLmN1cnJlbnRWYWx1ZSkgfHwgKGNoYW5nZXNbJ3NlbGVjdGVkJ10gJiYgIWNoYW5nZXNbJ3NlbGVjdGVkJ10uZmlyc3RDaGFuZ2UpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLmRheVBlcmlvZEVsZW1lbnRzPy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5jRGF5UGVyaW9kRWxlbWVudD8udmFsdWUgPT09IDxzdHJpbmc+dGhpcy5zZWxlY3RlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbml0ID0gIXNlbGVjdGVkRWxlbWVudDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KHNlbGVjdGVkRWxlbWVudD8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0VsZW1lbnQoZWxlbWVudDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50U2VsZWN0ZWQgPSBlbGVtZW50IHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpO1xuICAgICAgaWYgKGVsZW1lbnRTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiBlbGVtZW50U2VsZWN0ZWQ/Lm9mZnNldFRvcCxcbiAgICAgICAgICBiZWhhdmlvcjogdGhpcy5pbml0ID8gJ2F1dG8nIDogJ3Ntb290aCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdHJhY2tCeUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZWxlbWVudDogSURheVBlcmlvZCkge1xuICAgIHJldHVybiBlbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgaGFuZGxlRWxlbWVudENsaWNrKCRldmVudDogTW91c2VFdmVudCwgZWxlbWVudDogYW55KSB7XG4gICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZCA9IGVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoJGV2ZW50LnRhcmdldCk7XG4gICAgdGhpcy5vbkNsaWNrICYmIHRoaXMub25DbGljayhlbGVtZW50LnZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZWxlbWVudC52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVFbGVtZW50S2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGVsZW1lbnQ6IElEYXlQZXJpb2QpIHtcbiAgICBpZiAoJGV2ZW50LmNvZGUgPT09ICdTcGFjZScgfHwgJGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5oYW5kbGVFbGVtZW50Q2xpY2soPE1vdXNlRXZlbnQ+PHVua25vd24+JGV2ZW50LCBlbGVtZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKGNsaWNrKT1cImhhbmRsZUVsZW1lbnRDbGljaygkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgKGtleWRvd24pPVwiaGFuZGxlRWxlbWVudEtleURvd24oJGV2ZW50LCBlbGVtZW50KVwiXG4gICAgICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIGVsZW1lbnRzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5RWxlbWVudFwiXG4gICAgIFthdHRyLmRpc2FibGVkXT1cImVsZW1lbnQuZGlzYWJsZWQgfHwgbnVsbFwiXG4gICAgIFtjRGF5UGVyaW9kRWxlbWVudF09XCJlbGVtZW50XCJcbiAgICAgW25nQ2xhc3NdPVwieyd0aW1lLXBpY2tlci1yb2xsLWNlbGwnOiB0cnVlLCBzZWxlY3RlZDogZWxlbWVudC52YWx1ZSA9PT0gc2VsZWN0ZWQsIGRpc2FibGVkOiBlbGVtZW50LmRpc2FibGVkfVwiXG4gICAgIFt0YWJpbmRleF09XCJlbGVtZW50LmRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgcm9sZT1cImJ1dHRvblwiXG4+XG4gIHt7ZWxlbWVudC5sYWJlbH19XG48L2Rpdj5cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcm9sbC1hbS1wbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWFtLXBtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUdOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQzs7QUFnQnZCLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDUyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzNCLENBQUM7OEdBSk0seUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQU9VLGlCQUFpQjtzQkFBekIsS0FBSzs7QUFVUixNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQ1MsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUd2QixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBRW9CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDaEQsYUFBUSxHQUFpQixFQUFFLENBQUM7UUFLM0Is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SUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBcUIsRUFBRSxPQUFtQjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBc0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDOzhHQWhGVSwyQkFBMkI7a0dBQTNCLDJCQUEyQix5R0FRbEIsZ0JBQWdCLG1HQUloQixnQkFBZ0IseUtBWXRCLHlCQUF5QixxRUN2RXpDLG1nQkFZQSxvSERtQmEseUJBQXlCLGdJQWNDLE9BQU87OzJGQUVqQywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUCxDQUFDLHlCQUF5QixFQUFFLE9BQU8sQ0FBQzsrRUFVTCxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNrQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QixjQUFjO3NCQUF2QixNQUFNO2dCQUdILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQVFxQixpQkFBaUI7c0JBQXpELFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF5UGVyaW9kIH0gZnJvbSAnLi4vdGltZS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURheVBlcmlvZCB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRheVBlcmlvZD86IERheVBlcmlvZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY0RheVBlcmlvZEVsZW1lbnRdJyxcbiAgZXhwb3J0QXM6ICdjRGF5UGVyaW9kRWxlbWVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICBASW5wdXQoKSBjRGF5UGVyaW9kRWxlbWVudCE6IElEYXlQZXJpb2Q7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtdGltZS1waWNrZXItcm9sbC1hbS1wbScsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci1yb2xsLWFtLXBtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXItcm9sbC1hbS1wbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZSwgTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIHByaXZhdGUgaW5pdCA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVsZW1lbnRzOiBJRGF5UGVyaW9kW10gPSBbXTtcbiAgQElucHV0KCkgb25DbGljaz86ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBASW5wdXQoKSBzZWxlY3RlZD86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWZyZXNoPzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3RpbWUtcGlja2VyLXJvbGwtY29sJzogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgfTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGRyZW4oRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZSkgZGF5UGVyaW9kRWxlbWVudHMhOiBRdWVyeUxpc3Q8RGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZT47XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF5UGVyaW9kRWxlbWVudHM/LmNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZGF5UGVyaW9kRWxlbWVudHM/LmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNEYXlQZXJpb2RFbGVtZW50Py52YWx1ZSA9PT0gPHN0cmluZz50aGlzLnNlbGVjdGVkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNjcm9sbFRvRWxlbWVudChzZWxlY3RlZEVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJyk7XG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoKGNoYW5nZXNbJ3JlZnJlc2gnXSAmJiBjaGFuZ2VzWydyZWZyZXNoJ10uY3VycmVudFZhbHVlKSB8fCAoY2hhbmdlc1snc2VsZWN0ZWQnXSAmJiAhY2hhbmdlc1snc2VsZWN0ZWQnXS5maXJzdENoYW5nZSkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZGF5UGVyaW9kRWxlbWVudHM/LmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNEYXlQZXJpb2RFbGVtZW50Py52YWx1ZSA9PT0gPHN0cmluZz50aGlzLnNlbGVjdGVkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXQgPSAhc2VsZWN0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFRvRWxlbWVudChlbGVtZW50OiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRTZWxlY3RlZCA9IGVsZW1lbnQgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJyk7XG4gICAgICBpZiAoZWxlbWVudFNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKHtcbiAgICAgICAgICB0b3A6IGVsZW1lbnRTZWxlY3RlZD8ub2Zmc2V0VG9wLFxuICAgICAgICAgIGJlaGF2aW9yOiB0aGlzLmluaXQgPyAnYXV0bycgOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB0cmFja0J5RWxlbWVudChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBJRGF5UGVyaW9kKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBoYW5kbGVFbGVtZW50Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50OiBhbnkpIHtcbiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkID0gZWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnNjcm9sbFRvRWxlbWVudCgkZXZlbnQudGFyZ2V0KTtcbiAgICB0aGlzLm9uQ2xpY2sgJiYgdGhpcy5vbkNsaWNrKGVsZW1lbnQudmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChlbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUVsZW1lbnRLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZWxlbWVudDogSURheVBlcmlvZCkge1xuICAgIGlmICgkZXZlbnQuY29kZSA9PT0gJ1NwYWNlJyB8fCAkZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhhbmRsZUVsZW1lbnRDbGljayg8TW91c2VFdmVudD48dW5rbm93bj4kZXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGZvciAoZWxlbWVudCBvZiBlbGVtZW50czsgdHJhY2sgdHJhY2tCeUVsZW1lbnQ7IGxldCBpID0gJGluZGV4KSB7XG4gIDxkaXYgKGNsaWNrKT1cImhhbmRsZUVsZW1lbnRDbGljaygkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVFbGVtZW50S2V5RG93bigkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJlbGVtZW50LmRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgIFtjRGF5UGVyaW9kRWxlbWVudF09XCJlbGVtZW50XCJcbiAgICAgICBbbmdDbGFzc109XCJ7J3RpbWUtcGlja2VyLXJvbGwtY2VsbCc6IHRydWUsIHNlbGVjdGVkOiBlbGVtZW50LnZhbHVlID09PSBzZWxlY3RlZCwgZGlzYWJsZWQ6IGVsZW1lbnQuZGlzYWJsZWR9XCJcbiAgICAgICBbdGFiaW5kZXhdPVwiZWxlbWVudC5kaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgcm9sZT1cImJ1dHRvblwiXG4gID5cbiAgICB7eyBlbGVtZW50LmxhYmVsIH19XG4gIDwvZGl2PlxufVxuIl19
@@ -1,7 +1,6 @@
1
- import { Component, Directive, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
1
+ import { NgClass } from '@angular/common';
2
+ import { booleanAttribute, Component, Directive, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
4
  export class TimeElementDirective {
6
5
  constructor(elementRef) {
7
6
  this.elementRef = elementRef;
@@ -86,13 +85,14 @@ export class TimePickerRollColComponent {
86
85
  }
87
86
  }
88
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerRollColComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: TimePickerRollColComponent, isStandalone: true, selector: "c-time-picker-roll-col", inputs: { disabled: "disabled", elements: "elements", onClick: "onClick", selected: "selected", refresh: "refresh" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "timeElements", predicate: TimeElementDirective, descendants: true }], exportAs: ["cTimePickerRollCol"], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TimeElementDirective, selector: "[cTimeElement]", inputs: ["cTimeElement"], exportAs: ["cTimeElement"] }] }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: TimePickerRollColComponent, isStandalone: true, selector: "c-time-picker-roll-col", inputs: { disabled: ["disabled", "disabled", booleanAttribute], elements: "elements", onClick: "onClick", selected: "selected", refresh: ["refresh", "refresh", booleanAttribute] }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "timeElements", predicate: TimeElementDirective, descendants: true }], exportAs: ["cTimePickerRollCol"], usesOnChanges: true, ngImport: i0, template: "@for (element of elements; track trackByElement; let i = $index) {\n <div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n >\n {{ element.label }}\n </div>\n}\n\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: TimeElementDirective, selector: "[cTimeElement]", inputs: ["cTimeElement"], exportAs: ["cTimeElement"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
90
89
  }
91
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerRollColComponent, decorators: [{
92
91
  type: Component,
93
- args: [{ selector: 'c-time-picker-roll-col', exportAs: 'cTimePickerRollCol', standalone: true, imports: [CommonModule, TimeElementDirective], template: "<div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n *ngFor=\"let element of elements; index as i; trackBy: trackByElement\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n>\n {{element.label}}\n</div>\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
92
+ args: [{ selector: 'c-time-picker-roll-col', exportAs: 'cTimePickerRollCol', standalone: true, imports: [TimeElementDirective, NgClass], template: "@for (element of elements; track trackByElement; let i = $index) {\n <div (click)=\"handleElementClick($event, element)\"\n (keydown)=\"handleElementKeyDown($event, element)\"\n [attr.disabled]=\"element.disabled || null\"\n [cTimeElement]=\"element\"\n [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n [tabindex]=\"element.disabled ? -1 : 0\"\n role=\"button\"\n >\n {{ element.label }}\n </div>\n}\n\n", styles: [":host{display:block}:host .disabled{pointer-events:none}\n"] }]
94
93
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disabled: [{
95
- type: Input
94
+ type: Input,
95
+ args: [{ transform: booleanAttribute }]
96
96
  }], elements: [{
97
97
  type: Input
98
98
  }], onClick: [{
@@ -100,7 +100,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
100
100
  }], selected: [{
101
101
  type: Input
102
102
  }], refresh: [{
103
- type: Input
103
+ type: Input,
104
+ args: [{ transform: booleanAttribute }]
104
105
  }], selectedChange: [{
105
106
  type: Output
106
107
  }], hostClasses: [{
@@ -110,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
110
111
  type: ViewChildren,
111
112
  args: [TimeElementDirective]
112
113
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcm9sbC1jb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWNvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFHTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFlL0MsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUNTLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDM0IsQ0FBQzs4R0FKTSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQU9VLFlBQVk7c0JBQXBCLEtBQUs7O0FBV1IsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNTLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFHL0IsVUFBSyxHQUFHLElBQUksQ0FBQztRQUVKLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFpQixFQUFFLENBQUM7UUFLM0IsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVB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SSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFxQixFQUFFLE9BQW1CO1FBQzdELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2RCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFzQixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7OEdBakZVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLCtVQXdCdkIsb0JBQW9CLHVHQ3RFcEMsK2VBV0EsbUhEaUNZLFlBQVksMFBBZlgsb0JBQW9COzsyRkFpQnBCLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSx3QkFBd0IsWUFHeEIsb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQzsrRUFVcEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUdILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQVFnQixZQUFZO3NCQUEvQyxZQUFZO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgSVRpbWVWYWx1ZSB9IGZyb20gJy4uL3RpbWUudXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lUGlja2VyUm9sbENvbCB7XG4gIGVsZW1lbnRzOiBJVGltZVZhbHVlW107XG4gIG9uQ2xpY2s/OiAodmFsdWU6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZDtcbiAgc2VsZWN0ZWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY1RpbWVFbGVtZW50XScsXG4gIGV4cG9ydEFzOiAnY1RpbWVFbGVtZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lRWxlbWVudERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICBASW5wdXQoKSBjVGltZUVsZW1lbnQhOiBJVGltZVZhbHVlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRpbWUtcGlja2VyLXJvbGwtY29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXItcm9sbC1jb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjVGltZVBpY2tlclJvbGxDb2wnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUaW1lRWxlbWVudERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQgaW1wbGVtZW50cyBJVGltZVBpY2tlclJvbGxDb2wsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICAjaW5pdCA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZWxlbWVudHM6IElUaW1lVmFsdWVbXSA9IFtdO1xuICBASW5wdXQoKSBvbkNsaWNrPzogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIHNlbGVjdGVkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KCkgcmVmcmVzaD86IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICd0aW1lLXBpY2tlci1yb2xsLWNvbCc6IHRydWUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBAVmlld0NoaWxkcmVuKFRpbWVFbGVtZW50RGlyZWN0aXZlKSB0aW1lRWxlbWVudHMhOiBRdWVyeUxpc3Q8VGltZUVsZW1lbnREaXJlY3RpdmU+O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVFbGVtZW50cz8uY2hhbmdlcy5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy50aW1lRWxlbWVudHM/LmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNUaW1lRWxlbWVudD8udmFsdWUgPT09IDxudW1iZXI+dGhpcy5zZWxlY3RlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJyk7XG4gICAgICB0aGlzLnNjcm9sbFRvRWxlbWVudChzZWxlY3RlZEVsZW1lbnQpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgoY2hhbmdlc1sncmVmcmVzaCddICYmIGNoYW5nZXNbJ3JlZnJlc2gnXS5jdXJyZW50VmFsdWUpIHx8IChjaGFuZ2VzWydzZWxlY3RlZCddICYmICFjaGFuZ2VzWydzZWxlY3RlZCddLmZpcnN0Q2hhbmdlKSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy50aW1lRWxlbWVudHM/LmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNUaW1lRWxlbWVudD8udmFsdWUgPT09IDxudW1iZXI+dGhpcy5zZWxlY3RlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy4jaW5pdCA9ICFzZWxlY3RlZEVsZW1lbnQ7XG4gICAgICB0aGlzLnNjcm9sbFRvRWxlbWVudChzZWxlY3RlZEVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG9FbGVtZW50KGVsZW1lbnQ6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudFNlbGVjdGVkID0gZWxlbWVudCA/PyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSA/PyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgIGlmIChlbGVtZW50U2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgICAgIHRvcDogZWxlbWVudFNlbGVjdGVkPy5vZmZzZXRUb3AsXG4gICAgICAgICAgYmVoYXZpb3I6IHRoaXMuI2luaXQgPyAnYXV0bycgOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy4jaW5pdCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdHJhY2tCeUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZWxlbWVudDogSVRpbWVWYWx1ZSkge1xuICAgIHJldHVybiBlbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgaGFuZGxlRWxlbWVudENsaWNrKCRldmVudDogTW91c2VFdmVudCwgZWxlbWVudDogYW55KSB7XG4gICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZCA9IGVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoJGV2ZW50LnRhcmdldCk7XG4gICAgdGhpcy5vbkNsaWNrICYmIHRoaXMub25DbGljayhlbGVtZW50LnZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZWxlbWVudC52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVFbGVtZW50S2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGVsZW1lbnQ6IElUaW1lVmFsdWUpIHtcbiAgICBpZiAoJGV2ZW50LmNvZGUgPT09ICdTcGFjZScgfHwgJGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5oYW5kbGVFbGVtZW50Q2xpY2soPE1vdXNlRXZlbnQ+PHVua25vd24+JGV2ZW50LCBlbGVtZW50KTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiAoY2xpY2spPVwiaGFuZGxlRWxlbWVudENsaWNrKCRldmVudCwgZWxlbWVudClcIlxuICAgICAoa2V5ZG93bik9XCJoYW5kbGVFbGVtZW50S2V5RG93bigkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZWxlbWVudHM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlFbGVtZW50XCJcbiAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZWxlbWVudC5kaXNhYmxlZCB8fCBudWxsXCJcbiAgICAgW2NUaW1lRWxlbWVudF09XCJlbGVtZW50XCJcbiAgICAgW25nQ2xhc3NdPVwieyd0aW1lLXBpY2tlci1yb2xsLWNlbGwnOiB0cnVlLCBzZWxlY3RlZDogZWxlbWVudC52YWx1ZSA9PT0gc2VsZWN0ZWQsIGRpc2FibGVkOiBlbGVtZW50LmRpc2FibGVkfVwiXG4gICAgIFt0YWJpbmRleF09XCJlbGVtZW50LmRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgcm9sZT1cImJ1dHRvblwiXG4+XG4gIHt7ZWxlbWVudC5sYWJlbH19XG48L2Rpdj5cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcm9sbC1jb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWNvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUdOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQzs7QUFldkIsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUNTLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDM0IsQ0FBQzs4R0FKTSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQU9VLFlBQVk7c0JBQXBCLEtBQUs7O0FBV1IsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNTLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFHL0IsVUFBSyxHQUFHLElBQUksQ0FBQztRQUUyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hELGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBSzNCLG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFWbEUsQ0FBQztJQUVMLEtBQUssQ0FBUTtJQVViLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCxzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDO0lBQ0osQ0FBQztJQUlELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLEtBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekgsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLEtBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQVk7UUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sZUFBZSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDL0ksSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO29CQUNyQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFNBQVM7b0JBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVE7aUJBQ3pDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWEsRUFBRSxPQUFtQjtRQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQWtCLEVBQUUsT0FBWTtRQUNqRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBcUIsRUFBRSxPQUFtQjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBc0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDOzhHQWpGVSwwQkFBMEI7a0dBQTFCLDBCQUEwQix1R0FRakIsZ0JBQWdCLG1HQUloQixnQkFBZ0Isb0tBWXRCLG9CQUFvQix1R0N2RXBDLGdnQkFhQSxvSERpQmEsb0JBQW9CLGlIQWVDLE9BQU87OzJGQUU1QiwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0Usd0JBQXdCLFlBR3hCLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUM7K0VBVUEsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDa0MsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsY0FBYztzQkFBdkIsTUFBTTtnQkFHSCxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFRZ0IsWUFBWTtzQkFBL0MsWUFBWTt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJVGltZVZhbHVlIH0gZnJvbSAnLi4vdGltZS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVQaWNrZXJSb2xsQ29sIHtcbiAgZWxlbWVudHM6IElUaW1lVmFsdWVbXTtcbiAgb25DbGljaz86ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBzZWxlY3RlZD86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjVGltZUVsZW1lbnRdJyxcbiAgZXhwb3J0QXM6ICdjVGltZUVsZW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVFbGVtZW50RGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIEBJbnB1dCgpIGNUaW1lRWxlbWVudCE6IElUaW1lVmFsdWU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtdGltZS1waWNrZXItcm9sbC1jb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXItcm9sbC1jb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lLXBpY2tlci1yb2xsLWNvbC5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NUaW1lUGlja2VyUm9sbENvbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUaW1lRWxlbWVudERpcmVjdGl2ZSwgTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQgaW1wbGVtZW50cyBJVGltZVBpY2tlclJvbGxDb2wsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICAjaW5pdCA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVsZW1lbnRzOiBJVGltZVZhbHVlW10gPSBbXTtcbiAgQElucHV0KCkgb25DbGljaz86ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBASW5wdXQoKSBzZWxlY3RlZD86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWZyZXNoPzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3RpbWUtcGlja2VyLXJvbGwtY29sJzogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgfTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGRyZW4oVGltZUVsZW1lbnREaXJlY3RpdmUpIHRpbWVFbGVtZW50cyE6IFF1ZXJ5TGlzdDxUaW1lRWxlbWVudERpcmVjdGl2ZT47XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGltZUVsZW1lbnRzPy5jaGFuZ2VzLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnRpbWVFbGVtZW50cz8uZmluZChlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY1RpbWVFbGVtZW50Py52YWx1ZSA9PT0gPG51bWJlcj50aGlzLnNlbGVjdGVkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNjcm9sbFRvRWxlbWVudChzZWxlY3RlZEVsZW1lbnQ/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KHNlbGVjdGVkRWxlbWVudCk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKChjaGFuZ2VzWydyZWZyZXNoJ10gJiYgY2hhbmdlc1sncmVmcmVzaCddLmN1cnJlbnRWYWx1ZSkgfHwgKGNoYW5nZXNbJ3NlbGVjdGVkJ10gJiYgIWNoYW5nZXNbJ3NlbGVjdGVkJ10uZmlyc3RDaGFuZ2UpKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnRpbWVFbGVtZW50cz8uZmluZChlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY1RpbWVFbGVtZW50Py52YWx1ZSA9PT0gPG51bWJlcj50aGlzLnNlbGVjdGVkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLiNpbml0ID0gIXNlbGVjdGVkRWxlbWVudDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KHNlbGVjdGVkRWxlbWVudD8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0VsZW1lbnQoZWxlbWVudDogYW55KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50U2VsZWN0ZWQgPSBlbGVtZW50ID8/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpID8/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgaWYgKGVsZW1lbnRTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiBlbGVtZW50U2VsZWN0ZWQ/Lm9mZnNldFRvcCxcbiAgICAgICAgICBiZWhhdmlvcjogdGhpcy4jaW5pdCA/ICdhdXRvJyA6ICdzbW9vdGgnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiNpbml0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB0cmFja0J5RWxlbWVudChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBJVGltZVZhbHVlKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBoYW5kbGVFbGVtZW50Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50OiBhbnkpIHtcbiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkID0gZWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnNjcm9sbFRvRWxlbWVudCgkZXZlbnQudGFyZ2V0KTtcbiAgICB0aGlzLm9uQ2xpY2sgJiYgdGhpcy5vbkNsaWNrKGVsZW1lbnQudmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChlbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUVsZW1lbnRLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZWxlbWVudDogSVRpbWVWYWx1ZSkge1xuICAgIGlmICgkZXZlbnQuY29kZSA9PT0gJ1NwYWNlJyB8fCAkZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhhbmRsZUVsZW1lbnRDbGljayg8TW91c2VFdmVudD48dW5rbm93bj4kZXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGZvciAoZWxlbWVudCBvZiBlbGVtZW50czsgdHJhY2sgdHJhY2tCeUVsZW1lbnQ7IGxldCBpID0gJGluZGV4KSB7XG4gIDxkaXYgKGNsaWNrKT1cImhhbmRsZUVsZW1lbnRDbGljaygkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVFbGVtZW50S2V5RG93bigkZXZlbnQsIGVsZW1lbnQpXCJcbiAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJlbGVtZW50LmRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgIFtjVGltZUVsZW1lbnRdPVwiZWxlbWVudFwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd0aW1lLXBpY2tlci1yb2xsLWNlbGwnOiB0cnVlLCBzZWxlY3RlZDogZWxlbWVudC52YWx1ZSA9PT0gc2VsZWN0ZWQsIGRpc2FibGVkOiBlbGVtZW50LmRpc2FibGVkfVwiXG4gICAgICAgW3RhYmluZGV4XT1cImVsZW1lbnQuZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgIHJvbGU9XCJidXR0b25cIlxuICA+XG4gICAge3sgZWxlbWVudC5sYWJlbCB9fVxuICA8L2Rpdj5cbn1cblxuIl19
@@ -1,6 +1,6 @@
1
1
  import { booleanAttribute, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, forwardRef, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
2
2
  import { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
3
- import { NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
3
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { filter, tap } from 'rxjs/operators';
6
6
  import { convert12hTo24h, convert24hTo12h, convertTimeToDate, getAmPm, getDayPeriods, getListOfHours, getListOfMinutes, getListOfSeconds, isHour12, isValidTime } from './time.utils';
@@ -430,20 +430,18 @@ export class TimePickerComponent {
430
430
  .subscribe();
431
431
  }
432
432
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.0", type: TimePickerComponent, isStandalone: true, selector: "c-time-picker", inputs: { cleaner: ["cleaner", "cleaner", booleanAttribute], dateTimeFormatOptions: "dateTimeFormatOptions", disabled: ["disabled", "disabled", booleanAttribute], filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: ["indicator", "indicator", booleanAttribute], inputReadOnly: ["inputReadOnly", "inputReadOnly", booleanAttribute], locale: "locale", placeholder: "placeholder", seconds: ["seconds", "seconds", booleanAttribute], size: "size", time: "time", variant: "variant", valid: "valid", visible: ["visible", "visible", booleanAttribute] }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: TimePickerComponent, isStandalone: true, selector: "c-time-picker", inputs: { cleaner: ["cleaner", "cleaner", booleanAttribute], dateTimeFormatOptions: "dateTimeFormatOptions", disabled: ["disabled", "disabled", booleanAttribute], filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: ["indicator", "indicator", booleanAttribute], inputReadOnly: ["inputReadOnly", "inputReadOnly", booleanAttribute], locale: "locale", placeholder: "placeholder", seconds: ["seconds", "seconds", booleanAttribute], size: "size", time: "time", variant: "variant", valid: "valid", visible: ["visible", "visible", booleanAttribute] }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
434
434
  {
435
435
  provide: NG_VALUE_ACCESSOR,
436
436
  useExisting: forwardRef(() => TimePickerComponent),
437
437
  multi: true
438
438
  }
439
- ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }], exportAs: ["cTimePicker"], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"variant==='select'\" class=\"date-picker-timepickers\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" [ngClass]=\"timePickerClasses\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectHours\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [attr.disabled]=\"hour.disabled || null\"\n [ngValue]=\"hour.value\">{{hour.label}}</option>\n </select>\n {{' :'}}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectMinutes\">\n <option *ngFor=\"let minute of listOfMinutes ; trackBy: trackByHour\" [attr.disabled]=\"minute.disabled || null\"\n [ngValue]=\"minute.value\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectSeconds\">\n <option *ngFor=\"let second of listOfSeconds; trackBy: trackByHour\" [attr.disabled]=\"second.disabled || null\"\n [ngValue]=\"second.value\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectDayPeriod\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\"\n class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" *ngIf=\"variant==='roll'\" [autoClose]=\"'outside'\" [ngClass]=\"timePickerClasses\"\n [visible]=\"visible\">\n <div [caret]=\"false\" cDropdownToggle class=\"time-picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [attr.disabled]=\"disabled ?? dropdown.visible ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n [readonly]=\"inputReadOnly ?? null\"\n class=\"time-picker-input\"\n >\n <div *ngIf=\"indicator\" class=\"time-picker-indicator\"></div>\n <div (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"time-picker-cleaner\"\n role=\"button\"></div>\n\n </div>\n <div #dropdownMenu=\"cDropdownMenu\" cDropdownMenu class=\"time-picker-dropdown py-0\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'hour')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfHours12\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"hour\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'minute')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfMinutes\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"minute\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'second')\"\n *ngIf=\"seconds\"\n [disabled]=\"disabled\"\n [elements]=\"listOfSeconds\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"second\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n (selectedChange)=\"handleSelectDayPeriodChange($event)\" *ngIf=\"hour12\"\n [disabled]=\"disabled\"\n [elements]=\"dayPeriods\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"dayPeriod\"\n role=\"listbox\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n <div *ngIf=\"templates?.timePickerFooter\" class=\"time-picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] }); }
439
+ ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }], exportAs: ["cTimePicker"], usesOnChanges: true, ngImport: i0, template: "@if (variant === 'select') {\n <div class=\"date-picker-timepickers\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" [ngClass]=\"timePickerClasses\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectHours\">\n @for (hour of listOfHours12; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"hour.disabled || null\" [ngValue]=\"hour.value\">\n {{ hour.label }}\n </option>\n }\n </select>\n {{ ' :' }}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectMinutes\">\n @for (minute of listOfMinutes; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"minute.disabled || null\" [ngValue]=\"minute.value\">\n {{ minute.label }}\n </option>\n }\n </select>\n @if (seconds) {\n {{ ' :' }}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectSeconds\">\n @for (second of listOfSeconds; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"second.disabled || null\" [ngValue]=\"second.value\">\n {{ second.label }}\n </option>\n }\n </select>\n }\n @if (hour12) {\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectDayPeriod\">\n @for (dayPeriod of dayPeriods; track dayPeriod) {\n <option [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">\n {{ dayPeriod.label }}\n </option>\n }\n </select>\n }\n </div>\n </div>\n </div>\n}\n@if (variant === 'roll') {\n <c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" [ngClass]=\"timePickerClasses\" [visible]=\"visible\">\n <div [caret]=\"false\" cDropdownToggle class=\"time-picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [attr.disabled]=\"disabled ?? dropdown.visible ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n [readonly]=\"inputReadOnly ?? null\"\n class=\"time-picker-input\"\n >\n @if (indicator) {\n <div class=\"time-picker-indicator\"></div>\n }\n @if (cleaner && time && !disabled) {\n <div (click)=\"!disabled && handleClear($event)\" class=\"time-picker-cleaner\" role=\"button\"></div>\n }\n </div>\n <div #dropdownMenu=\"cDropdownMenu\" cDropdownMenu class=\"time-picker-dropdown py-0\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'hour')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfHours12\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"hour\"\n role=\"listbox\"\n />\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'minute')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfMinutes\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"minute\"\n role=\"listbox\"\n />\n @if (seconds) {\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'second')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfSeconds\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"second\"\n role=\"listbox\"\n />\n }\n @if (hour12) {\n <c-time-picker-roll-am-pm\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [elements]=\"dayPeriods\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"dayPeriod\"\n role=\"listbox\"\n />\n }\n </div>\n @if (templates?.timePickerFooter) {\n <div class=\"time-picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\" />\n </div>\n }\n </div>\n </c-dropdown>\n}\n", styles: [".disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] }); }
440
440
  }
441
441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TimePickerComponent, decorators: [{
442
442
  type: Component,
443
443
  args: [{ selector: 'c-time-picker', exportAs: 'cTimePicker', standalone: true, imports: [
444
444
  NgClass,
445
- NgIf,
446
- NgForOf,
447
445
  NgTemplateOutlet,
448
446
  ReactiveFormsModule,
449
447
  DropdownComponent,
@@ -461,7 +459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
461
459
  useExisting: forwardRef(() => TimePickerComponent),
462
460
  multi: true
463
461
  }
464
- ], template: "<div *ngIf=\"variant==='select'\" class=\"date-picker-timepickers\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" [ngClass]=\"timePickerClasses\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectHours\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [attr.disabled]=\"hour.disabled || null\"\n [ngValue]=\"hour.value\">{{hour.label}}</option>\n </select>\n {{' :'}}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectMinutes\">\n <option *ngFor=\"let minute of listOfMinutes ; trackBy: trackByHour\" [attr.disabled]=\"minute.disabled || null\"\n [ngValue]=\"minute.value\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectSeconds\">\n <option *ngFor=\"let second of listOfSeconds; trackBy: trackByHour\" [attr.disabled]=\"second.disabled || null\"\n [ngValue]=\"second.value\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectDayPeriod\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\"\n class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" *ngIf=\"variant==='roll'\" [autoClose]=\"'outside'\" [ngClass]=\"timePickerClasses\"\n [visible]=\"visible\">\n <div [caret]=\"false\" cDropdownToggle class=\"time-picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [attr.disabled]=\"disabled ?? dropdown.visible ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n [readonly]=\"inputReadOnly ?? null\"\n class=\"time-picker-input\"\n >\n <div *ngIf=\"indicator\" class=\"time-picker-indicator\"></div>\n <div (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"time-picker-cleaner\"\n role=\"button\"></div>\n\n </div>\n <div #dropdownMenu=\"cDropdownMenu\" cDropdownMenu class=\"time-picker-dropdown py-0\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'hour')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfHours12\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"hour\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'minute')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfMinutes\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"minute\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'second')\"\n *ngIf=\"seconds\"\n [disabled]=\"disabled\"\n [elements]=\"listOfSeconds\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"second\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n (selectedChange)=\"handleSelectDayPeriodChange($event)\" *ngIf=\"hour12\"\n [disabled]=\"disabled\"\n [elements]=\"dayPeriods\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"dayPeriod\"\n role=\"listbox\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n <div *ngIf=\"templates?.timePickerFooter\" class=\"time-picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"] }]
462
+ ], template: "@if (variant === 'select') {\n <div class=\"date-picker-timepickers\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" [ngClass]=\"timePickerClasses\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectHours\">\n @for (hour of listOfHours12; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"hour.disabled || null\" [ngValue]=\"hour.value\">\n {{ hour.label }}\n </option>\n }\n </select>\n {{ ' :' }}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectMinutes\">\n @for (minute of listOfMinutes; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"minute.disabled || null\" [ngValue]=\"minute.value\">\n {{ minute.label }}\n </option>\n }\n </select>\n @if (seconds) {\n {{ ' :' }}<select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectSeconds\">\n @for (second of listOfSeconds; track trackByHour; let i = $index) {\n <option [attr.disabled]=\"second.disabled || null\" [ngValue]=\"second.value\">\n {{ second.label }}\n </option>\n }\n </select>\n }\n @if (hour12) {\n <select (blur)=\"onBlur()\" [attr.disabled]=\"disabled || null\" [sizing]=\"size ?? ''\"\n cSelect class=\"time-picker-inline-select ms-0\" formControlName=\"selectDayPeriod\">\n @for (dayPeriod of dayPeriods; track dayPeriod) {\n <option [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">\n {{ dayPeriod.label }}\n </option>\n }\n </select>\n }\n </div>\n </div>\n </div>\n}\n@if (variant === 'roll') {\n <c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" [ngClass]=\"timePickerClasses\" [visible]=\"visible\">\n <div [caret]=\"false\" cDropdownToggle class=\"time-picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [attr.disabled]=\"disabled ?? dropdown.visible ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n [readonly]=\"inputReadOnly ?? null\"\n class=\"time-picker-input\"\n >\n @if (indicator) {\n <div class=\"time-picker-indicator\"></div>\n }\n @if (cleaner && time && !disabled) {\n <div (click)=\"!disabled && handleClear($event)\" class=\"time-picker-cleaner\" role=\"button\"></div>\n }\n </div>\n <div #dropdownMenu=\"cDropdownMenu\" cDropdownMenu class=\"time-picker-dropdown py-0\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'hour')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfHours12\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"hour\"\n role=\"listbox\"\n />\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'minute')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfMinutes\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"minute\"\n role=\"listbox\"\n />\n @if (seconds) {\n <c-time-picker-roll-col\n (selectedChange)=\"handleSelectTimeChange($event, 'second')\"\n [disabled]=\"disabled\"\n [elements]=\"listOfSeconds\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"second\"\n role=\"listbox\"\n />\n }\n @if (hour12) {\n <c-time-picker-roll-am-pm\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [elements]=\"dayPeriods\"\n [refresh]=\"dropdownMenu.visible\"\n [selected]=\"dayPeriod\"\n role=\"listbox\"\n />\n }\n </div>\n @if (templates?.timePickerFooter) {\n <div class=\"time-picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\" />\n </div>\n }\n </div>\n </c-dropdown>\n}\n", styles: [".disabled{pointer-events:none}\n"] }]
465
463
  }], ctorParameters: () => [], propDecorators: { cleaner: [{
466
464
  type: Input,
467
465
  args: [{ transform: booleanAttribute }]
@@ -512,4 +510,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
512
510
  type: ContentChildren,
513
511
  args: [TemplateIdDirective, { descendants: true }]
514
512
  }] } });
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsaUJBQWlCLEVBR2pCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLFdBQVcsRUFFWixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEcs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T0csYUFBYTtzQkFBckIsS0FBSztnQkFPa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPRSxhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU83QixNQUFNO3NCQUFkLEtBQUs7Z0JBT0csV0FBVztzQkFBbkIsS0FBSztnQkFPa0MsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPN0IsSUFBSTtzQkFBWixLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkE2QkcsT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPa0MsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsVUFBVTtzQkFBbkIsTUFBTTtnQkFFZSxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBSWdDLFdBQVc7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlsRCxnQkFBZ0I7c0JBRGYsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnQxMmhUbzI0aCxcbiAgY29udmVydDI0aFRvMTJoLFxuICBjb252ZXJ0VGltZVRvRGF0ZSxcbiAgRGF0ZVRpbWVGb3JtYXRPcHRpb25zLFxuICBEYXlQZXJpb2QsXG4gIGdldEFtUG0sXG4gIGdldERheVBlcmlvZHMsXG4gIGdldExpc3RPZkhvdXJzLFxuICBnZXRMaXN0T2ZNaW51dGVzLFxuICBnZXRMaXN0T2ZTZWNvbmRzLFxuICBpc0hvdXIxMixcbiAgaXNWYWxpZFRpbWUsXG4gIElUaW1lVmFsdWVcbn0gZnJvbSAnLi90aW1lLnV0aWxzJztcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBEcm9wZG93bk1lbnVEaXJlY3RpdmUsIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIEZvcm1TZWxlY3REaXJlY3RpdmUsIElucHV0R3JvdXBDb21wb25lbnQsIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZm9ybSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUlkRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IFRpbWVQaWNrZXJSb2xsQ29sQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWNvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWFtLXBtLmNvbXBvbmVudCc7XG5cbi8vIHRvZG86IEZvY3VzIG1hbmFnZW1lbnRcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy10aW1lLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY1RpbWVQaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ0lmLFxuICAgIE5nRm9yT2YsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duTWVudURpcmVjdGl2ZSxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGb3JtU2VsZWN0RGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgSW5wdXRHcm91cFRleHREaXJlY3RpdmUsXG4gICAgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQsXG4gICAgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcblxuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNsZWFuZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIERhdGVUaW1lIGZvcm1hdCBvcHRpb25zIGluY2x1ZGluZyB0aW1lWm9uZVxuICAgKiBAdHlwZSBEYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICogQGRlZmF1bHQge31cbiAgICogQG5vdGUgVGhlIGRhdGUgb2JqZWN0IGRvZXNuJ3Qgc3RvcmUgdGltZVpvbmUsIGl0IGtlZXBzIHRoZSBsb2NhbCB0aW1lem9uZSBvZiB0aGUgYnJvd3NlciwgcmVnYXJkbGVzcyBpZiB5b3UgcGFyc2VkIFVUQyBkYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVUaW1lRm9ybWF0T3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIGhvdXJzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlckhvdXJzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgbWludXRlcyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJNaW51dGVzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgc2Vjb25kcyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJTZWNvbmRzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgaW5kaWNhdG9yLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpbmRpY2F0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHJlYWRvbmx5IHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaW5wdXRSZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHNob3J0IGhpbnQgdmlzaWJsZSBpbiB0aW1lIGlucHV0LlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ1NlbGVjdCB0aW1lJ1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgdGltZSc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBzZWNvbmRzIHZpc2liaWxpdHkuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWNvbmRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCBvciBsYXJnZS5cbiAgICogQHR5cGUgJ3NtJyB8ICdsZycgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBzaXplPzogJ3NtJyB8ICdsZyc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdGltZS5cbiAgICogQHR5cGUgRGF0ZSB8IHN0cmluZyB8IG51bGwgfCBudW1iZXJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdGltZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkVGltZSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHRpbWUgPSBjb252ZXJ0VGltZVRvRGF0ZSh2YWx1ZSk7XG4gICAgICBpZiAoIXRpbWUpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIHRoaXMubG9jYWxlKTtcbiAgICAgIGlmICh0aGlzLl90aW1lPy5nZXRUaW1lKCkgIT09IHRpbWUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRoaXMuX3RpbWUgPSBuZXcgRGF0ZSh0aW1lLmdldFRpbWUoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRpbWUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWU7XG4gIH1cblxuICBwcml2YXRlIF90aW1lPzogRGF0ZTtcbiAgcHJpdmF0ZSBfdGltZUludGVybmFsPzogRGF0ZTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0aW1lIHBpY2tlciB2YXJpYW50IHRvIGEgcm9sbCBvciBzZWxlY3QuXG4gICAqIEB0eXBlICdyb2xsJyB8ICdzZWxlY3QnXG4gICAqIEBkZWZhdWx0ICdyb2xsJ1xuICAgKi9cbiAgQElucHV0KCkgdmFyaWFudDogJ3JvbGwnIHwgJ3NlbGVjdCcgPSAncm9sbCc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXN1YWwgdmFsaWRhdGlvbiBmZWVkYmFjay5cbiAgICogQHR5cGUgYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIGRyb3Bkb3duIHRpbWVwaWNrZXIgbWVudSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHRpbWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgdW5kZWZpbmVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IHVuZGVmaW5lZD4oZmFsc2UpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBkcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgdGVtcGxhdGVzOiBhbnkgPSB7fTtcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZUlkRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGNvbnRlbnRUZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVJZERpcmVjdGl2ZT47XG5cbiAgbGlzdE9mSG91cnMhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZkhvdXJzMTIhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZk1pbnV0ZXMhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZlNlY29uZHMhOiBJVGltZVZhbHVlW107XG4gIGhvdXIxMjogYm9vbGVhbiA9IGlzSG91cjEyKHRoaXMubG9jYWxlKTtcbiAgZGF5UGVyaW9kcyA9IFtcbiAgICB7IHZhbHVlOiAnYW0nLCBsYWJlbDogJ2FtJyB9LFxuICAgIHsgdmFsdWU6ICdwbScsIGxhYmVsOiAncG0nIH1cbiAgXTtcblxuICBnZXRMaXN0T2ZIb3VyczEyKCk6IElUaW1lVmFsdWVbXSB7XG4gICAgY29uc3QgbGlzdE9mSG91cnMxMiA9IHRoaXMuaG91cjEyID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0T2ZIb3Vycz8uZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5kYXlQZXJpb2QgJiYgaXRlbS5kYXlQZXJpb2QgPT09IHRoaXMuZGF5UGVyaW9kKSB8fCAhaXRlbS5kYXlQZXJpb2QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5saXN0T2ZIb3VycztcbiAgICBpZiAodGhpcy5ob3VyMTIpIHtcbiAgICAgIGxpc3RPZkhvdXJzMTIucHVzaCg8SVRpbWVWYWx1ZT5saXN0T2ZIb3VyczEyLnNoaWZ0KCkpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdE9mSG91cnMxMjtcbiAgfVxuXG4gIHNldCB0aW1lSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50aW1lSW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX3RpbWVJbnB1dFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdGltZUlucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZUlucHV0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90aW1lSW5wdXRWYWx1ZTogc3RyaW5nID1cbiAgICB0aGlzLnRpbWU/LnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwgeyB0aW1lU3R5bGU6IHRoaXMuc2Vjb25kcyA/ICdtZWRpdW0nIDogJ3Nob3J0JyB9KSA/P1xuICAgICcnO1xuXG4gIGdldCB0aW1lUGlja2VyQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3RpbWUtcGlja2VyJzogdHJ1ZSxcbiAgICAgIFtgdGltZS1waWNrZXItJHt0aGlzLnNpemV9YF06ICEhdGhpcy5zaXplLFxuICAgICAgJ2Zvcm0tY29udHJvbCc6IHRoaXMudmFyaWFudCA9PT0gJ3NlbGVjdCcgJiYgdGhpcy52YWxpZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCA9PT0gdHJ1ZSxcbiAgICAgICdpcy1pbnZhbGlkJzogdGhpcy52YWxpZCA9PT0gZmFsc2UsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBzZWxlY3RUaW1lID0gbmV3IEZvcm1Hcm91cDx7XG4gICAgc2VsZWN0SG91cnM6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xuICAgIHNlbGVjdE1pbnV0ZXM6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xuICAgIHNlbGVjdFNlY29uZHM/OiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICBzZWxlY3REYXlQZXJpb2Q/OiBGb3JtQ29udHJvbDwnYW0nIHwgJ3BtJyB8IG51bGw+O1xuICB9PihcbiAgICB7XG4gICAgICBzZWxlY3RIb3VyczogbmV3IEZvcm1Db250cm9sKFxuICAgICAgICB7IHZhbHVlOiB0aGlzLmhvdXIsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sXG4gICAgICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCh0aGlzLmhvdXIxMiA/IDExIDogMjMpXSB9XG4gICAgICApLFxuICAgICAgc2VsZWN0TWludXRlczogbmV3IEZvcm1Db250cm9sKFxuICAgICAgICB7IHZhbHVlOiB0aGlzLm1pbnV0ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSxcbiAgICAgICAgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDU5KV0gfVxuICAgICAgKSxcbiAgICAgIHNlbGVjdFNlY29uZHM6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogdGhpcy5zZWNvbmQsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sXG4gICAgICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg1OSldIH1cbiAgICAgICksXG4gICAgICBzZWxlY3REYXlQZXJpb2Q6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogdGhpcy5kYXlQZXJpb2QsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIClcbiAgICB9LFxuICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH1cbiAgKTtcblxuICB0aW1lSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woXG4gICAge1xuICAgICAgdmFsdWU6IHRoaXMudGltZUlucHV0VmFsdWUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgIH0sXG4gICAgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfVxuICApO1xuXG4gIHNldCBob3VyKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5faG91ciAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faG91ciA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBob3VyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hvdXI7XG4gIH1cblxuICBwcml2YXRlIF9ob3VyID0gLTE7XG5cbiAgc2V0IG1pbnV0ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX21pbnV0ZSAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fbWludXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW51dGU7XG4gIH1cblxuICBwcml2YXRlIF9taW51dGUgPSAtMTtcblxuICBzZXQgc2Vjb25kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2Vjb25kICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9zZWNvbmQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY29uZDtcbiAgfVxuXG4gIHByaXZhdGUgX3NlY29uZCA9IC0xO1xuXG4gIHNldCBkYXlQZXJpb2QodmFsdWUpIHtcbiAgICBpZiAodGhpcy5fZGF5UGVyaW9kICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fZGF5UGVyaW9kID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5saXN0T2ZIb3Vycykge1xuICAgICAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmdldExpc3RPZkhvdXJzMTIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgfVxuICAgIC8vIHRoaXMubGlzdE9mSG91cnMxMiA9IHRoaXMuaG91cjEyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmxpc3RPZkhvdXJzPy5maWx0ZXIoXG4gICAgLy8gICAgIChpdGVtKSA9PiAoaXRlbS5kYXlQZXJpb2QgJiYgaXRlbS5kYXlQZXJpb2QgPT09IHZhbHVlKSB8fCAhaXRlbS5kYXlQZXJpb2RcbiAgICAvLyAgIClcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMubGlzdE9mSG91cnM7XG4gICAgLy8gdGhpcy5wYXRjaFNlbGVjdFRpbWVWYWx1ZXMoKTtcbiAgfVxuXG4gIGdldCBkYXlQZXJpb2QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RheVBlcmlvZDtcbiAgfVxuXG4gIHByaXZhdGUgX2RheVBlcmlvZDogRGF5UGVyaW9kID0gJ2FtJztcblxuICBzZXRUaW1lKCkge1xuICAgIHRoaXMuX2hvdXIgPSB0aGlzLl9ob3VyIDwgMCA/IDAgOiB0aGlzLl9ob3VyO1xuICAgIHRoaXMuX21pbnV0ZSA9IHRoaXMuX21pbnV0ZSA8IDAgPyAwIDogdGhpcy5fbWludXRlO1xuICAgIHRoaXMuX3NlY29uZCA9IHRoaXMuX3NlY29uZCA8IDAgPyAwIDogdGhpcy5fc2Vjb25kO1xuXG4gICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKHRoaXMuX3RpbWU/LmdldFRpbWUoKSB8fCBuZXcgRGF0ZSgpKTtcbiAgICB0aW1lLnNldEhvdXJzKHRoaXMuaG91ciwgdGhpcy5taW51dGUsIHRoaXMuc2Vjb25kLCAwKTtcbiAgICB0aGlzLnRpbWUgPSB0aW1lO1xuICAgIHRoaXMuZW1pdFRpbWUodGltZSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJUaW1lKCkge1xuICAgIGlmICh0aGlzLnRpbWUpIHtcbiAgICAgIHRoaXMuX3RpbWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmVtaXRUaW1lKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHRoaXMuX2hvdXIgPSAtMTtcbiAgICB0aGlzLl9taW51dGUgPSAtMTtcbiAgICB0aGlzLl9zZWNvbmQgPSAtMTtcbiAgICB0aGlzLmRheVBlcmlvZCA9ICdhbSc7XG4gICAgdGhpcy5wYXRjaFNlbGVjdFRpbWVWYWx1ZXMoKTtcbiAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gJyc7XG4gIH1cblxuICBlbWl0VGltZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdGltZVZhbHVlID0gISF0aW1lICYmIGlzVmFsaWRUaW1lKHRpbWUpID8gbmV3IERhdGUodGltZS5nZXRUaW1lKCkpIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl90aW1lSW50ZXJuYWw/LmdldFRpbWUoKSAhPT0gdGltZVZhbHVlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMudGltZUNoYW5nZS5lbWl0KHRpbWVWYWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRpbWVWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fdGltZUludGVybmFsID0gdGltZVZhbHVlO1xuICAgIH1cbiAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID1cbiAgICAgIHRoaXMudGltZT8udG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7XG4gICAgICAgIHRpbWVTdHlsZTogdGhpcy5zZWNvbmRzID8gJ21lZGl1bScgOiAnc2hvcnQnXG4gICAgICB9KSA/PyAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZUxpc3RzKCk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gICAgdGhpcy5zZXRDaGFuZ2VIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0aW1lJ10pIHtcbiAgICAgIGlmICghY2hhbmdlc1sndGltZSddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIGlmICh0aGlzLl90aW1lSW50ZXJuYWw/LmdldFRpbWUoKSAhPT0gY2hhbmdlc1sndGltZSddLmN1cnJlbnRWYWx1ZT8uZ2V0VGltZSgpKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuZm9yRWFjaCgoY2hpbGQ6IFRlbXBsYXRlSWREaXJlY3RpdmUpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNbY2hpbGQuaWRdID0gY2hpbGQudGVtcGxhdGVSZWY7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFRpbWVMaXN0cygpIHtcbiAgICB0aGlzLmRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucyk7XG4gICAgdGhpcy5ob3VyMTIgPSBpc0hvdXIxMih0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5saXN0T2ZIb3VycyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZkhvdXJzLCB0aGlzLmZpbHRlckhvdXJzKTtcbiAgICB0aGlzLmxpc3RPZk1pbnV0ZXMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZNaW51dGVzLCB0aGlzLmZpbHRlck1pbnV0ZXMpO1xuICAgIHRoaXMubGlzdE9mU2Vjb25kcyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZlNlY29uZHMsIHRoaXMuZmlsdGVyU2Vjb25kcyk7XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGNvbnN0IHVuZGVmU2VnbWVudCA9IHsgdmFsdWU6IC0xLCBsYWJlbDogJyAtLScsIGRpc2FibGVkOiB0cnVlIH07XG4gICAgICB0aGlzLmxpc3RPZkhvdXJzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZk1pbnV0ZXMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICAgIHRoaXMubGlzdE9mU2Vjb25kcy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmdldExpc3RPZkhvdXJzMTIoKTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGVjdFRpbWUodGltZSA9IHRoaXMudGltZSkge1xuICAgIGlmICghIXRpbWUgJiYgaXNWYWxpZFRpbWUodGltZSkpIHtcbiAgICAgIGNvbnN0IGhvdXIgPSB0aW1lLmdldEhvdXJzKCkgPz8gMDtcbiAgICAgIGNvbnN0IG1pbnV0ZSA9IHRpbWUuZ2V0TWludXRlcygpID8/IDA7XG4gICAgICBjb25zdCBzZWNvbmQgPSB0aGlzLnNlY29uZHMgPyB0aW1lLmdldFNlY29uZHMoKSA/PyAwIDogMDtcblxuICAgICAgY29uc3QgY2xvc2VzdFNlY29uZCA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZTZWNvbmRzLCBzZWNvbmQpO1xuICAgICAgY29uc3QgY2xvc2VzdE1pbnV0ZSA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZNaW51dGVzLCBtaW51dGUpO1xuICAgICAgY29uc3QgY2xvc2VzdEhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpO1xuXG4gICAgICB0aGlzLnNlY29uZCA9IHRoaXMuc2Vjb25kcyA/IGNsb3Nlc3RTZWNvbmQudmFsdWUgOiAwO1xuICAgICAgdGhpcy5taW51dGUgPSBjbG9zZXN0TWludXRlLnZhbHVlO1xuICAgICAgdGhpcy5ob3VyID0gY2xvc2VzdEhvdXIudmFsdWU7XG4gICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VzdFRpbWUodGltZUFycmF5OiBJVGltZVZhbHVlW10sIHRpbWVTZWdtZW50OiBudW1iZXIpIHtcbiAgICBsZXQgYXJyYXkgPSB0aW1lQXJyYXkgPz8gW3sgdmFsdWU6IDAsIGxhYmVsOiAnMDAnIH1dO1xuICAgIGlmICh0aGlzLnRpbWUpIHtcbiAgICAgIGFycmF5ID0gdGltZUFycmF5LmZpbHRlcigoZWwpID0+IGVsLnZhbHVlID49IDApO1xuICAgICAgYXJyYXkgPSBhcnJheS5sZW5ndGggPyBhcnJheSA6IHRpbWVBcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5LnJlZHVjZSgoYTogSVRpbWVWYWx1ZSwgYjogSVRpbWVWYWx1ZSkgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGIudmFsdWUgLSB0aW1lU2VnbWVudCkgPCBNYXRoLmFicyhhLnZhbHVlIC0gdGltZVNlZ21lbnQpID8gYiA6IGE7XG4gICAgfSk7XG4gIH1cblxuICBsaXN0T2ZUaW1lU2VnbWVudHMoXG4gICAgZ2V0TGlzdE9mVGltZVNlZ21lbnRzOiAoXG4gICAgICBsb2NhbGU6IHN0cmluZyxcbiAgICAgIGRhdGVUaW1lRm9ybWF0T3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gICAgKSA9PiBJVGltZVZhbHVlW10sXG4gICAgZmlsdGVyVGltZVNlZ21lbnRzOiAoKHRpbWVTZWdtZW50VmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbikgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgY29uc3QgbGlzdCA9IGdldExpc3RPZlRpbWVTZWdtZW50cyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpLmZpbHRlcihcbiAgICAgIChzZWdtZW50OiBJVGltZVZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZmlsdGVyVGltZVNlZ21lbnRzID09PSAnZnVuY3Rpb24nID8gZmlsdGVyVGltZVNlZ21lbnRzKHNlZ21lbnQudmFsdWUpIDogdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBsaXN0Lmxlbmd0aFxuICAgICAgICAgICA/IGxpc3RcbiAgICAgICAgICAgOiBnZXRMaXN0T2ZUaW1lU2VnbWVudHModGhpcy5sb2NhbGUsIHRoaXMuZGF0ZVRpbWVGb3JtYXRPcHRpb25zKS5zbGljZSgwLCAxKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdERheVBlcmlvZENoYW5nZShkYXlQZXJpb2Q6IERheVBlcmlvZCkge1xuICAgIGlmIChkYXlQZXJpb2QgIT09IHRoaXMuZGF5UGVyaW9kKSB7XG4gICAgICBjb25zdCBocnMgPSB0aGlzLnRpbWU/LmdldEhvdXJzKCkgPz8gKHRoaXMuaG91ciA8IDAgPyAwIDogdGhpcy5ob3VyKTtcbiAgICAgIGNvbnN0IGhvdXIgPSBocnMgPiAxMiA/IGNvbnZlcnQyNGhUbzEyaChocnMpIDogY29udmVydDEyaFRvMjRoKGRheVBlcmlvZCwgaHJzKTtcbiAgICAgIHRoaXMuaG91ciA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZIb3VycywgaG91cikudmFsdWU7XG4gICAgICBpZiAoaG91ciA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU2VsZWN0VGltZUNoYW5nZSh2YWx1ZTogbnVtYmVyLCBzZWdtZW50OiAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnKSB7XG4gICAgdGhpc1tzZWdtZW50XSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSA+PSAwKSB7XG4gICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gIH1cblxuICBwYXRjaFNlbGVjdFRpbWVWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGF5UGVyaW9kID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0RGF5UGVyaW9kJyk/LnZhbHVlO1xuICAgIGlmICh0aGlzLmRheVBlcmlvZCAhPT0gZGF5UGVyaW9kKSB7XG4gICAgICB0aGlzLnNlbGVjdFRpbWUucGF0Y2hWYWx1ZSh7XG4gICAgICAgIHNlbGVjdERheVBlcmlvZDogdGhpcy5kYXlQZXJpb2QgPz8gJ2FtJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhvdXJzID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0SG91cnMnKT8udmFsdWU7XG4gICAgY29uc3QgbWludXRlcyA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdE1pbnV0ZXMnKT8udmFsdWU7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdFNlY29uZHMnKT8udmFsdWU7XG4gICAgY29uc3QgZ29VcGRhdGUgPVxuICAgICAgKHRoaXMuc2Vjb25kIDwgMCAmJiB0aGlzLm1pbnV0ZSA8IDApIHx8XG4gICAgICAodGhpcy5ob3VyID49IDAgJiYgdGhpcy5taW51dGUgPj0gMCAmJiB0aGlzLnNlY29uZCA+PSAwKTtcbiAgICBjb25zdCB0aW1lQ2hhbmdlZCA9IHRoaXMuaG91ciAhPT0gaG91cnMgfHwgdGhpcy5taW51dGUgIT09IG1pbnV0ZXMgfHwgdGhpcy5zZWNvbmQgIT09IHNlY29uZHM7XG4gICAgaWYgKGdvVXBkYXRlICYmIHRpbWVDaGFuZ2VkKSB7XG4gICAgICBpZiAodGhpcy5ob3VyICE9PSBob3Vycykge1xuICAgICAgICB0aGlzLnNlbGVjdFRpbWUucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgc2VsZWN0SG91cnM6IHRoaXMuaG91ciA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWludXRlICE9PSBtaW51dGVzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RNaW51dGVzOiB0aGlzLm1pbnV0ZSA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2Vjb25kICE9PSBzZWNvbmRzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RTZWNvbmRzOiB0aGlzLnNlY29uZCA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlIb3VyKGluZGV4OiBudW1iZXIsIGhvdXI6IElUaW1lVmFsdWUpIHtcbiAgICByZXR1cm4gaG91cjtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50aW1lID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgaGFuZGxlVGltZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSAkZXZlbnQudGFyZ2V0Py52YWx1ZTtcbiAgICBpZiAoIXZhbHVlIHx8ICFpc1ZhbGlkVGltZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRpbWUgPSBjb252ZXJ0VGltZVRvRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKHRpbWUgPz8gbmV3IERhdGUoRGF0ZS5ub3coKSkpO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZUJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkJsdXIoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFuZGxlRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICB9XG5cbiAgc2V0Q2hhbmdlSGFuZGxlcnMoKSB7XG5cbiAgICBpZiAodGhpcy52YXJpYW50ICE9PSAnc2VsZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdEhvdXJzJyk/LnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RUaW1lQ2hhbmdlKDxudW1iZXI+dmFsdWUsICdob3VyJyk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdE1pbnV0ZXMnKT8udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdFRpbWVDaGFuZ2UoPG51bWJlcj52YWx1ZSwgJ21pbnV0ZScpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RTZWNvbmRzJyk/LnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnNlY29uZHMpLFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0VGltZUNoYW5nZSg8bnVtYmVyPnZhbHVlLCAnc2Vjb25kJyk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdERheVBlcmlvZCcpPy52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ob3VyMTIpLFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKDxEYXlQZXJpb2Q+dmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJ2YXJpYW50PT09J3NlbGVjdCdcIiBjbGFzcz1cImRhdGUtcGlja2VyLXRpbWVwaWNrZXJzXCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXIgdGltZS1waWNrZXJcIj5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwic2VsZWN0VGltZVwiIFtuZ0NsYXNzXT1cInRpbWVQaWNrZXJDbGFzc2VzXCIgY2xhc3M9XCJ0aW1lLXBpY2tlci1ib2R5XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcGlja2VyLWlubGluZS1pY29uXCI+PC9zcGFuPlxuICAgICAgPHNlbGVjdCAoYmx1cik9XCJvbkJsdXIoKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICBjU2VsZWN0IGNsYXNzPVwidGltZS1waWNrZXItaW5saW5lLXNlbGVjdCBtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0SG91cnNcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBsaXN0T2ZIb3VyczEyOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SG91clwiIFthdHRyLmRpc2FibGVkXT1cImhvdXIuZGlzYWJsZWQgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiaG91ci52YWx1ZVwiPnt7aG91ci5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIHt7JyA6J319PHNlbGVjdCAoYmx1cik9XCJvbkJsdXIoKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgIGNTZWxlY3QgY2xhc3M9XCJ0aW1lLXBpY2tlci1pbmxpbmUtc2VsZWN0IG1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RNaW51dGVzXCI+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbGlzdE9mTWludXRlcyA7IHRyYWNrQnk6IHRyYWNrQnlIb3VyXCIgW2F0dHIuZGlzYWJsZWRdPVwibWludXRlLmRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJtaW51dGUudmFsdWVcIj57e21pbnV0ZS5sYWJlbH19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2Vjb25kc1wiPlxuICAgICAgICB7eycgOid9fTxzZWxlY3QgKGJsdXIpPVwib25CbHVyKClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgW3NpemluZ109XCJzaXplID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNTZWxlY3QgY2xhc3M9XCJ0aW1lLXBpY2tlci1pbmxpbmUtc2VsZWN0IG1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RTZWNvbmRzXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlY29uZCBvZiBsaXN0T2ZTZWNvbmRzOyB0cmFja0J5OiB0cmFja0J5SG91clwiIFthdHRyLmRpc2FibGVkXT1cInNlY29uZC5kaXNhYmxlZCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJzZWNvbmQudmFsdWVcIj57e3NlY29uZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaG91cjEyXCI+XG4gICAgICAgIDxzZWxlY3QgKGJsdXIpPVwib25CbHVyKClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgW3NpemluZ109XCJzaXplID8/ICcnXCJcbiAgICAgICAgICAgICAgICBjU2VsZWN0IGNsYXNzPVwidGltZS1waWNrZXItaW5saW5lLXNlbGVjdCBtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0RGF5UGVyaW9kXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZGF5UGVyaW9kIG9mIGRheVBlcmlvZHNcIiBbbmdWYWx1ZV09XCJkYXlQZXJpb2QudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lLXBpY2tlci1yb2xsLWNlbGxcIj57e2RheVBlcmlvZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgKm5nSWY9XCJ2YXJpYW50PT09J3JvbGwnXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBbbmdDbGFzc109XCJ0aW1lUGlja2VyQ2xhc3Nlc1wiXG4gICAgICAgICAgICBbdmlzaWJsZV09XCJ2aXNpYmxlXCI+XG4gIDxkaXYgW2NhcmV0XT1cImZhbHNlXCIgY0Ryb3Bkb3duVG9nZ2xlIGNsYXNzPVwidGltZS1waWNrZXItaW5wdXQtZ3JvdXBcIj5cbiAgICA8aW5wdXQgKGJsdXIpPVwiaGFuZGxlQmx1cigkZXZlbnQpO1wiXG4gICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlVGltZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGUgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cImhvdXIxMiA/ICcoKCgwWzEtOV0pfCgxWzAtMl0pKTooWzAtNV0pKFswLTldKVxcXFxzKEF8UClNKScgOiAnKFswMV0/WzAtOV18MlswLTNdKTpbMC01XVswLTldJ1wiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRpbWVJbnB1dFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICBjbGFzcz1cInRpbWUtcGlja2VyLWlucHV0XCJcbiAgICA+XG4gICAgPGRpdiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwidGltZS1waWNrZXItaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgPGRpdiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgdGltZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInRpbWUtcGlja2VyLWNsZWFuZXJcIlxuICAgICAgICAgcm9sZT1cImJ1dHRvblwiPjwvZGl2PlxuXG4gIDwvZGl2PlxuICA8ZGl2ICNkcm9wZG93bk1lbnU9XCJjRHJvcGRvd25NZW51XCIgY0Ryb3Bkb3duTWVudSBjbGFzcz1cInRpbWUtcGlja2VyLWRyb3Bkb3duIHB5LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItYm9keSB0aW1lLXBpY2tlci1yb2xsXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0VGltZUNoYW5nZSgkZXZlbnQsICdob3VyJylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mSG91cnMxMlwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImhvdXJcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICA+XG4gICAgICA8L2MtdGltZS1waWNrZXItcm9sbC1jb2w+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0VGltZUNoYW5nZSgkZXZlbnQsICdtaW51dGUnKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZNaW51dGVzXCJcbiAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwibWludXRlXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1jb2xcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdFRpbWVDaGFuZ2UoJGV2ZW50LCAnc2Vjb25kJylcIlxuICAgICAgICAqbmdJZj1cInNlY29uZHNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mU2Vjb25kc1wiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cInNlY29uZFwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtYW0tcG1cbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdERheVBlcmlvZENoYW5nZSgkZXZlbnQpXCIgKm5nSWY9XCJob3VyMTJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWxlbWVudHNdPVwiZGF5UGVyaW9kc1wiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImRheVBlcmlvZFwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWFtLXBtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZXM/LnRpbWVQaWNrZXJGb290ZXJcIiBjbGFzcz1cInRpbWUtcGlja2VyLWZvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcz8udGltZVBpY2tlckZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9jLWRyb3Bkb3duPlxuIl19
513
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGlCQUFpQixFQUdqQixPQUFPLEVBQ1AsYUFBYSxFQUNiLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixXQUFXLEVBRVosTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7OztBQUV0Ryx5QkFBeUI7QUE4QnpCLE1BQU0sT0FBTyxtQkFBbUI7SUFFckIsV0FBVyxDQUFzQjtJQUUxQztRQUZTLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSTFDOzs7O1dBSUc7UUFDcUMsWUFBTyxHQUFZLElBQUksQ0FBQztRQUVoRTs7Ozs7V0FLRztRQUNNLDBCQUFxQixHQUEwQixFQUFFLENBQUM7UUFFM0Q7Ozs7V0FJRztRQUNxQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBdUJsRTs7OztXQUlHO1FBQ3FDLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFbEU7Ozs7V0FJRztRQUNxQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV2RTs7OztXQUlHO1FBQ00sV0FBTSxHQUFXLFNBQVMsQ0FBQztRQUVwQzs7OztXQUlHO1FBQ00sZ0JBQVcsR0FBVyxhQUFhLENBQUM7UUFFN0M7Ozs7V0FJRztRQUNxQyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBc0NqRTs7OztXQUlHO1FBQ00sWUFBTyxHQUFzQixNQUFNLENBQUM7UUFTN0M7Ozs7V0FJRztRQUNxQyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXZELGVBQVUsR0FBbUMsSUFBSSxZQUFZLENBQW1CLEtBQUssQ0FBQyxDQUFDO1FBUWpHLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFRcEIsV0FBTSxHQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsZUFBVSxHQUFHO1lBQ1gsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDNUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDN0IsQ0FBQztRQXFCTSxvQkFBZSxHQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1RixFQUFFLENBQUM7UUFhTCxlQUFVLEdBQUcsSUFBSSxTQUFTLENBTXhCO1lBQ0UsV0FBVyxFQUFFLElBQUksV0FBVyxDQUMxQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQzdDLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUMzRTtZQUNELGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FDNUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUMvQyxFQUFFLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ3hEO1lBQ0QsYUFBYSxFQUFFLElBQUksV0FBVyxDQUM1QixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQy9DLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDeEQ7WUFDRCxlQUFlLEVBQUUsSUFBSSxXQUFXLENBQzlCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDbEQsVUFBVSxDQUFDLFFBQVEsQ0FDcEI7U0FDRixFQUNELEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ3RDLENBQUM7UUFFRixjQUFTLEdBQUcsSUFBSSxXQUFXLENBQ3pCO1lBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixFQUNELEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ3RDLENBQUM7UUFnQk0sVUFBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBZ0JYLFlBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQWdCYixZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFzQmIsZUFBVSxHQUFjLElBQUksQ0FBQztRQXNMckMsYUFBUSxHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUEvZE4sQ0FBQztJQXVGaEI7Ozs7T0FJRztJQUNILElBQ0ksSUFBSSxDQUFDLEtBQWdDO1FBQ3ZDLElBQUksS0FBSyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUE0QnFCLE1BQU07UUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFrQkQsZ0JBQWdCO1FBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsYUFBYSxDQUFDLElBQUksQ0FBYSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQU1ELElBQUksaUJBQWlCO1FBQ25CLE9BQU87WUFDTCxhQUFhLEVBQUUsSUFBSTtZQUNuQixDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ3pDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDckUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO1lBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDO0lBQ0osQ0FBQztJQXFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUlELElBQUksTUFBTSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBSUQsSUFBSSxNQUFNLENBQUMsS0FBYTtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxJQUFJLFNBQVMsQ0FBQyxLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUNELG1DQUFtQztRQUNuQyxtREFBbUQ7UUFDbkQsZ0ZBQWdGO1FBQ2hGLE1BQU07UUFDTiwyQ0FBMkM7UUFDM0MsZ0NBQWdDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUlELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVuRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBc0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDckYsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYztZQUNqQixJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87YUFDN0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUM5RSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkYsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDL0IsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFN0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUF1QixFQUFFLFdBQW1CO1FBQ3RELElBQUksS0FBSyxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBYSxFQUFFLENBQWEsRUFBRSxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLHFCQUdpQixFQUNqQixrQkFBdUU7UUFFdkUsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQ2hGLENBQUMsT0FBbUIsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sT0FBTyxrQkFBa0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdGLENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTTtZQUNYLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsMkJBQTJCLENBQUMsU0FBb0I7UUFDOUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMzRCxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBYSxFQUFFLE9BQXFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO2dCQUN6QixlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO2FBQ3hDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FDWixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQztRQUM5RixJQUFJLFFBQVEsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO29CQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO2lCQUM1QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztvQkFDekIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3pCLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7aUJBQ2hDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhLEVBQUUsSUFBZ0I7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFXO1FBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFrQjtRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWtCO1FBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsaUJBQWlCO1FBRWYsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsWUFBWTthQUM3QyxJQUFJLENBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLHNCQUFzQixDQUFTLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsRUFDRixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZO2FBQy9DLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsc0JBQXNCLENBQVMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFlBQVk7YUFDL0MsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxzQkFBc0IsQ0FBUyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZO2FBQ2pELElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUN6QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsMkJBQTJCLENBQVksS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OEdBaGtCVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwyRkFXVixnQkFBZ0Isc0ZBZWhCLGdCQUFnQixxSUE0QmhCLGdCQUFnQixxREFPaEIsZ0JBQWdCLGlGQXFCaEIsZ0JBQWdCLG1HQXlEaEIsZ0JBQWdCLG9HQW5KekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMkRBd0pnQixtQkFBbUIsNkZBSHpCLGlCQUFpQiwyQkFBVSxVQUFVLDZFQ3JPbEQsazlKQWlIQSwwRkRwREksT0FBTyxvRkFDUCxnQkFBZ0IsbUpBQ2hCLG1CQUFtQixrN0NBQ25CLGlCQUFpQiwyTkFDakIsdUJBQXVCLDBKQUN2QixxQkFBcUIsMkhBRXJCLG1CQUFtQix5RkFHbkIsMEJBQTBCLHNNQUMxQiwyQkFBMkI7OzJGQVVsQixtQkFBbUI7a0JBNUIvQixTQUFTOytCQUNFLGVBQWUsWUFHZixhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7cUJBQzVCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3dEQWF1QyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVE3QixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBT2tDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTzdCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9rQyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU9FLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTzdCLE1BQU07c0JBQWQsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9rQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU83QixJQUFJO3NCQUFaLEtBQUs7Z0JBUUYsSUFBSTtzQkFEUCxLQUFLO2dCQTZCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9rQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QixVQUFVO3NCQUFuQixNQUFNO2dCQUVlLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTTtnQkFJZ0MsV0FBVztzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSWxELGdCQUFnQjtzQkFEZixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgY29udmVydDEyaFRvMjRoLFxuICBjb252ZXJ0MjRoVG8xMmgsXG4gIGNvbnZlcnRUaW1lVG9EYXRlLFxuICBEYXRlVGltZUZvcm1hdE9wdGlvbnMsXG4gIERheVBlcmlvZCxcbiAgZ2V0QW1QbSxcbiAgZ2V0RGF5UGVyaW9kcyxcbiAgZ2V0TGlzdE9mSG91cnMsXG4gIGdldExpc3RPZk1pbnV0ZXMsXG4gIGdldExpc3RPZlNlY29uZHMsXG4gIGlzSG91cjEyLFxuICBpc1ZhbGlkVGltZSxcbiAgSVRpbWVWYWx1ZVxufSBmcm9tICcuL3RpbWUudXRpbHMnO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybVNlbGVjdERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtJztcbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbEFtUG1Db21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50JztcblxuLy8gdG9kbzogRm9jdXMgbWFuYWdlbWVudFxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjVGltZVBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSxcbiAgICBEcm9wZG93bk1lbnVEaXJlY3RpdmUsXG4gICAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gICAgRm9ybVNlbGVjdERpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlLFxuICAgIFRpbWVQaWNrZXJSb2xsQ29sQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJSb2xsQW1QbUNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNsZWFuZXIgYnV0dG9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjbGVhbmVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2V0cyBEYXRlVGltZSBmb3JtYXQgb3B0aW9ucyBpbmNsdWRpbmcgdGltZVpvbmVcbiAgICogQHR5cGUgRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqIEBub3RlIFRoZSBkYXRlIG9iamVjdCBkb2Vzbid0IHN0b3JlIHRpbWVab25lLCBpdCBrZWVwcyB0aGUgbG9jYWwgdGltZXpvbmUgb2YgdGhlIGJyb3dzZXIsIHJlZ2FyZGxlc3MgaWYgeW91IHBhcnNlZCBVVEMgZGF0ZXMuXG4gICAqL1xuICBASW5wdXQoKSBkYXRlVGltZUZvcm1hdE9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9O1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGRpc2FibGVkIHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBob3VycyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJIb3Vycz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIG1pbnV0ZXMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVyTWludXRlcz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIHNlY29uZHMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVyU2Vjb25kcz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGlucHV0IGluZGljYXRvci5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaW5kaWNhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlucHV0UmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBzaG9ydCBoaW50IHZpc2libGUgaW4gdGltZSBpbnB1dC5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0ICdTZWxlY3QgdGltZSdcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IHRpbWUnO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgc2Vjb25kcyB2aXNpYmlsaXR5LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRpbWUuXG4gICAqIEB0eXBlIERhdGUgfCBzdHJpbmcgfCBudWxsIHwgbnVtYmVyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHRpbWUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgaXNWYWxpZFRpbWUodmFsdWUpKSB7XG4gICAgICBjb25zdCB0aW1lID0gY29udmVydFRpbWVUb0RhdGUodmFsdWUpO1xuICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF5UGVyaW9kID0gZ2V0QW1QbSh0aW1lLCB0aGlzLmxvY2FsZSk7XG4gICAgICBpZiAodGhpcy5fdGltZT8uZ2V0VGltZSgpICE9PSB0aW1lLmdldFRpbWUoKSkge1xuICAgICAgICB0aGlzLl90aW1lID0gbmV3IERhdGUodGltZS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0aW1lKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90aW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZT86IERhdGU7XG4gIHByaXZhdGUgX3RpbWVJbnRlcm5hbD86IERhdGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGltZSBwaWNrZXIgdmFyaWFudCB0byBhIHJvbGwgb3Igc2VsZWN0LlxuICAgKiBAdHlwZSAncm9sbCcgfCAnc2VsZWN0J1xuICAgKiBAZGVmYXVsdCAncm9sbCdcbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdyb2xsJyB8ICdzZWxlY3QnID0gJ3JvbGwnO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiBkcm9wZG93biB0aW1lcGlja2VyIG1lbnUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCB1bmRlZmluZWQ+KGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdibHVyJykgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKERyb3Bkb3duQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZHJvcGRvd25SZWYhOiBFbGVtZW50UmVmO1xuXG4gIHRlbXBsYXRlczogYW55ID0ge307XG4gIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVJZERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBjb250ZW50VGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlSWREaXJlY3RpdmU+O1xuXG4gIGxpc3RPZkhvdXJzITogSVRpbWVWYWx1ZVtdO1xuICBsaXN0T2ZIb3VyczEyITogSVRpbWVWYWx1ZVtdO1xuICBsaXN0T2ZNaW51dGVzITogSVRpbWVWYWx1ZVtdO1xuICBsaXN0T2ZTZWNvbmRzITogSVRpbWVWYWx1ZVtdO1xuICBob3VyMTI6IGJvb2xlYW4gPSBpc0hvdXIxMih0aGlzLmxvY2FsZSk7XG4gIGRheVBlcmlvZHMgPSBbXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcbiAgICB7IHZhbHVlOiAncG0nLCBsYWJlbDogJ3BtJyB9XG4gIF07XG5cbiAgZ2V0TGlzdE9mSG91cnMxMigpOiBJVGltZVZhbHVlW10ge1xuICAgIGNvbnN0IGxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdE9mSG91cnM/LmZpbHRlcigoaXRlbSkgPT4gKGl0ZW0uZGF5UGVyaW9kICYmIGl0ZW0uZGF5UGVyaW9kID09PSB0aGlzLmRheVBlcmlvZCkgfHwgIWl0ZW0uZGF5UGVyaW9kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMubGlzdE9mSG91cnM7XG4gICAgaWYgKHRoaXMuaG91cjEyKSB7XG4gICAgICBsaXN0T2ZIb3VyczEyLnB1c2goPElUaW1lVmFsdWU+bGlzdE9mSG91cnMxMi5zaGlmdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpc3RPZkhvdXJzMTI7XG4gIH1cblxuICBzZXQgdGltZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGltZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl90aW1lSW5wdXRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRpbWVJbnB1dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVJbnB1dFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZUlucHV0VmFsdWU6IHN0cmluZyA9XG4gICAgdGhpcy50aW1lPy50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHsgdGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCcgfSkgPz9cbiAgICAnJztcblxuICBnZXQgdGltZVBpY2tlckNsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICd0aW1lLXBpY2tlcic6IHRydWUsXG4gICAgICBbYHRpbWUtcGlja2VyLSR7dGhpcy5zaXplfWBdOiAhIXRoaXMuc2l6ZSxcbiAgICAgICdmb3JtLWNvbnRyb2wnOiB0aGlzLnZhcmlhbnQgPT09ICdzZWxlY3QnICYmIHRoaXMudmFsaWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICdpcy12YWxpZCc6IHRoaXMudmFsaWQgPT09IHRydWUsXG4gICAgICAnaXMtaW52YWxpZCc6IHRoaXMudmFsaWQgPT09IGZhbHNlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0VGltZSA9IG5ldyBGb3JtR3JvdXA8e1xuICAgIHNlbGVjdEhvdXJzOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICBzZWxlY3RNaW51dGVzOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICBzZWxlY3RTZWNvbmRzPzogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgc2VsZWN0RGF5UGVyaW9kPzogRm9ybUNvbnRyb2w8J2FtJyB8ICdwbScgfCBudWxsPjtcbiAgfT4oXG4gICAge1xuICAgICAgc2VsZWN0SG91cnM6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogdGhpcy5ob3VyLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LFxuICAgICAgICB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgodGhpcy5ob3VyMTIgPyAxMSA6IDIzKV0gfVxuICAgICAgKSxcbiAgICAgIHNlbGVjdE1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogdGhpcy5taW51dGUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sXG4gICAgICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg1OSldIH1cbiAgICAgICksXG4gICAgICBzZWxlY3RTZWNvbmRzOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHsgdmFsdWU6IHRoaXMuc2Vjb25kLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LFxuICAgICAgICB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNTkpXSB9XG4gICAgICApLFxuICAgICAgc2VsZWN0RGF5UGVyaW9kOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHsgdmFsdWU6IHRoaXMuZGF5UGVyaW9kLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LFxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICApXG4gICAgfSxcbiAgICB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XG4gICk7XG5cbiAgdGltZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKFxuICAgIHtcbiAgICAgIHZhbHVlOiB0aGlzLnRpbWVJbnB1dFZhbHVlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWRcbiAgICB9LFxuICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH1cbiAgKTtcblxuICBzZXQgaG91cih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX2hvdXIgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hvdXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ob3VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfaG91ciA9IC0xO1xuXG4gIHNldCBtaW51dGUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9taW51dGUgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX21pbnV0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWludXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWludXRlID0gLTE7XG5cbiAgc2V0IHNlY29uZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3NlY29uZCAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2Vjb25kID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWNvbmQ7XG4gIH1cblxuICBwcml2YXRlIF9zZWNvbmQgPSAtMTtcblxuICBzZXQgZGF5UGVyaW9kKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuX2RheVBlcmlvZCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2RheVBlcmlvZCA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMubGlzdE9mSG91cnMpIHtcbiAgICAgICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5nZXRMaXN0T2ZIb3VyczEyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICAgIH1cbiAgICAvLyB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMlxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5saXN0T2ZIb3Vycz8uZmlsdGVyKFxuICAgIC8vICAgICAoaXRlbSkgPT4gKGl0ZW0uZGF5UGVyaW9kICYmIGl0ZW0uZGF5UGVyaW9kID09PSB2YWx1ZSkgfHwgIWl0ZW0uZGF5UGVyaW9kXG4gICAgLy8gICApXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmxpc3RPZkhvdXJzO1xuICAgIC8vIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gIH1cblxuICBnZXQgZGF5UGVyaW9kKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXlQZXJpb2Q7XG4gIH1cblxuICBwcml2YXRlIF9kYXlQZXJpb2Q6IERheVBlcmlvZCA9ICdhbSc7XG5cbiAgc2V0VGltZSgpIHtcbiAgICB0aGlzLl9ob3VyID0gdGhpcy5faG91ciA8IDAgPyAwIDogdGhpcy5faG91cjtcbiAgICB0aGlzLl9taW51dGUgPSB0aGlzLl9taW51dGUgPCAwID8gMCA6IHRoaXMuX21pbnV0ZTtcbiAgICB0aGlzLl9zZWNvbmQgPSB0aGlzLl9zZWNvbmQgPCAwID8gMCA6IHRoaXMuX3NlY29uZDtcblxuICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSh0aGlzLl90aW1lPy5nZXRUaW1lKCkgfHwgbmV3IERhdGUoKSk7XG4gICAgdGltZS5zZXRIb3Vycyh0aGlzLmhvdXIsIHRoaXMubWludXRlLCB0aGlzLnNlY29uZCwgMCk7XG4gICAgdGhpcy50aW1lID0gdGltZTtcbiAgICB0aGlzLmVtaXRUaW1lKHRpbWUpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyVGltZSgpIHtcbiAgICBpZiAodGhpcy50aW1lKSB7XG4gICAgICB0aGlzLl90aW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5lbWl0VGltZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICB0aGlzLl9ob3VyID0gLTE7XG4gICAgdGhpcy5fbWludXRlID0gLTE7XG4gICAgdGhpcy5fc2Vjb25kID0gLTE7XG4gICAgdGhpcy5kYXlQZXJpb2QgPSAnYW0nO1xuICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9ICcnO1xuICB9XG5cbiAgZW1pdFRpbWUodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHRpbWVWYWx1ZSA9ICEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSA/IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IHRpbWVWYWx1ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLnRpbWVDaGFuZ2UuZW1pdCh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX3RpbWVJbnRlcm5hbCA9IHRpbWVWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9XG4gICAgICB0aGlzLnRpbWU/LnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICB0aW1lU3R5bGU6IHRoaXMuc2Vjb25kcyA/ICdtZWRpdW0nIDogJ3Nob3J0J1xuICAgICAgfSkgPz8gJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRpbWVMaXN0cygpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgIHRoaXMuc2V0Q2hhbmdlSGFuZGxlcnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGltZSddKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3RpbWUnXS5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IGNoYW5nZXNbJ3RpbWUnXS5jdXJyZW50VmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLmZvckVhY2goKGNoaWxkOiBUZW1wbGF0ZUlkRGlyZWN0aXZlKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRUaW1lTGlzdHMoKSB7XG4gICAgdGhpcy5kYXlQZXJpb2RzID0gZ2V0RGF5UGVyaW9kcyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpO1xuICAgIHRoaXMuaG91cjEyID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMubGlzdE9mSG91cnMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZIb3VycywgdGhpcy5maWx0ZXJIb3Vycyk7XG4gICAgdGhpcy5saXN0T2ZNaW51dGVzID0gdGhpcy5saXN0T2ZUaW1lU2VnbWVudHMoZ2V0TGlzdE9mTWludXRlcywgdGhpcy5maWx0ZXJNaW51dGVzKTtcbiAgICB0aGlzLmxpc3RPZlNlY29uZHMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZTZWNvbmRzLCB0aGlzLmZpbHRlclNlY29uZHMpO1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzZWxlY3QnKSB7XG4gICAgICBjb25zdCB1bmRlZlNlZ21lbnQgPSB7IHZhbHVlOiAtMSwgbGFiZWw6ICcgLS0nLCBkaXNhYmxlZDogdHJ1ZSB9O1xuICAgICAgdGhpcy5saXN0T2ZIb3Vycy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgICAgdGhpcy5saXN0T2ZNaW51dGVzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZlNlY29uZHMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5nZXRMaXN0T2ZIb3VyczEyKCk7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RUaW1lKHRpbWUgPSB0aGlzLnRpbWUpIHtcbiAgICBpZiAoISF0aW1lICYmIGlzVmFsaWRUaW1lKHRpbWUpKSB7XG4gICAgICBjb25zdCBob3VyID0gdGltZS5nZXRIb3VycygpID8/IDA7XG4gICAgICBjb25zdCBtaW51dGUgPSB0aW1lLmdldE1pbnV0ZXMoKSA/PyAwO1xuICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5zZWNvbmRzID8gdGltZS5nZXRTZWNvbmRzKCkgPz8gMCA6IDA7XG5cbiAgICAgIGNvbnN0IGNsb3Nlc3RTZWNvbmQgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mU2Vjb25kcywgc2Vjb25kKTtcbiAgICAgIGNvbnN0IGNsb3Nlc3RNaW51dGUgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mTWludXRlcywgbWludXRlKTtcbiAgICAgIGNvbnN0IGNsb3Nlc3RIb3VyID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZkhvdXJzLCBob3VyKTtcblxuICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLnNlY29uZHMgPyBjbG9zZXN0U2Vjb25kLnZhbHVlIDogMDtcbiAgICAgIHRoaXMubWludXRlID0gY2xvc2VzdE1pbnV0ZS52YWx1ZTtcbiAgICAgIHRoaXMuaG91ciA9IGNsb3Nlc3RIb3VyLnZhbHVlO1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3Nlc3RUaW1lKHRpbWVBcnJheTogSVRpbWVWYWx1ZVtdLCB0aW1lU2VnbWVudDogbnVtYmVyKSB7XG4gICAgbGV0IGFycmF5ID0gdGltZUFycmF5ID8/IFt7IHZhbHVlOiAwLCBsYWJlbDogJzAwJyB9XTtcbiAgICBpZiAodGhpcy50aW1lKSB7XG4gICAgICBhcnJheSA9IHRpbWVBcnJheS5maWx0ZXIoKGVsKSA9PiBlbC52YWx1ZSA+PSAwKTtcbiAgICAgIGFycmF5ID0gYXJyYXkubGVuZ3RoID8gYXJyYXkgOiB0aW1lQXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGE6IElUaW1lVmFsdWUsIGI6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhiLnZhbHVlIC0gdGltZVNlZ21lbnQpIDwgTWF0aC5hYnMoYS52YWx1ZSAtIHRpbWVTZWdtZW50KSA/IGIgOiBhO1xuICAgIH0pO1xuICB9XG5cbiAgbGlzdE9mVGltZVNlZ21lbnRzKFxuICAgIGdldExpc3RPZlRpbWVTZWdtZW50czogKFxuICAgICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgICBkYXRlVGltZUZvcm1hdE9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9uc1xuICAgICkgPT4gSVRpbWVWYWx1ZVtdLFxuICAgIGZpbHRlclRpbWVTZWdtZW50czogKCh0aW1lU2VnbWVudFZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGNvbnN0IGxpc3QgPSBnZXRMaXN0T2ZUaW1lU2VnbWVudHModGhpcy5sb2NhbGUsIHRoaXMuZGF0ZVRpbWVGb3JtYXRPcHRpb25zKS5maWx0ZXIoXG4gICAgICAoc2VnbWVudDogSVRpbWVWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGZpbHRlclRpbWVTZWdtZW50cyA9PT0gJ2Z1bmN0aW9uJyA/IGZpbHRlclRpbWVTZWdtZW50cyhzZWdtZW50LnZhbHVlKSA6IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gbGlzdC5sZW5ndGhcbiAgICAgICAgICAgPyBsaXN0XG4gICAgICAgICAgIDogZ2V0TGlzdE9mVGltZVNlZ21lbnRzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucykuc2xpY2UoMCwgMSk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoZGF5UGVyaW9kOiBEYXlQZXJpb2QpIHtcbiAgICBpZiAoZGF5UGVyaW9kICE9PSB0aGlzLmRheVBlcmlvZCkge1xuICAgICAgY29uc3QgaHJzID0gdGhpcy50aW1lPy5nZXRIb3VycygpID8/ICh0aGlzLmhvdXIgPCAwID8gMCA6IHRoaXMuaG91cik7XG4gICAgICBjb25zdCBob3VyID0gaHJzID4gMTIgPyBjb252ZXJ0MjRoVG8xMmgoaHJzKSA6IGNvbnZlcnQxMmhUbzI0aChkYXlQZXJpb2QsIGhycyk7XG4gICAgICB0aGlzLmhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpLnZhbHVlO1xuICAgICAgaWYgKGhvdXIgPj0gMCkge1xuICAgICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFRpbWVDaGFuZ2UodmFsdWU6IG51bWJlciwgc2VnbWVudDogJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJykge1xuICAgIHRoaXNbc2VnbWVudF0gPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgcGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCkge1xuICAgIGNvbnN0IGRheVBlcmlvZCA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdERheVBlcmlvZCcpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5kYXlQZXJpb2QgIT09IGRheVBlcmlvZCkge1xuICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICBzZWxlY3REYXlQZXJpb2Q6IHRoaXMuZGF5UGVyaW9kID8/ICdhbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBob3VycyA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdEhvdXJzJyk/LnZhbHVlO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RNaW51dGVzJyk/LnZhbHVlO1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RTZWNvbmRzJyk/LnZhbHVlO1xuICAgIGNvbnN0IGdvVXBkYXRlID1cbiAgICAgICh0aGlzLnNlY29uZCA8IDAgJiYgdGhpcy5taW51dGUgPCAwKSB8fFxuICAgICAgKHRoaXMuaG91ciA+PSAwICYmIHRoaXMubWludXRlID49IDAgJiYgdGhpcy5zZWNvbmQgPj0gMCk7XG4gICAgY29uc3QgdGltZUNoYW5nZWQgPSB0aGlzLmhvdXIgIT09IGhvdXJzIHx8IHRoaXMubWludXRlICE9PSBtaW51dGVzIHx8IHRoaXMuc2Vjb25kICE9PSBzZWNvbmRzO1xuICAgIGlmIChnb1VwZGF0ZSAmJiB0aW1lQ2hhbmdlZCkge1xuICAgICAgaWYgKHRoaXMuaG91ciAhPT0gaG91cnMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdEhvdXJzOiB0aGlzLmhvdXIgPz8gMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1pbnV0ZSAhPT0gbWludXRlcykge1xuICAgICAgICB0aGlzLnNlbGVjdFRpbWUucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgc2VsZWN0TWludXRlczogdGhpcy5taW51dGUgPz8gMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlY29uZCAhPT0gc2Vjb25kcykge1xuICAgICAgICB0aGlzLnNlbGVjdFRpbWUucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgc2VsZWN0U2Vjb25kczogdGhpcy5zZWNvbmQgPz8gMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0cmFja0J5SG91cihpbmRleDogbnVtYmVyLCBob3VyOiBJVGltZVZhbHVlKSB7XG4gICAgcmV0dXJuIGhvdXI7XG4gIH1cblxuICBvbkNoYW5nZSA9ICh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGltZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGhhbmRsZVRpbWVJbnB1dENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gJGV2ZW50LnRhcmdldD8udmFsdWU7XG4gICAgaWYgKCF2YWx1ZSB8fCAhaXNWYWxpZFRpbWUodmFsdWUpKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gY29udmVydFRpbWVUb0RhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSh0aW1lID8/IG5ldyBEYXRlKERhdGUubm93KCkpKTtcbiAgfVxuXG4gIGhhbmRsZUNsZWFyKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gIH1cblxuICBoYW5kbGVCbHVyKCRldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25SZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25CbHVyKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGhhbmRsZUZvY3VzKCRldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25SZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTtcbiAgfVxuXG4gIHNldENoYW5nZUhhbmRsZXJzKCkge1xuXG4gICAgaWYgKHRoaXMudmFyaWFudCAhPT0gJ3NlbGVjdCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RIb3VycycpPy52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0VGltZUNoYW5nZSg8bnVtYmVyPnZhbHVlLCAnaG91cicpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RNaW51dGVzJyk/LnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RUaW1lQ2hhbmdlKDxudW1iZXI+dmFsdWUsICdtaW51dGUnKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0U2Vjb25kcycpPy52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zZWNvbmRzKSxcbiAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdFRpbWVDaGFuZ2UoPG51bWJlcj52YWx1ZSwgJ3NlY29uZCcpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3REYXlQZXJpb2QnKT8udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaG91cjEyKSxcbiAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdERheVBlcmlvZENoYW5nZSg8RGF5UGVyaW9kPnZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCJAaWYgKHZhcmlhbnQgPT09ICdzZWxlY3QnKSB7XG4gIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwaWNrZXIgdGltZS1waWNrZXJcIj5cbiAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJzZWxlY3RUaW1lXCIgW25nQ2xhc3NdPVwidGltZVBpY2tlckNsYXNzZXNcIiBjbGFzcz1cInRpbWUtcGlja2VyLWJvZHlcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXBpY2tlci1pbmxpbmUtaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgPHNlbGVjdCAoYmx1cik9XCJvbkJsdXIoKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgIGNTZWxlY3QgY2xhc3M9XCJ0aW1lLXBpY2tlci1pbmxpbmUtc2VsZWN0IG1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RIb3Vyc1wiPlxuICAgICAgICAgIEBmb3IgKGhvdXIgb2YgbGlzdE9mSG91cnMxMjsgdHJhY2sgdHJhY2tCeUhvdXI7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8b3B0aW9uIFthdHRyLmRpc2FibGVkXT1cImhvdXIuZGlzYWJsZWQgfHwgbnVsbFwiIFtuZ1ZhbHVlXT1cImhvdXIudmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgaG91ci5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAge3sgJyA6JyB9fTxzZWxlY3QgKGJsdXIpPVwib25CbHVyKClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgW3NpemluZ109XCJzaXplID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY1NlbGVjdCBjbGFzcz1cInRpbWUtcGlja2VyLWlubGluZS1zZWxlY3QgbXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdE1pbnV0ZXNcIj5cbiAgICAgICAgQGZvciAobWludXRlIG9mIGxpc3RPZk1pbnV0ZXM7IHRyYWNrIHRyYWNrQnlIb3VyOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDxvcHRpb24gW2F0dHIuZGlzYWJsZWRdPVwibWludXRlLmRpc2FibGVkIHx8IG51bGxcIiBbbmdWYWx1ZV09XCJtaW51dGUudmFsdWVcIj5cbiAgICAgICAgICAgIHt7IG1pbnV0ZS5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgICAgQGlmIChzZWNvbmRzKSB7XG4gICAgICAgICAge3sgJyA6JyB9fTxzZWxlY3QgKGJsdXIpPVwib25CbHVyKClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgW3NpemluZ109XCJzaXplID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjU2VsZWN0IGNsYXNzPVwidGltZS1waWNrZXItaW5saW5lLXNlbGVjdCBtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0U2Vjb25kc1wiPlxuICAgICAgICAgICAgQGZvciAoc2Vjb25kIG9mIGxpc3RPZlNlY29uZHM7IHRyYWNrIHRyYWNrQnlIb3VyOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICA8b3B0aW9uIFthdHRyLmRpc2FibGVkXT1cInNlY29uZC5kaXNhYmxlZCB8fCBudWxsXCIgW25nVmFsdWVdPVwic2Vjb25kLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3sgc2Vjb25kLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaG91cjEyKSB7XG4gICAgICAgICAgPHNlbGVjdCAoYmx1cik9XCJvbkJsdXIoKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgY1NlbGVjdCBjbGFzcz1cInRpbWUtcGlja2VyLWlubGluZS1zZWxlY3QgbXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdERheVBlcmlvZFwiPlxuICAgICAgICAgICAgQGZvciAoZGF5UGVyaW9kIG9mIGRheVBlcmlvZHM7IHRyYWNrIGRheVBlcmlvZCkge1xuICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cImRheVBlcmlvZC52YWx1ZVwiIGNsYXNzPVwidGltZS1waWNrZXItcm9sbC1jZWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZGF5UGVyaW9kLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5AaWYgKHZhcmlhbnQgPT09ICdyb2xsJykge1xuICA8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIFtuZ0NsYXNzXT1cInRpbWVQaWNrZXJDbGFzc2VzXCIgW3Zpc2libGVdPVwidmlzaWJsZVwiPlxuICAgIDxkaXYgW2NhcmV0XT1cImZhbHNlXCIgY0Ryb3Bkb3duVG9nZ2xlIGNsYXNzPVwidGltZS1waWNrZXItaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxpbnB1dCAoYmx1cik9XCJoYW5kbGVCbHVyKCRldmVudCk7XCJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVRpbWVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPz8gZHJvcGRvd24udmlzaWJsZSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgW2F0dHIucGF0dGVybl09XCJob3VyMTIgPyAnKCgoMFsxLTldKXwoMVswLTJdKSk6KFswLTVdKShbMC05XSlcXFxccyhBfFApTSknIDogJyhbMDFdP1swLTldfDJbMC0zXSk6WzAtNV1bMC05XSdcIlxuICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGltZUlucHV0XCJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5ID8/IG51bGxcIlxuICAgICAgICAgICAgIGNsYXNzPVwidGltZS1waWNrZXItaW5wdXRcIlxuICAgICAgPlxuICAgICAgQGlmIChpbmRpY2F0b3IpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjbGVhbmVyICYmIHRpbWUgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiBoYW5kbGVDbGVhcigkZXZlbnQpXCIgY2xhc3M9XCJ0aW1lLXBpY2tlci1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgI2Ryb3Bkb3duTWVudT1cImNEcm9wZG93bk1lbnVcIiBjRHJvcGRvd25NZW51IGNsYXNzPVwidGltZS1waWNrZXItZHJvcGRvd24gcHktMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWJvZHkgdGltZS1waWNrZXItcm9sbFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxuICAgICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3RUaW1lQ2hhbmdlKCRldmVudCwgJ2hvdXInKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mSG91cnMxMlwiXG4gICAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJob3VyXCJcbiAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdFRpbWVDaGFuZ2UoJGV2ZW50LCAnbWludXRlJylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW2VsZW1lbnRzXT1cImxpc3RPZk1pbnV0ZXNcIlxuICAgICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwibWludXRlXCJcbiAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoc2Vjb25kcykge1xuICAgICAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0VGltZUNoYW5nZSgkZXZlbnQsICdzZWNvbmQnKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2VsZW1lbnRzXT1cImxpc3RPZlNlY29uZHNcIlxuICAgICAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlY29uZFwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGhvdXIxMikge1xuICAgICAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtYW0tcG1cbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2VsZW1lbnRzXT1cImRheVBlcmlvZHNcIlxuICAgICAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImRheVBlcmlvZFwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKHRlbXBsYXRlcz8udGltZVBpY2tlckZvb3Rlcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItZm9vdGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcz8udGltZVBpY2tlckZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvYy1kcm9wZG93bj5cbn1cbiJdfQ==