mis-crystal-design-system 18.1.5 → 18.1.6-test-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/dynamic-form/dynamic-form.component.d.ts +15 -0
- package/esm2022/dynamic-form/dynamic-form.component.mjs +193 -78
- package/esm2022/slider/slider.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/timepicker/timepicker.component.mjs +16 -10
- package/esm2022/timerangepicker/timerangepicker.component.mjs +8 -6
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +192 -77
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +15 -9
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +7 -5
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/package.json +17 -17
- package/timepicker/timepicker.component.d.ts +3 -1
- package/timerangepicker/timerangepicker.component.d.ts +3 -1
- package/button/button.directive.scss +0 -71
- package/drawer/drawer.scss +0 -20
- package/input/mis-input.component.scss +0 -187
- package/modal/modal.scss +0 -9
- package/styles/fonts/icomoon.eot +0 -0
- package/styles/fonts/icomoon.svg +0 -315
- package/styles/fonts/icomoon.ttf +0 -0
- package/styles/fonts/icomoon.woff +0 -0
- package/styles/mis-borders-backgrounds.scss +0 -764
- package/styles/mis-color-constants.scss +0 -353
- package/styles/mis-flex.scss +0 -321
- package/styles/mis-fonts.scss +0 -124
- package/styles/mis-icons.scss +0 -1054
- package/styles/mis-mixins.scss +0 -46
- package/styles/mis-old-icon-styles.scss +0 -498
- package/styles/mis-spacing-sizing.scss +0 -2590
- package/styles/mis-typography.scss +0 -462
|
@@ -44,6 +44,8 @@ export class TimeRangePickerComponent {
|
|
|
44
44
|
this.gap = input('1rem');
|
|
45
45
|
this.disableStartTime = input(false);
|
|
46
46
|
this.disableEndTime = input(false);
|
|
47
|
+
this.fontSize = input("14px");
|
|
48
|
+
this.disableUserInput = input(false);
|
|
47
49
|
// --- Output Signal ---
|
|
48
50
|
this.timeRangeEmitter = output();
|
|
49
51
|
// --- Internal Writable Signals ---
|
|
@@ -258,7 +260,7 @@ export class TimeRangePickerComponent {
|
|
|
258
260
|
}
|
|
259
261
|
}
|
|
260
262
|
static { this.ɵfac = function TimeRangePickerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeRangePickerComponent)(); }; }
|
|
261
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimeRangePickerComponent, selectors: [["mis-timerangepicker"]], inputs: { inputWidth: [1, "inputWidth"], dropdownWidth: [1, "dropdownWidth"], height: [1, "height"], timezone: [1, "timezone"], startDateEpoch: [1, "startDateEpoch"], endDateEpoch: [1, "endDateEpoch"], givenStartTime: [1, "givenStartTime"], givenEndTime: [1, "givenEndTime"], clockFormat: [1, "clockFormat"], interval: [1, "interval"], showTooltip: [1, "showTooltip"], direction: [1, "direction"], gap: [1, "gap"], disableStartTime: [1, "disableStartTime"], disableEndTime: [1, "disableEndTime"] }, outputs: { timeRangeEmitter: "timeRangeEmitter" }, decls: 4, vars:
|
|
263
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimeRangePickerComponent, selectors: [["mis-timerangepicker"]], inputs: { inputWidth: [1, "inputWidth"], dropdownWidth: [1, "dropdownWidth"], height: [1, "height"], timezone: [1, "timezone"], startDateEpoch: [1, "startDateEpoch"], endDateEpoch: [1, "endDateEpoch"], givenStartTime: [1, "givenStartTime"], givenEndTime: [1, "givenEndTime"], clockFormat: [1, "clockFormat"], interval: [1, "interval"], showTooltip: [1, "showTooltip"], direction: [1, "direction"], gap: [1, "gap"], disableStartTime: [1, "disableStartTime"], disableEndTime: [1, "disableEndTime"], fontSize: [1, "fontSize"], disableUserInput: [1, "disableUserInput"] }, outputs: { timeRangeEmitter: "timeRangeEmitter" }, decls: 4, vars: 33, consts: [[1, "rangepicker-container", 3, "ngStyle"], [3, "timeEmitter", "clockFormat", "interval", "dateAsEpoch", "firstInterval", "timezone", "height", "inputWidth", "dropdownWidth", "showTooltip", "givenTime", "disable", "disableUserInput", "fontSize"], [4, "ngIf"], [3, "timeEmitter", "clockFormat", "interval", "dateAsEpoch", "firstInterval", "rangeValidity", "timezone", "height", "inputWidth", "dropdownWidth", "showTooltip", "givenTime", "triggerChange", "disable", "disableUserInput", "fontSize"]], template: function TimeRangePickerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
262
264
|
i0.ɵɵelementStart(0, "div", 0)(1, "mis-timepicker", 1);
|
|
263
265
|
i0.ɵɵlistener("timeEmitter", function TimeRangePickerComponent_Template_mis_timepicker_timeEmitter_1_listener($event) { return ctx.startPickerHandler($event); });
|
|
264
266
|
i0.ɵɵelementEnd();
|
|
@@ -267,18 +269,18 @@ export class TimeRangePickerComponent {
|
|
|
267
269
|
i0.ɵɵlistener("timeEmitter", function TimeRangePickerComponent_Template_mis_timepicker_timeEmitter_3_listener($event) { return ctx.endPickerHandler($event); });
|
|
268
270
|
i0.ɵɵelementEnd()();
|
|
269
271
|
} if (rf & 2) {
|
|
270
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(
|
|
272
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(30, _c0, ctx.direction(), ctx.gap()));
|
|
271
273
|
i0.ɵɵadvance();
|
|
272
|
-
i0.ɵɵproperty("clockFormat", ctx.clockFormat())("interval", ctx.interval())("dateAsEpoch", ctx.startDateEpoch())("firstInterval", ctx.firstIntervals().start)("timezone", ctx.timezone())("height", ctx.height())("inputWidth", ctx.inputWidth())("dropdownWidth", ctx.dropdownWidth())("showTooltip", ctx.showTooltip())("givenTime", ctx.givenStartTime())("disable", ctx.disableStartTime());
|
|
274
|
+
i0.ɵɵproperty("clockFormat", ctx.clockFormat())("interval", ctx.interval())("dateAsEpoch", ctx.startDateEpoch())("firstInterval", ctx.firstIntervals().start)("timezone", ctx.timezone())("height", ctx.height())("inputWidth", ctx.inputWidth())("dropdownWidth", ctx.dropdownWidth())("showTooltip", ctx.showTooltip())("givenTime", ctx.givenStartTime())("disable", ctx.disableStartTime())("disableUserInput", ctx.disableUserInput())("fontSize", ctx.fontSize());
|
|
273
275
|
i0.ɵɵadvance();
|
|
274
276
|
i0.ɵɵproperty("ngIf", ctx.direction() === "row");
|
|
275
277
|
i0.ɵɵadvance();
|
|
276
|
-
i0.ɵɵproperty("clockFormat", ctx.clockFormat())("interval", ctx.interval())("dateAsEpoch", ctx.endDateEpoch())("firstInterval", ctx.firstIntervals().end)("rangeValidity", ctx.rangeValidity())("timezone", ctx.timezone())("height", ctx.height())("inputWidth", ctx.inputWidth())("dropdownWidth", ctx.dropdownWidth())("showTooltip", ctx.showTooltip())("givenTime", ctx.givenEndTime())("triggerChange", ctx.triggerChange())("disable", ctx.disableEndTime());
|
|
278
|
+
i0.ɵɵproperty("clockFormat", ctx.clockFormat())("interval", ctx.interval())("dateAsEpoch", ctx.endDateEpoch())("firstInterval", ctx.firstIntervals().end)("rangeValidity", ctx.rangeValidity())("timezone", ctx.timezone())("height", ctx.height())("inputWidth", ctx.inputWidth())("dropdownWidth", ctx.dropdownWidth())("showTooltip", ctx.showTooltip())("givenTime", ctx.givenEndTime())("triggerChange", ctx.triggerChange())("disable", ctx.disableEndTime())("disableUserInput", ctx.disableUserInput())("fontSize", ctx.fontSize());
|
|
277
279
|
} }, dependencies: [i1.NgIf, i1.NgStyle, i2.TimePickerComponent], styles: [".rangepicker-container[_ngcontent-%COMP%]{display:flex;gap:1rem;align-items:center}p[_ngcontent-%COMP%]{margin:0;display:inline-flex;align-items:center}"] }); }
|
|
278
280
|
}
|
|
279
281
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeRangePickerComponent, [{
|
|
280
282
|
type: Component,
|
|
281
|
-
args: [{ selector: "mis-timerangepicker", template: "<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n ></mis-timepicker>\n</div>\n\n", styles: [".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}\n"] }]
|
|
283
|
+
args: [{ selector: "mis-timerangepicker", template: "<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n</div>\n\n", styles: [".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}\n"] }]
|
|
282
284
|
}], () => [], null); })();
|
|
283
285
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeRangePickerComponent, { className: "TimeRangePickerComponent" }); })();
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUNXakMseUJBQWlDO0lBQUEsaUJBQUM7SUFBQSxpQkFBSTs7QURUeEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBT3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFnQ25DLDZFQUE2RTtJQUNyRSxhQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZ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Qjs7a0ZBSXBCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsIC8vIENvcnJlY3RlZCBmaWxlIG5hbWVcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAtLS0gSW5wdXQgU2lnbmFscyAocmVhZC1vbmx5KSAtLS1cbiAgaW5wdXRXaWR0aCA9IGlucHV0PHN0cmluZz4oXCIxMDBweFwiKTtcbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIjQ2cHhcIik7XG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgc3RhcnREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZW5kRGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGdpdmVuU3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBnaXZlbkVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNsb2NrRm9ybWF0ID0gaW5wdXQ8bnVtYmVyPigxMik7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpcmVjdGlvbiA9IGlucHV0PFREaXJlY3Rpb24+KCdyb3cnKTtcbiAgZ2FwID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuICBkaXNhYmxlU3RhcnRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlRW5kVGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgXG4gIC8vIC0tLSBPdXRwdXQgU2lnbmFsIC0tLVxuICB0aW1lUmFuZ2VFbWl0dGVyID0gb3V0cHV0PElUaW1lUmFuZ2U+KCk7XG5cbiAgLy8gLS0tIEludGVybmFsIFdyaXRhYmxlIFNpZ25hbHMgLS0tXG4gIHN0YXJ0VGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICBlbmRUaW1lID0gc2lnbmFsPElUaW1lIHwgbnVsbD4obnVsbCk7XG4gIHJhbmdlVmFsaWRpdHkgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHRyaWdnZXJDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2ZpcnN0SW50ZXJ2YWxzID0gc2lnbmFsPHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfT4oeyBzdGFydDogMCwgZW5kOiAwIH0pO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gIC8vIC0tLSBDb21wdXRlZCBTaWduYWxzIChEZXJpdmVkIFN0YXRlKSAtLS1cbiAgZmlyc3RJbnRlcnZhbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maXJzdEludGVydmFscygpKTsgLy8gQSBwdWJsaWMgY29tcHV0ZWQgc2lnbmFsIHRvIGFjY2VzcyB0aGUgd3JpdGFibGUgb25lXG4gIFxuICAvLyBIZWxwZXIgbWV0aG9kcyBpbnN0ZWFkIG9mIGNvbXB1dGVkIHNpZ25hbHMgdG8gYXZvaWQgc2lnbmFsIHdyaXRlIGNvbmZsaWN0c1xuICBwcml2YXRlIGdldFRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICB9XG4gIFxuICBwcml2YXRlIGdldFN0YXJ0RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRFbmREYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRDdXJyRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNpbXBsZSBjb25zdHJ1Y3RvciAtIG5vIGVmZmVjdHMgaGVyZVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IHRydWU7XG4gICAgXG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICAgIGNvbnN0IGZpcnN0SW50ZXJ2YWxzID0gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICBlcG9jaDogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRW5zdXJlIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgbGV0IGVuZFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLmVuZDtcbiAgICBjb25zdCBzdGFydFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0O1xuICAgIFxuICAgIC8vIElmIGVuZCB0aW1lIGlzIHNhbWUgb3IgYmVmb3JlIHN0YXJ0IHRpbWUsIGFkZCBvbmUgaW50ZXJ2YWwgdG8gZW5kIHRpbWVcbiAgICBpZiAoZW5kVGltZUVwb2NoIDw9IHN0YXJ0VGltZUVwb2NoKSB7XG4gICAgICBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCAnbScpLnZhbHVlT2YoKTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byByZWZsZWN0IHRoZSBhZGp1c3RlZCBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHtcbiAgICAgICAgc3RhcnQ6IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LFxuICAgICAgICBlbmQ6IGVuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBkYXlqcy50eihlbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBlbmRUaW1lRXBvY2hcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHByaXZhdGUgc2V0Rmlyc3RJbnRlcnZhbHMoKTogdm9pZCB7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyO1xuICAgIGxldCBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXI7XG5cbiAgICBjb25zdCBtaW51dGVzID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAobWludXRlcyAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIGlmKCB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEN1cnJEYXRlKCkgKXtcbiAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgaWYoY3VycmVudFRpbWUgPj0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gY3VycmVudFRpbWU7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgICAgLy8gRm9yIHNhbWUgZGF0ZSwgZW5kIHBpY2tlciBzaG91bGQgc3RhcnQgZnJvbSBiZWdpbm5pbmcgb2YgZGF5IHRvIGF2b2lkIHZhbGlkYXRpb24gaXNzdWVzXG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSE7XG4gICAgfVxuICAgIFxuICAgIGlmKHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZSgpITtcbiAgICB9XG4gICAgICBcbiAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBzdGFydDogZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyLCBlbmQ6IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgfSk7XG4gIH1cblxuICAvLyAtLS0gUHVibGljIE1ldGhvZHMgLS0tXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHRpbWUpO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eS5zZXQodHJ1ZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgc3RhcnQgdGltZSBlcG9jaCBmb3IgY29tcGFyaXNvblxuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgY29uc3QgZW5kVGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIC8vIEF1dG8tYWRqdXN0IGVuZCB0aW1lIGlmIHN0YXJ0IHRpbWUgPiBlbmQgdGltZSAoZm9yIGJvdGggc2FtZSBhbmQgZGlmZmVyZW50IGRhdGVzKVxuICAgIC8vIFRoaXMgZW5zdXJlcyBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGlmIChzdGFydFRpbWVFcG9jaCA+IGVuZFRpbWVFcG9jaCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBlbmQgdGltZSBhcyBzdGFydCB0aW1lICsgaW50ZXJ2YWxcbiAgICAgIGxldCBuZXdFbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBJZiBzYW1lIGRhdGUsIGNoZWNrIGlmIHRoZSBuZXcgZW5kIHRpbWUgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXlcbiAgICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV3RW5kVGltZUVwb2NoID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICAvLyBTZXQgZW5kIHRpbWUgdG8gMTE6NTkgUE0gKGVuZCBvZiBkYXkpIHdoZW4gc3RhcnQgdGltZSBpcyBsYXN0IGludGVydmFsXG4gICAgICAgICAgbmV3RW5kVGltZUVwb2NoID0gZW5kT2ZEYXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSBzaWduYWxcbiAgICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdGltZTogZGF5anMudHoobmV3RW5kVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICAgIGVwb2NoOiBuZXdFbmRUaW1lRXBvY2hcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIG5ldyBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgZW5kOiBuZXdFbmRUaW1lRXBvY2ggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gVHJpZ2dlciBjaGFuZ2UgdG8gZm9yY2UgZW5kIHRpbWVwaWNrZXIgdG8gdXBkYXRlIGl0cyBkaXNwbGF5IHdpdGggdGhlIG5ldyBlbmQgdGltZVxuICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiB3ZSByZXNldCB0aGUgZW5kIHRpbWUgZHVlIHRvIGNvbmZsaWN0XG4gICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGVuZCB0aW1lcGlja2VyJ3MgZmlyc3RJbnRlcnZhbCB3aGVuIGJvdGggdGltZXBpY2tlcnMgYXJlIG9uIHRoZSBzYW1lIGRheVxuICAgIC8vIEFMV0FZUyB1cGRhdGUgdG8gZW5zdXJlIGRyb3Bkb3duIHN0YXJ0cyBmcm9tIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIC8vIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYW4gZWFybGllciBzdGFydCB0aW1lIGRvZXNuJ3QgdXBkYXRlIGVuZCBwaWNrZXIgaW50ZXJ2YWxzXG4gICAgLy8gTk9URTogV2Ugb25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCAoZHJvcGRvd24gb3B0aW9ucyksIE5PVCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgbm93IGhhbmRsZXMgZmlyc3RJbnRlcnZhbCBjaGFuZ2VzIHNlcGFyYXRlbHkgYW5kIHdvbid0IHJlc2V0IGNob3NlblRpbWVcbiAgICBpZiAodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpcnN0SW50ZXJ2YWwgaWYgdGhlcmUncyBubyBjb25mbGljdCAoc3RhcnQgPCBlbmQpXG4gICAgICAvLyBJZiB0aGVyZSdzIGEgY29uZmxpY3QsIGl0J3MgYWxyZWFkeSBoYW5kbGVkIGFib3ZlIGFuZCBmaXJzdEludGVydmFsIHdhcyB1cGRhdGVkIHRoZXJlXG4gICAgICBpZiAoc3RhcnRUaW1lRXBvY2ggPCBlbmRUaW1lRXBvY2gpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXh0IGludGVydmFsIGFmdGVyIHRoZSBzZWxlY3RlZCBzdGFydCB0aW1lXG4gICAgICAgIGxldCBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG5leHQgaW50ZXJ2YWwgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXksIHVzZSBlbmQgb2YgZGF5IGluc3RlYWRcbiAgICAgICAgY29uc3QgZW5kT2ZEYXkgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPiBlbmRPZkRheSkge1xuICAgICAgICAgIG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byBtYWtlIGVuZCB0aW1lcGlja2VyIGRyb3Bkb3duIHN0YXJ0IGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB1c2VycyBjYW4gYWx3YXlzIHNlbGVjdCB0aW1lcyBiZXR3ZWVuIHRoZSBuZXcgc3RhcnQgdGltZSBhbmQgdGhlIGN1cnJlbnQgZW5kIHRpbWVcbiAgICAgICAgLy8gVGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHdpbGwgdXBkYXRlIHRoZSBkcm9wZG93biBidXQgcHJlc2VydmUgdGhlIHNlbGVjdGVkIGVuZCB0aW1lIHZhbHVlXG4gICAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IFxuICAgICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgICBlbmQ6IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBOT1RFOiBXZSBkb24ndCBjYWxsIHRyaWdnZXJDaGFuZ2UgaGVyZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byB1cGRhdGUgdGhlIGRyb3Bkb3duLFxuICAgICAgICAvLyBub3QgcmVzZXQgdGhlIHNlbGVjdGVkIGVuZCB0aW1lLiBUaGUgdGltZXBpY2tlcidzIHNlcGFyYXRlIGVmZmVjdCBmb3IgZmlyc3RJbnRlcnZhbFxuICAgICAgICAvLyB3aWxsIGhhbmRsZSB1cGRhdGluZyB0aGUgZHJvcGRvd24gd2l0aG91dCByZXNldHRpbmcgY2hvc2VuVGltZS5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHdheXMgdmFsaWRhdGUgYW5kIGVtaXQgdGhlIHRpbWUgcmFuZ2VcbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZS5zZXQodGltZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmIFxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFJFMTIgOiBSRTI0O1xuXG4gICAgY29uc3QgdGltZWRheWpzID0gZGF5anMudHooYCR7ZGF5anMudHooZGF0ZSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSgpICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHx8ICh0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEVuZERhdGUoKSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEN1cnJEYXRlKCkpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lZGF5anMuZGlmZihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLCBcIm1cIikgPj0gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICByYW5nZVZhbGlkYXRpb24odmFsaWRpdHk6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsaWRpdHkgJiYgdGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ZGF5anMgPSBkYXlqcy50eih0aGlzLnN0YXJ0VGltZSgpIS50aW1lLCB0aGlzLmdldFRpbWVGb3JtYXQoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIGNvbnN0IGVuZGRheWpzID0gZGF5anMudHoodGhpcy5lbmRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldChlbmRkYXlqcy5kaWZmKHN0YXJ0ZGF5anMsIFwibVwiKSA+PSAxKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwicmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydmbGV4RGlyZWN0aW9uJzogZGlyZWN0aW9uKCksICdnYXAnOiBnYXAoKX1cIj5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwic3RhcnREYXRlRXBvY2goKVwiXG4gICAgW2ZpcnN0SW50ZXJ2YWxdPVwiZmlyc3RJbnRlcnZhbHMoKS5zdGFydFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cInN0YXJ0UGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuU3RhcnRUaW1lKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVTdGFydFRpbWUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuICA8cCAqbmdJZj1cImRpcmVjdGlvbigpID09PSAncm93J1wiPi08L3A+XG4gIDxtaXMtdGltZXBpY2tlclxuICAgIFtjbG9ja0Zvcm1hdF09XCJjbG9ja0Zvcm1hdCgpXCJcbiAgICBbaW50ZXJ2YWxdPVwiaW50ZXJ2YWwoKVwiXG4gICAgW2RhdGVBc0Vwb2NoXT1cImVuZERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLmVuZFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cImVuZFBpY2tlckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW3JhbmdlVmFsaWRpdHldPVwicmFuZ2VWYWxpZGl0eSgpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuRW5kVGltZSgpXCJcbiAgICBbdHJpZ2dlckNoYW5nZV09XCJ0cmlnZ2VyQ2hhbmdlKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVFbmRUaW1lKClcIlxuICA+PC9taXMtdGltZXBpY2tlcj5cbjwvZGl2PlxuXG4iXX0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUNhakMseUJBQWlDO0lBQUEsaUJBQUM7SUFBQSxpQkFBSTs7QURYeEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBT3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFrQ25DLDZFQUE2RTtJQUNyRSxhQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZ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LCtDQUE2Qiw0QkFDTixtQ0FDTywyQ0FDUSxzQ0FFTCw0QkFDVix3QkFDSixnQ0FDUSxzQ0FDTSxrQ0FDSixpQ0FDRCxzQ0FDSyxpQ0FDTCw0Q0FDVyw0QkFDaEI7OztpRkRwQmQsd0JBQXdCO2NBTHBDLFNBQVM7MkJBQ0UscUJBQXFCOztrRkFJcEIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJVGltZVJhbmdlLCBJVGltZSwgVERpcmVjdGlvbiB9IGZyb20gXCIuL3RpbWVyYW5nZS5uYW1lc3BhY2VcIjtcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10aW1lcmFuZ2VwaWNrZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWxcIiwgLy8gQ29ycmVjdGVkIGZpbGUgbmFtZVxuICBzdHlsZVVybHM6IFtcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIC0tLSBJbnB1dCBTaWduYWxzIChyZWFkLW9ubHkpIC0tLVxuICBpbnB1dFdpZHRoID0gaW5wdXQ8c3RyaW5nPihcIjEwMHB4XCIpO1xuICBkcm9wZG93bldpZHRoID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KFwiNDZweFwiKTtcbiAgdGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFwiQXNpYS9Lb2xrYXRhXCIpO1xuICBzdGFydERhdGVFcG9jaCA9IGlucHV0PG51bWJlcj4oZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCkpO1xuICBlbmREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZ2l2ZW5TdGFydFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGdpdmVuRW5kVGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY2xvY2tGb3JtYXQgPSBpbnB1dDxudW1iZXI+KDEyKTtcbiAgaW50ZXJ2YWwgPSBpbnB1dDxudW1iZXI+KDE1KTtcbiAgc2hvd1Rvb2x0aXAgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgZGlyZWN0aW9uID0gaW5wdXQ8VERpcmVjdGlvbj4oJ3JvdycpO1xuICBnYXAgPSBpbnB1dDxzdHJpbmc+KCcxcmVtJyk7XG4gIGRpc2FibGVTdGFydFRpbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGRpc2FibGVFbmRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBmb250U2l6ZSA9IGlucHV0PHN0cmluZz4oXCIxNHB4XCIpO1xuICBkaXNhYmxlVXNlcklucHV0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIC0tLSBPdXRwdXQgU2lnbmFsIC0tLVxuICB0aW1lUmFuZ2VFbWl0dGVyID0gb3V0cHV0PElUaW1lUmFuZ2U+KCk7XG5cbiAgLy8gLS0tIEludGVybmFsIFdyaXRhYmxlIFNpZ25hbHMgLS0tXG4gIHN0YXJ0VGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICBlbmRUaW1lID0gc2lnbmFsPElUaW1lIHwgbnVsbD4obnVsbCk7XG4gIHJhbmdlVmFsaWRpdHkgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHRyaWdnZXJDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2ZpcnN0SW50ZXJ2YWxzID0gc2lnbmFsPHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfT4oeyBzdGFydDogMCwgZW5kOiAwIH0pO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gIC8vIC0tLSBDb21wdXRlZCBTaWduYWxzIChEZXJpdmVkIFN0YXRlKSAtLS1cbiAgZmlyc3RJbnRlcnZhbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maXJzdEludGVydmFscygpKTsgLy8gQSBwdWJsaWMgY29tcHV0ZWQgc2lnbmFsIHRvIGFjY2VzcyB0aGUgd3JpdGFibGUgb25lXG4gIFxuICAvLyBIZWxwZXIgbWV0aG9kcyBpbnN0ZWFkIG9mIGNvbXB1dGVkIHNpZ25hbHMgdG8gYXZvaWQgc2lnbmFsIHdyaXRlIGNvbmZsaWN0c1xuICBwcml2YXRlIGdldFRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICB9XG4gIFxuICBwcml2YXRlIGdldFN0YXJ0RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRFbmREYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRDdXJyRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNpbXBsZSBjb25zdHJ1Y3RvciAtIG5vIGVmZmVjdHMgaGVyZVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IHRydWU7XG4gICAgXG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICAgIGNvbnN0IGZpcnN0SW50ZXJ2YWxzID0gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICBlcG9jaDogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRW5zdXJlIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgbGV0IGVuZFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLmVuZDtcbiAgICBjb25zdCBzdGFydFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0O1xuICAgIFxuICAgIC8vIElmIGVuZCB0aW1lIGlzIHNhbWUgb3IgYmVmb3JlIHN0YXJ0IHRpbWUsIGFkZCBvbmUgaW50ZXJ2YWwgdG8gZW5kIHRpbWVcbiAgICBpZiAoZW5kVGltZUVwb2NoIDw9IHN0YXJ0VGltZUVwb2NoKSB7XG4gICAgICBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCAnbScpLnZhbHVlT2YoKTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byByZWZsZWN0IHRoZSBhZGp1c3RlZCBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHtcbiAgICAgICAgc3RhcnQ6IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LFxuICAgICAgICBlbmQ6IGVuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBkYXlqcy50eihlbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBlbmRUaW1lRXBvY2hcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHByaXZhdGUgc2V0Rmlyc3RJbnRlcnZhbHMoKTogdm9pZCB7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyO1xuICAgIGxldCBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXI7XG5cbiAgICBjb25zdCBtaW51dGVzID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAobWludXRlcyAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIGlmKCB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEN1cnJEYXRlKCkgKXtcbiAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgaWYoY3VycmVudFRpbWUgPj0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gY3VycmVudFRpbWU7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgICAgLy8gRm9yIHNhbWUgZGF0ZSwgZW5kIHBpY2tlciBzaG91bGQgc3RhcnQgZnJvbSBiZWdpbm5pbmcgb2YgZGF5IHRvIGF2b2lkIHZhbGlkYXRpb24gaXNzdWVzXG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSE7XG4gICAgfVxuICAgIFxuICAgIGlmKHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZSgpITtcbiAgICB9XG4gICAgICBcbiAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBzdGFydDogZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyLCBlbmQ6IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgfSk7XG4gIH1cblxuICAvLyAtLS0gUHVibGljIE1ldGhvZHMgLS0tXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHRpbWUpO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eS5zZXQodHJ1ZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgc3RhcnQgdGltZSBlcG9jaCBmb3IgY29tcGFyaXNvblxuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgY29uc3QgZW5kVGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIC8vIEF1dG8tYWRqdXN0IGVuZCB0aW1lIGlmIHN0YXJ0IHRpbWUgPiBlbmQgdGltZSAoZm9yIGJvdGggc2FtZSBhbmQgZGlmZmVyZW50IGRhdGVzKVxuICAgIC8vIFRoaXMgZW5zdXJlcyBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGlmIChzdGFydFRpbWVFcG9jaCA+IGVuZFRpbWVFcG9jaCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBlbmQgdGltZSBhcyBzdGFydCB0aW1lICsgaW50ZXJ2YWxcbiAgICAgIGxldCBuZXdFbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBJZiBzYW1lIGRhdGUsIGNoZWNrIGlmIHRoZSBuZXcgZW5kIHRpbWUgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXlcbiAgICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV3RW5kVGltZUVwb2NoID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICAvLyBTZXQgZW5kIHRpbWUgdG8gMTE6NTkgUE0gKGVuZCBvZiBkYXkpIHdoZW4gc3RhcnQgdGltZSBpcyBsYXN0IGludGVydmFsXG4gICAgICAgICAgbmV3RW5kVGltZUVwb2NoID0gZW5kT2ZEYXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSBzaWduYWxcbiAgICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdGltZTogZGF5anMudHoobmV3RW5kVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICAgIGVwb2NoOiBuZXdFbmRUaW1lRXBvY2hcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIG5ldyBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgZW5kOiBuZXdFbmRUaW1lRXBvY2ggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gVHJpZ2dlciBjaGFuZ2UgdG8gZm9yY2UgZW5kIHRpbWVwaWNrZXIgdG8gdXBkYXRlIGl0cyBkaXNwbGF5IHdpdGggdGhlIG5ldyBlbmQgdGltZVxuICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiB3ZSByZXNldCB0aGUgZW5kIHRpbWUgZHVlIHRvIGNvbmZsaWN0XG4gICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGVuZCB0aW1lcGlja2VyJ3MgZmlyc3RJbnRlcnZhbCB3aGVuIGJvdGggdGltZXBpY2tlcnMgYXJlIG9uIHRoZSBzYW1lIGRheVxuICAgIC8vIEFMV0FZUyB1cGRhdGUgdG8gZW5zdXJlIGRyb3Bkb3duIHN0YXJ0cyBmcm9tIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIC8vIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYW4gZWFybGllciBzdGFydCB0aW1lIGRvZXNuJ3QgdXBkYXRlIGVuZCBwaWNrZXIgaW50ZXJ2YWxzXG4gICAgLy8gTk9URTogV2Ugb25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCAoZHJvcGRvd24gb3B0aW9ucyksIE5PVCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgbm93IGhhbmRsZXMgZmlyc3RJbnRlcnZhbCBjaGFuZ2VzIHNlcGFyYXRlbHkgYW5kIHdvbid0IHJlc2V0IGNob3NlblRpbWVcbiAgICBpZiAodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpcnN0SW50ZXJ2YWwgaWYgdGhlcmUncyBubyBjb25mbGljdCAoc3RhcnQgPCBlbmQpXG4gICAgICAvLyBJZiB0aGVyZSdzIGEgY29uZmxpY3QsIGl0J3MgYWxyZWFkeSBoYW5kbGVkIGFib3ZlIGFuZCBmaXJzdEludGVydmFsIHdhcyB1cGRhdGVkIHRoZXJlXG4gICAgICBpZiAoc3RhcnRUaW1lRXBvY2ggPCBlbmRUaW1lRXBvY2gpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXh0IGludGVydmFsIGFmdGVyIHRoZSBzZWxlY3RlZCBzdGFydCB0aW1lXG4gICAgICAgIGxldCBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG5leHQgaW50ZXJ2YWwgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXksIHVzZSBlbmQgb2YgZGF5IGluc3RlYWRcbiAgICAgICAgY29uc3QgZW5kT2ZEYXkgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPiBlbmRPZkRheSkge1xuICAgICAgICAgIG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byBtYWtlIGVuZCB0aW1lcGlja2VyIGRyb3Bkb3duIHN0YXJ0IGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB1c2VycyBjYW4gYWx3YXlzIHNlbGVjdCB0aW1lcyBiZXR3ZWVuIHRoZSBuZXcgc3RhcnQgdGltZSBhbmQgdGhlIGN1cnJlbnQgZW5kIHRpbWVcbiAgICAgICAgLy8gVGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHdpbGwgdXBkYXRlIHRoZSBkcm9wZG93biBidXQgcHJlc2VydmUgdGhlIHNlbGVjdGVkIGVuZCB0aW1lIHZhbHVlXG4gICAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IFxuICAgICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgICBlbmQ6IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBOT1RFOiBXZSBkb24ndCBjYWxsIHRyaWdnZXJDaGFuZ2UgaGVyZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byB1cGRhdGUgdGhlIGRyb3Bkb3duLFxuICAgICAgICAvLyBub3QgcmVzZXQgdGhlIHNlbGVjdGVkIGVuZCB0aW1lLiBUaGUgdGltZXBpY2tlcidzIHNlcGFyYXRlIGVmZmVjdCBmb3IgZmlyc3RJbnRlcnZhbFxuICAgICAgICAvLyB3aWxsIGhhbmRsZSB1cGRhdGluZyB0aGUgZHJvcGRvd24gd2l0aG91dCByZXNldHRpbmcgY2hvc2VuVGltZS5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHdheXMgdmFsaWRhdGUgYW5kIGVtaXQgdGhlIHRpbWUgcmFuZ2VcbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZS5zZXQodGltZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmIFxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFJFMTIgOiBSRTI0O1xuXG4gICAgY29uc3QgdGltZWRheWpzID0gZGF5anMudHooYCR7ZGF5anMudHooZGF0ZSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSgpICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHx8ICh0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEVuZERhdGUoKSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEN1cnJEYXRlKCkpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lZGF5anMuZGlmZihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLCBcIm1cIikgPj0gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICByYW5nZVZhbGlkYXRpb24odmFsaWRpdHk6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsaWRpdHkgJiYgdGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ZGF5anMgPSBkYXlqcy50eih0aGlzLnN0YXJ0VGltZSgpIS50aW1lLCB0aGlzLmdldFRpbWVGb3JtYXQoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIGNvbnN0IGVuZGRheWpzID0gZGF5anMudHoodGhpcy5lbmRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldChlbmRkYXlqcy5kaWZmKHN0YXJ0ZGF5anMsIFwibVwiKSA+PSAxKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwicmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydmbGV4RGlyZWN0aW9uJzogZGlyZWN0aW9uKCksICdnYXAnOiBnYXAoKX1cIj5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwic3RhcnREYXRlRXBvY2goKVwiXG4gICAgW2ZpcnN0SW50ZXJ2YWxdPVwiZmlyc3RJbnRlcnZhbHMoKS5zdGFydFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cInN0YXJ0UGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuU3RhcnRUaW1lKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVTdGFydFRpbWUoKVwiXG4gICAgW2Rpc2FibGVVc2VySW5wdXRdPVwiZGlzYWJsZVVzZXJJbnB1dCgpXCJcbiAgICBbZm9udFNpemVdPVwiZm9udFNpemUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuICA8cCAqbmdJZj1cImRpcmVjdGlvbigpID09PSAncm93J1wiPi08L3A+XG4gIDxtaXMtdGltZXBpY2tlclxuICAgIFtjbG9ja0Zvcm1hdF09XCJjbG9ja0Zvcm1hdCgpXCJcbiAgICBbaW50ZXJ2YWxdPVwiaW50ZXJ2YWwoKVwiXG4gICAgW2RhdGVBc0Vwb2NoXT1cImVuZERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLmVuZFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cImVuZFBpY2tlckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW3JhbmdlVmFsaWRpdHldPVwicmFuZ2VWYWxpZGl0eSgpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuRW5kVGltZSgpXCJcbiAgICBbdHJpZ2dlckNoYW5nZV09XCJ0cmlnZ2VyQ2hhbmdlKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVFbmRUaW1lKClcIlxuICAgIFtkaXNhYmxlVXNlcklucHV0XT1cImRpc2FibGVVc2VySW5wdXQoKVwiXG4gICAgW2ZvbnRTaXplXT1cImZvbnRTaXplKClcIlxuICA+PC9taXMtdGltZXBpY2tlcj5cbjwvZGl2PlxuXG4iXX0=
|