@skyux/datetime 9.0.0-alpha.9 → 9.0.0-beta.1
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.
- package/documentation.json +438 -438
- package/esm2022/lib/modules/date-range-picker/date-range-picker.component.mjs +3 -3
- package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +2 -2
- package/esm2022/lib/modules/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/lib/modules/datepicker/daypicker.component.mjs +3 -3
- package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +3 -3
- package/esm2022/lib/modules/datepicker/yearpicker.component.mjs +3 -3
- package/esm2022/lib/modules/timepicker/timepicker.component.mjs +3 -3
- package/fesm2022/skyux-datetime.mjs +14 -14
- package/fesm2022/skyux-datetime.mjs.map +1 -1
- package/package.json +8 -8
@@ -352,11 +352,11 @@ export class SkyTimepickerComponent {
|
|
352
352
|
this.#overlayKeydownListener?.unsubscribe();
|
353
353
|
}
|
354
354
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
355
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon icon=\"clock\" size=\"lg\"></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonClick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol li button.sky-btn-active:hover,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active{background-color:var(--sky-background-color-input-selected)}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
356
356
|
}
|
357
357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
|
358
358
|
type: Component,
|
359
|
-
args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon
|
359
|
+
args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon icon=\"clock\" size=\"lg\"></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonClick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol li button.sky-btn-active:hover,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active{background-color:var(--sky-background-color-input-selected)}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"] }]
|
360
360
|
}], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{
|
361
361
|
type: Optional
|
362
362
|
}] }, { type: i3.SkyThemeService, decorators: [{
|
@@ -396,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
396
396
|
static: true,
|
397
397
|
}]
|
398
398
|
}] } });
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsR0FPdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBUUgsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcs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QkFBbUI7c0JBRHpCLE1BQU07Z0JBOEhJLGFBQWE7c0JBSHZCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBaUNNLHFCQUFxQjtzQkFIM0IsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRTt3QkFDbEMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1NLGdCQUFnQjtzQkFIdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU9NLGdCQUFnQjtzQkFKdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLHdCQUF3QjtzQkFKOUIsU0FBUzt1QkFBQywwQkFBMEIsRUFBRTt3QkFDckMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdmFsdWUgaW4gdGhlIHRpbWVwaWNrZXIgaW5wdXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRUaW1lQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4oKTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSG91cihzZXRIb3VyOiBudW1iZXIpIHtcbiAgICBsZXQgaG91ck9mZnNldCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyAmJiBzZXRIb3VyID09PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IC0xMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyAmJiBzZXRIb3VyICE9PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5pczg2MDEpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgIH1cbiAgICBjb25zdCBob3VyID0gbW9tZW50KHsgaG91cjogc2V0SG91ciB9KS5hZGQoaG91ck9mZnNldCwgJ2hvdXJzJykuaG91cigpO1xuXG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IGhvdXIsXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnbWludXRlJykgKyAwLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIb3VyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ2gnKSwgMCkgfHwgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSArIDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZE1lcmlkaWVzKG1lcmlkaWVzOiBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIGlmIChtZXJpZGllcy50cmltKCkgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5hZGQoMTIsICdob3VycycpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1lcmlkaWVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGltZSkge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWludXRlKG1pbnV0ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnaG91cicpICsgMCxcbiAgICAgIG1pbnV0ZTogbWludXRlLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRNaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCkgKyAwO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFRpbWUobmV3VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5ld1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3VGltZS5sb2NhbCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbmV3VGltZS5pc284NjAxO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVGltZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICBob3VyOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCksXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLm1pbnV0ZSgpLFxuICAgICAgbWVyaWRpZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyksXG4gICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgIGlzbzg2MDE6IHRoaXMuYWN0aXZlVGltZSxcbiAgICAgIGxvY2FsOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQodGhpcy5sb2NhbGVGb3JtYXQpLFxuICAgICAgY3VzdG9tRm9ybWF0OlxuICAgICAgICB0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgPyB0aGlzLnJldHVybkZvcm1hdFxuICAgICAgICAgIDogdGhpcy5sb2NhbGVGb3JtYXQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aW1lO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBtaW51dGVNdWx0aXBsaWVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0aW1lRm9ybWF0OiBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgPSAnaGgnO1xuXG4gIHB1YmxpYyB0aW1lcGlja2VySWQ6IHN0cmluZztcblxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvbklkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgndGltZXBpY2tlclJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgc2V0IHRpbWVwaWNrZXJSZWYodmFsdWU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI190aW1lcGlja2VyUmVmID0gdmFsdWU7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlclJlZikge1xuICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAgICcuc2t5LXRpbWVwaWNrZXItY29udGVudCcsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpbWVwaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190aW1lcGlja2VyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGltZXBpY2tlclRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBwdWJsaWMgdGltZXBpY2tlclRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXlkb3duTGlzdGVuZXI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI190aW1lcGlja2VyUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAjb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlO1xuICAjekluZGV4OiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTZXJ2aWNlPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoU0tZX1NUQUNLSU5HX0NPTlRFWFQpXG4gICAgc3RhY2tpbmdDb250ZXh0PzogU2t5U3RhY2tpbmdDb250ZXh0XG4gICkge1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICB0aGlzLiN6SW5kZXggPSBzdGFja2luZ0NvbnRleHQ/LnpJbmRleDtcblxuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy50aW1lcGlja2VySWQgPSBgc2t5LXRpbWVwaWNrZXItJHt1bmlxdWVJZH1gO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvbklkID0gYHNreS10aW1lcGlja2VyLWJ1dHRvbi0ke3VuaXF1ZUlkfWA7XG5cbiAgICAvLyBVcGRhdGUgaWNvbnMgd2hlbiB0aGVtZSBjaGFuZ2VzLlxuICAgIHRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICB0aGlzLiNhZGRLZXlkb3duTGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UgJiYgdGhpcy5pbnB1dFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy50cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdChmb3JtYXQ6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSk6IHZvaWQge1xuICAgIGxldCBoID0gMTI7XG4gICAgbGV0IG0gPSAxMjtcbiAgICBsZXQgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgbGV0IGxvY2FsZUZvcm1hdCA9ICdoOm1tIEEnO1xuICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgIGggPSAxMjtcbiAgICAgIG0gPSAxMjtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSA1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgICB0aGlzLmlzODYwMSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICBoID0gMjQ7XG4gICAgICBtID0gNDtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSAxNTtcbiAgICAgIGxvY2FsZUZvcm1hdCA9ICdISDptbSc7XG4gICAgICB0aGlzLmlzODYwMSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YToge1xuICAgICAgaG91cnM6IG51bWJlcltdO1xuICAgICAgbWludXRlczogbnVtYmVyW107XG4gICAgICBsb2NhbGVGb3JtYXQ6IHN0cmluZztcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXI6IG51bWJlcjtcbiAgICB9ID0ge1xuICAgICAgLy8gQ3JlYXRlIGEgc3BhcnNlIGFycmF5IHdpdGggYSBsZW5ndGggZXF1YWwgdG8gdGhlIGhvdXIuXG4gICAgICBob3VyczogQXJyYXkoLi4uQXJyYXkoaCkpLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICAgICAgcmV0dXJuICsraTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSksXG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgbWludXRlLlxuICAgICAgbWludXRlczogQXJyYXkoLi4uQXJyYXkobSkpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gaSAqIG1pbnV0ZU11bHRpcGxpZXI7XG4gICAgICB9KSxcbiAgICAgIGxvY2FsZUZvcm1hdDogbG9jYWxlRm9ybWF0LFxuICAgICAgbWludXRlTXVsdGlwbGllcjogbWludXRlTXVsdGlwbGllcixcbiAgICB9O1xuXG4gICAgdGhpcy5ob3VycyA9IGRhdGEuaG91cnM7XG4gICAgdGhpcy5taW51dGVzID0gZGF0YS5taW51dGVzO1xuICAgIHRoaXMubG9jYWxlRm9ybWF0ID0gZGF0YS5sb2NhbGVGb3JtYXQ7XG4gICAgdGhpcy5taW51dGVNdWx0aXBsaWVyID0gZGF0YS5taW51dGVNdWx0aXBsaWVyO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyUmVmICYmIHRoaXMudHJpZ2dlckJ1dHRvblJlZikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMudGltZXBpY2tlclJlZik7XG5cbiAgICAgIC8vIEhpZGUgdGltZXBpY2tlciB3aGVuIHRyaWdnZXIgYnV0dG9uIGlzIHNjcm9sbGVkIG9mZiBzY3JlZW4uXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuI3pJbmRleCkge1xuICAgICAgICB0aGlzLiN6SW5kZXhcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy4jYWRkS2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy50aW1lcGlja2VyVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLiNvdmVybGF5ID0gb3ZlcmxheTtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMuI292ZXJsYXkpO1xuICAgICAgdGhpcy4jb3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjYWRkS2V5ZG93bkxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuI292ZXJsYXlLZXlkb3duTGlzdGVuZXIgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICB3aW5kb3cuZG9jdW1lbnQsXG4gICAgICAna2V5ZG93bidcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuI292ZXJsYXlLZXlkb3duTGlzdGVuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFNlcnZpY2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0blwiPlxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktaW5wdXQtZ3JvdXAtdGltZXBpY2tlci1idG5cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzT3BlbiA/IHRpbWVwaWNrZXJJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgID5cbiAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJjbG9jay1vXCIgc2l6ZT1cImxnXCI+PC9za3ktaWNvbj5cbiAgICAgIDxza3ktaWNvblxuICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgaWNvbj1cImNsb2NrXCJcbiAgICAgICAgc2l6ZT1cImxnXCJcbiAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpbWVwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGFpbmVyIHNreS1zaGFkb3cgc2t5LWJveCBza3ktZWxldmF0aW9uLTRcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgIFthdHRyLmlkXT1cInRpbWVwaWNrZXJJZFwiXG4gICAgW2NsYXNzLnNreS10aW1lcGlja2VyLWhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjdGltZXBpY2tlclJlZlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbnRlbnRcIj5cbiAgICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LXRpbWVwaWNrZXItMjRob3VyJzogaXM4NjAxIH1cIlxuICAgICAgPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJob3VyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRIb3VyID09PSBob3VyIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW51dGVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1pbnV0ZSA9PT0gbWludXRlIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJzAwJy5zdWJzdHJpbmcoMCwgMiAtIG1pbnV0ZS50b1N0cmluZygpLmxlbmd0aCkgKyBtaW51dGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpczg2MDFcIiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtblwiPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBuYW1lPVwibWVyaWRpZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBTVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtZXJpZGllXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFBNXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbG9zZUJ1dHRvbkNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3NreXV4X3RpbWVwaWNrZXJfY2xvc2UnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsR0FPdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBUUgsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcs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QkFBbUI7c0JBRHpCLE1BQU07Z0JBOEhJLGFBQWE7c0JBSHZCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBaUNNLHFCQUFxQjtzQkFIM0IsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRTt3QkFDbEMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1NLGdCQUFnQjtzQkFIdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU9NLGdCQUFnQjtzQkFKdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLHdCQUF3QjtzQkFKOUIsU0FBUzt1QkFBQywwQkFBMEIsRUFBRTt3QkFDckMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdmFsdWUgaW4gdGhlIHRpbWVwaWNrZXIgaW5wdXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRUaW1lQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4oKTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSG91cihzZXRIb3VyOiBudW1iZXIpIHtcbiAgICBsZXQgaG91ck9mZnNldCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyAmJiBzZXRIb3VyID09PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IC0xMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyAmJiBzZXRIb3VyICE9PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5pczg2MDEpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgIH1cbiAgICBjb25zdCBob3VyID0gbW9tZW50KHsgaG91cjogc2V0SG91ciB9KS5hZGQoaG91ck9mZnNldCwgJ2hvdXJzJykuaG91cigpO1xuXG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IGhvdXIsXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnbWludXRlJykgKyAwLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIb3VyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ2gnKSwgMCkgfHwgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSArIDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZE1lcmlkaWVzKG1lcmlkaWVzOiBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIGlmIChtZXJpZGllcy50cmltKCkgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5hZGQoMTIsICdob3VycycpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1lcmlkaWVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGltZSkge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWludXRlKG1pbnV0ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnaG91cicpICsgMCxcbiAgICAgIG1pbnV0ZTogbWludXRlLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRNaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCkgKyAwO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFRpbWUobmV3VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5ld1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3VGltZS5sb2NhbCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbmV3VGltZS5pc284NjAxO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVGltZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICBob3VyOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCksXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLm1pbnV0ZSgpLFxuICAgICAgbWVyaWRpZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyksXG4gICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgIGlzbzg2MDE6IHRoaXMuYWN0aXZlVGltZSxcbiAgICAgIGxvY2FsOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQodGhpcy5sb2NhbGVGb3JtYXQpLFxuICAgICAgY3VzdG9tRm9ybWF0OlxuICAgICAgICB0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgPyB0aGlzLnJldHVybkZvcm1hdFxuICAgICAgICAgIDogdGhpcy5sb2NhbGVGb3JtYXQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aW1lO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBtaW51dGVNdWx0aXBsaWVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0aW1lRm9ybWF0OiBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgPSAnaGgnO1xuXG4gIHB1YmxpYyB0aW1lcGlja2VySWQ6IHN0cmluZztcblxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvbklkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgndGltZXBpY2tlclJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgc2V0IHRpbWVwaWNrZXJSZWYodmFsdWU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI190aW1lcGlja2VyUmVmID0gdmFsdWU7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlclJlZikge1xuICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAgICcuc2t5LXRpbWVwaWNrZXItY29udGVudCcsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpbWVwaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190aW1lcGlja2VyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGltZXBpY2tlclRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBwdWJsaWMgdGltZXBpY2tlclRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXlkb3duTGlzdGVuZXI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI190aW1lcGlja2VyUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAjb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlO1xuICAjekluZGV4OiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTZXJ2aWNlPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoU0tZX1NUQUNLSU5HX0NPTlRFWFQpXG4gICAgc3RhY2tpbmdDb250ZXh0PzogU2t5U3RhY2tpbmdDb250ZXh0XG4gICkge1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICB0aGlzLiN6SW5kZXggPSBzdGFja2luZ0NvbnRleHQ/LnpJbmRleDtcblxuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy50aW1lcGlja2VySWQgPSBgc2t5LXRpbWVwaWNrZXItJHt1bmlxdWVJZH1gO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvbklkID0gYHNreS10aW1lcGlja2VyLWJ1dHRvbi0ke3VuaXF1ZUlkfWA7XG5cbiAgICAvLyBVcGRhdGUgaWNvbnMgd2hlbiB0aGVtZSBjaGFuZ2VzLlxuICAgIHRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICB0aGlzLiNhZGRLZXlkb3duTGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UgJiYgdGhpcy5pbnB1dFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy50cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdChmb3JtYXQ6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSk6IHZvaWQge1xuICAgIGxldCBoID0gMTI7XG4gICAgbGV0IG0gPSAxMjtcbiAgICBsZXQgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgbGV0IGxvY2FsZUZvcm1hdCA9ICdoOm1tIEEnO1xuICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgIGggPSAxMjtcbiAgICAgIG0gPSAxMjtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSA1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgICB0aGlzLmlzODYwMSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICBoID0gMjQ7XG4gICAgICBtID0gNDtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSAxNTtcbiAgICAgIGxvY2FsZUZvcm1hdCA9ICdISDptbSc7XG4gICAgICB0aGlzLmlzODYwMSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YToge1xuICAgICAgaG91cnM6IG51bWJlcltdO1xuICAgICAgbWludXRlczogbnVtYmVyW107XG4gICAgICBsb2NhbGVGb3JtYXQ6IHN0cmluZztcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXI6IG51bWJlcjtcbiAgICB9ID0ge1xuICAgICAgLy8gQ3JlYXRlIGEgc3BhcnNlIGFycmF5IHdpdGggYSBsZW5ndGggZXF1YWwgdG8gdGhlIGhvdXIuXG4gICAgICBob3VyczogQXJyYXkoLi4uQXJyYXkoaCkpLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICAgICAgcmV0dXJuICsraTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSksXG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgbWludXRlLlxuICAgICAgbWludXRlczogQXJyYXkoLi4uQXJyYXkobSkpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gaSAqIG1pbnV0ZU11bHRpcGxpZXI7XG4gICAgICB9KSxcbiAgICAgIGxvY2FsZUZvcm1hdDogbG9jYWxlRm9ybWF0LFxuICAgICAgbWludXRlTXVsdGlwbGllcjogbWludXRlTXVsdGlwbGllcixcbiAgICB9O1xuXG4gICAgdGhpcy5ob3VycyA9IGRhdGEuaG91cnM7XG4gICAgdGhpcy5taW51dGVzID0gZGF0YS5taW51dGVzO1xuICAgIHRoaXMubG9jYWxlRm9ybWF0ID0gZGF0YS5sb2NhbGVGb3JtYXQ7XG4gICAgdGhpcy5taW51dGVNdWx0aXBsaWVyID0gZGF0YS5taW51dGVNdWx0aXBsaWVyO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyUmVmICYmIHRoaXMudHJpZ2dlckJ1dHRvblJlZikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMudGltZXBpY2tlclJlZik7XG5cbiAgICAgIC8vIEhpZGUgdGltZXBpY2tlciB3aGVuIHRyaWdnZXIgYnV0dG9uIGlzIHNjcm9sbGVkIG9mZiBzY3JlZW4uXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuI3pJbmRleCkge1xuICAgICAgICB0aGlzLiN6SW5kZXhcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy4jYWRkS2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy50aW1lcGlja2VyVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLiNvdmVybGF5ID0gb3ZlcmxheTtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMuI292ZXJsYXkpO1xuICAgICAgdGhpcy4jb3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjYWRkS2V5ZG93bkxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuI292ZXJsYXlLZXlkb3duTGlzdGVuZXIgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICB3aW5kb3cuZG9jdW1lbnQsXG4gICAgICAna2V5ZG93bidcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuI292ZXJsYXlLZXlkb3duTGlzdGVuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFNlcnZpY2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0blwiPlxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktaW5wdXQtZ3JvdXAtdGltZXBpY2tlci1idG5cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzT3BlbiA/IHRpbWVwaWNrZXJJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwiY2xvY2tcIiBzaXplPVwibGdcIj48L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGltZXBpY2tlclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb250YWluZXIgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tNFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIuaWRdPVwidGltZXBpY2tlcklkXCJcbiAgICBbY2xhc3Muc2t5LXRpbWVwaWNrZXItaGlkZGVuXT1cIiFpc1Zpc2libGVcIlxuICAgICN0aW1lcGlja2VyUmVmXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGVudFwiPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktdGltZXBpY2tlci0yNGhvdXInOiBpczg2MDEgfVwiXG4gICAgICA+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cImhvdXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZEhvdXIgPT09IGhvdXIgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBob3VyIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWludXRlID09PSBtaW51dGUgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnMDAnLnN1YnN0cmluZygwLCAyIC0gbWludXRlLnRvU3RyaW5nKCkubGVuZ3RoKSArIG1pbnV0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzODYwMVwiIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtZXJpZGllXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFNXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnUE0nIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUE1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWZvb3RlclwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnc2t5dXhfdGltZXBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|