@libs-ui/components-datetime-picker 0.2.292 → 0.2.293
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.
|
@@ -188,10 +188,10 @@ export class LibsUiComponentsDatetimePickerCustomRangesComponent {
|
|
|
188
188
|
date: event.startDate,
|
|
189
189
|
values: event.detailDatePicker.start()
|
|
190
190
|
});
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
if (!this.isSingle() && event.startDate && !event.endDate) {
|
|
192
|
+
const endTime = event.detailDatePicker.end();
|
|
193
|
+
event.endDate = event.startDate.clone().hour(endTime.hour).minute(endTime.minute).second(59);
|
|
194
|
+
}
|
|
195
195
|
this.chosenDateRange.set({
|
|
196
196
|
quickRangeId: this.chosenQuickRange(),
|
|
197
197
|
...event
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
304
304
|
LibsUiComponentsPopoverComponent
|
|
305
305
|
], template: "<div #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{maxWidth:160,direction:'top',zIndex:(zIndex() ||1000) + 1}\"\n [innerHTML]=\"range.label\">\n </div>\n </div>\n <i class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n", styles: [".libs-ui-component-custom_ranges{position:relative;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges{width:159px;flex-shrink:0}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range{position:relative}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:2px;background-color:var(--libs-ui-color-default)!important}@media (min-width: 564px){.libs-ui-component-custom_ranges{width:auto}}\n"] }]
|
|
306
306
|
}], ctorParameters: () => [] });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9jdXN0b20tcmFuZ2VzL2N1c3RvbS1yYW5nZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvY3VzdG9tLXJhbmdlcy9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFjLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLMUcsT0FBTyxFQUFFLDJEQUEyRCxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZ0I1RyxNQUFNLE9BQU8sbURBQW1EO0lBQzlELGVBQWU7SUFDTCxvQkFBb0IsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUNqRCxrQkFBa0IsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7SUFDNUUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUV6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SUFDL0IsQ0FBQzt3R0FwVlUsbURBQW1EOzRGQUFuRCxtREFBbUQsOHdHQzFCaEUsdTJGQXVEQSw2cEJEbENJLGVBQWUsK0JBQ2YsMkRBQTJELGtnQkFDM0QsZ0NBQWdDOzs0RkFHdkIsbURBQW1EO2tCQWIvRCxTQUFTOytCQUVFLGtEQUFrRCxjQUdoRCxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsZUFBZTt3QkFDZiwyREFBMkQ7d0JBQzNELGdDQUFnQztxQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgZ2V0RGF5anMgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB7IGRlZmF1bHRMb2NhbGVDb25maWcsIGdldERhdGVPcHRpb25zLCBnZXREYXRlUmFuZ2VEZWZhdWx0IH0gZnJvbSBcIi4uL2RlZmluZXMvZGF0ZS1vcHRpb25zLmRlZmluZVwiO1xuaW1wb3J0IHsgSUVtaXREYXRlQ2FsZW5kYXIsIElFbWl0RGF0ZVJhbmdlLCBJRW1pdFNpbmdsZURhdGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbWl0LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSURhdGVSYW5nZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLXZhcmlhYmxlcy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElDYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvbkNvbmZpZyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BpY2tlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZVBpY2tlckN1c3RvbVJhbmdlc0NhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSBcIi4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1waWNrZXItY3VzdG9tX3JhbmdlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDYWxlbmRhckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZVBpY2tlckN1c3RvbVJhbmdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgc2hvd0NhbFRhYmxlSW5SYW5nZXMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgcXVpY2tSYW5nZXNBcnJheSA9IHNpZ25hbDxBcnJheTxJRGF0ZVJhbmdlPj4oW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRRdWlja1JhbmdlID0gc2lnbmFsPHN0cmluZz4oJycpOyAvLyBxdWljayByYW5nZSDEkcOjIMSRxrDhu6NjIGzGsHUgdHLGsOG7m2MgxJHDs1xuICBwcm90ZWN0ZWQgY2hvc2VuUXVpY2tSYW5nZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIHF1aWNrIHJhbmdlIMSRYW5nIMSRxrDhu6NjIGNo4buNblxuXG4gIHByaXZhdGUgY2FsZW5kYXJTaG93aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSB0aW1lb3V0cyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG4gIHByaXZhdGUgY2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJQ2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBjaG9zZW5TaW5nbGVEYXRlID0gc2lnbmFsPElFbWl0U2luZ2xlRGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBjaG9zZW5EYXRlUmFuZ2UgPSBzaWduYWw8SUVtaXREYXRlUmFuZ2UgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIElOUFVUICovXG4gIC8vIHJlYWRvbmx5IFNlbGVjdGVkUXVpY2tSYW5nZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGV4dGVuZFJhbmdlcyA9IGlucHV0PEFycmF5PElEYXRlUmFuZ2U+PihbXSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlQYXJlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGF1dG9BcHBseSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBtYXhEYXRlID0gaW5wdXQ8RGF5anMgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGxpc3RZZWFySGlkZGVuSW5wdXRTZWFyY2ggPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuXG5cbiAgcmVhZG9ubHkgcG9zaXRpb25RdWlja1JhbmdlcyA9IGlucHV0PCdsZWZ0JyB8ICdyaWdodCcsICdsZWZ0JyB8ICdyaWdodCc+KCdsZWZ0JywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJ2xlZnQnIH0pO1xuICByZWFkb25seSBpc1NpbmdsZSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgaGFzVGltZVBpY2tlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBmbGFnTW91c2UgPSBpbnB1dDxJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuICByZWFkb25seSBkYXRlT3B0aW9ucyA9IGlucHV0PExvY2FsaXphdGlvbkNvbmZpZz4oeyAuLi5kZWZhdWx0TG9jYWxlQ29uZmlnKCksIC4uLmdldERhdGVPcHRpb25zKCkgfSk7XG4gIHJlYWRvbmx5IGFsd2F5c1Nob3dDYWxlbmRhcnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZSA9IG1vZGVsPERheWpzIHwgdW5kZWZpbmVkPihnZXREYXlqczxEYXlqcz4oKS5zdGFydE9mKCdkYXknKSk7XG4gIHJlYWRvbmx5IGVuZERhdGUgPSBtb2RlbDxEYXlqcyB8IHVuZGVmaW5lZD4oZ2V0RGF5anM8RGF5anM+KCkuZW5kT2YoJ2RheScpKTtcbiAgcmVhZG9ubHkgc2hvd0N1c3RvbVJhbmdlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWQgPSBpbnB1dDxJRW1pdFNpbmdsZURhdGUgfCB1bmRlZmluZWQsIElFbWl0U2luZ2xlRGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGUgPSB2YWx1ZS5kYXRlO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGUgPSBnZXREYXlqczxEYXlqcz4oeyBkYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnZhbHVlLFxuICAgICAgICBkYXRlXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gaW5wdXQ8SUVtaXREYXRlUmFuZ2UgfCB1bmRlZmluZWQsIElFbWl0RGF0ZVJhbmdlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgc3RhcnREYXRlID0gdmFsdWUuc3RhcnREYXRlO1xuICAgICAgbGV0IGVuZERhdGUgPSB2YWx1ZS5lbmREYXRlO1xuXG4gICAgICBpZiAodHlwZW9mIHN0YXJ0RGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RhcnREYXRlID0gZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogc3RhcnREYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGVuZERhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGVuZERhdGUgPSBnZXREYXlqczxEYXlqcz4oeyBkYXRlOiBlbmREYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dFVwZGF0ZVdpZHRoID0gb3V0cHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2FuY2VsID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0U2luZ2xlRGF0ZSA9IG91dHB1dDxJRW1pdFNpbmdsZURhdGU+KCk7XG4gIHJlYWRvbmx5IG91dFNlbGVjdERhdGVSYW5nZSA9IG91dHB1dDxJRW1pdERhdGVSYW5nZT4oKTtcbiAgcmVhZG9ubHkgb3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20gPSBvdXRwdXQ8VFlQRV9PQkpFQ1Q+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHVudHJhY2tlZCh0aGlzLm9uQWZ0ZXJWaWV3SW5pdC5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICBwcml2YXRlIG9uQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChnZXREYXlqczxEYXlqcz4oKS5zdGFydE9mKCdkYXknKSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQoZ2V0RGF5anM8RGF5anM+KCkuZW5kT2YoJ2RheScpKTtcbiAgICB9XG4gICAgY29uc3QgZGF0ZVJhbmdlU2VsZWN0ZWQgPSB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKCk7XG4gICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdGVkID0gdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQoKTtcbiAgICBjb25zdCBjdXN0b21SYW5nZSA9IHtcbiAgICAgIGlkOiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwgfHwgJycsXG4gICAgICBsYWJlbDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkpIHtcbiAgICAgIGlmICh0aGlzLmhhc1RpbWVQaWNrZXIoKSkge1xuICAgICAgICBjb25zdCBub3cgPSBnZXREYXlqczxEYXlqcz4oKTtcblxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuc2V0KCdob3VyJywgMTApLnNldCgnbWludXRlJywgMzApO1xuICAgICAgICAgICAgLy8gY3VycmVudC5ob3VyKG5vdy5ob3VyKCkpLm1pbnV0ZShub3cubWludXRlKCkpO1xuICAgICAgICAgIH1cblxuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVuZERhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50LmhvdXIobm93LmhvdXIoKSkubWludXRlKG5vdy5taW51dGUoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHNpbmdsZURhdGVTZWxlY3RlZD8uZGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogc2luZ2xlRGF0ZVNlbGVjdGVkLmRhdGUgfSkpO1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KGdldERheWpzPERheWpzPih7IGRhdGU6IHNpbmdsZURhdGVTZWxlY3RlZC5kYXRlfSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW5kZXJSYW5nZXMoKTtcblxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRhdGVSYW5nZVNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUXVpY2tSYW5nZS5zZXQoZGF0ZVJhbmdlU2VsZWN0ZWQucXVpY2tSYW5nZUlkID8gZGF0ZVJhbmdlU2VsZWN0ZWQucXVpY2tSYW5nZUlkIDogY3VzdG9tUmFuZ2UuaWQpO1xuICAgICAgdGhpcy5jaG9zZW5RdWlja1JhbmdlLnNldChkYXRlUmFuZ2VTZWxlY3RlZC5xdWlja1JhbmdlSWQgPz8gY3VzdG9tUmFuZ2UuaWQpO1xuXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQuc3RhcnREYXRlIH0pKTtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQoZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQuZW5kRGF0ZSB9KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc1RpbWVQaWNrZXIoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFF1aWNrUmFuZ2Uuc2V0KGN1c3RvbVJhbmdlLmlkKTtcbiAgICAgIHRoaXMuY2hvc2VuUXVpY2tSYW5nZS5zZXQoY3VzdG9tUmFuZ2UuaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFF1aWNrUmFuZ2UoKSA9PT0gdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsKSB7XG4gICAgICB0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzLnNldCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJSYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlV2lkdGgoKSB7XG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm91dFVwZGF0ZVdpZHRoLmVtaXQoMSk7XG4gICAgfSkgYXMgdW5rbm93biBhcyBudW1iZXI7XG5cbiAgICB0aGlzLnRpbWVvdXRzLnVwZGF0ZShpZHMgPT4gWy4uLmlkcywgdGltZW91dElkXSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclJhbmdlcygpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZSgpKSB7XG4gICAgICB0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzLnNldCh0cnVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByYW5nZXNEZWZhdWx0ID0gZ2V0RGF0ZVJhbmdlRGVmYXVsdCgpO1xuICAgIGNvbnN0IHJhbmdlcyA9IHRoaXMuZGF0ZU9wdGlvbnMoKT8ucmFuZ2VzO1xuXG4gICAgdGhpcy5xdWlja1Jhbmdlc0FycmF5LnNldChbXSk7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYW5nZXMpIHtcbiAgICAgIGNvbnN0IHJhbmdlVmFsdWUgPSByYW5nZXNEZWZhdWx0W2tleV07XG4gICAgICBjb25zdCBzdGFydCA9IGdldERheWpzPERheWpzPih7IGRhdGU6IHJhbmdlVmFsdWVbMF0sIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG4gICAgICBjb25zdCBlbmQgPSBnZXREYXlqczxEYXlqcz4oeyBkYXRlOiByYW5nZVZhbHVlWzFdLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuXG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnB1c2goe1xuICAgICAgICAgIGlkOiBrZXksXG4gICAgICAgICAgbGFiZWw6IHJhbmdlc1trZXldLFxuICAgICAgICAgIHZhbHVlczogW3N0YXJ0LCBlbmRdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dDdXN0b21SYW5nZUxhYmVsKCkgJiYgdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsKSB7XG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnB1c2goe1xuICAgICAgICAgIGlkOiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwgfHwgJycsXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCB8fCAnJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leHRlbmRSYW5nZXMoKSkge1xuICAgICAgdGhpcy5xdWlja1Jhbmdlc0FycmF5LnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgY3VycmVudC51bnNoaWZ0KC4uLnRoaXMuZXh0ZW5kUmFuZ2VzKCkpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5xdWlja1Jhbmdlc0FycmF5KCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNhbmNlbCgpIHtcbiAgICB0aGlzLm91dENhbmNlbC5lbWl0KCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUGlja2VyRGF0ZShldmVudDogSUVtaXREYXRlQ2FsZW5kYXIpIHtcbiAgICB0aGlzLmNob3NlblNpbmdsZURhdGUuc2V0KHtcbiAgICAgIGRpc3BsYXlMYWJlbDogZXZlbnQuZGlzcGxheUxhYmVsLFxuICAgICAgZGF0ZTogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgdmFsdWVzOiBldmVudC5kZXRhaWxEYXRlUGlja2VyLnN0YXJ0KClcbiAgICB9KTtcbiAgICAvLyBpZiAoIXRoaXMuaXNTaW5nbGUoKSAmJiBldmVudC5zdGFydERhdGUgJiYgIWV2ZW50LmVuZERhdGUpIHtcbiAgICAvLyAgIGNvbnN0IGVuZFRpbWUgPSBldmVudC5kZXRhaWxEYXRlUGlja2VyLmVuZCgpO1xuICAgIC8vICAgZXZlbnQuZW5kRGF0ZSA9IGV2ZW50LnN0YXJ0RGF0ZS5jbG9uZSgpLmhvdXIoZW5kVGltZS5ob3VyIGFzIG51bWJlcikubWludXRlKGVuZFRpbWUubWludXRlIGFzIG51bWJlcikuc2Vjb25kKDU5KTtcbiAgICAvLyB9XG4gICAgdGhpcy5jaG9zZW5EYXRlUmFuZ2Uuc2V0KHtcbiAgICAgIHF1aWNrUmFuZ2VJZDogdGhpcy5jaG9zZW5RdWlja1JhbmdlKCksXG4gICAgICAuLi5ldmVudFxuICAgIH0pO1xuICAgIGNvbnN0IGNob3NlblNpbmdsZURhdGUgPSB0aGlzLmNob3NlblNpbmdsZURhdGUoKTtcbiAgICBjb25zdCBjaG9zZW5EYXRlUmFuZ2UgPSB0aGlzLmNob3NlbkRhdGVSYW5nZSgpO1xuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkgJiYgY2hvc2VuU2luZ2xlRGF0ZSkge1xuICAgICAgdGhpcy5vdXRTZWxlY3RTaW5nbGVEYXRlLmVtaXQoY2hvc2VuU2luZ2xlRGF0ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFjaG9zZW5EYXRlUmFuZ2UgfHwgKCFjaG9zZW5EYXRlUmFuZ2Uuc3RhcnREYXRlICYmICFjaG9zZW5EYXRlUmFuZ2UuZW5kRGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdChjaG9zZW5EYXRlUmFuZ2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja1JhbmdlKGU6IEV2ZW50LCByYW5nZTogSURhdGVSYW5nZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmNob3NlblF1aWNrUmFuZ2Uuc2V0KHJhbmdlLmlkKTtcblxuICAgIGlmIChyYW5nZS5pZCA9PT0gdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsKSB7XG4gICAgICBpZiAoIXRoaXMuY2FsZW5kYXJTaG93aW5nKCkgJiYgIXRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMoKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyU2hvd2luZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLm91dENsaWNrTWVudVJhbmdlQ3VzdG9tLmVtaXQocmFuZ2UpO1xuICAgICAgICB0aGlzLnVwZGF0ZVdpZHRoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICBpZiAodGhpcy5leHRlbmRSYW5nZXMoKSkge1xuICAgICAgY29uc3QgZmluZEV4dGVybmFsUmFuZ2UgPSB0aGlzLmV4dGVuZFJhbmdlcygpLmZpbmQoaXRlbSA9PiBpdGVtLmxhYmVsID09PSByYW5nZS5pZCk7XG5cbiAgICAgIGlmIChmaW5kRXh0ZXJuYWxSYW5nZSAmJiByYW5nZS5pZCA9PT0gZmluZEV4dGVybmFsUmFuZ2UubGFiZWwpIHtcbiAgICAgICAgaWYgKGZpbmRFeHRlcm5hbFJhbmdlLnZhbHVlcykge1xuICAgICAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IGZpbmRFeHRlcm5hbFJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IGZpbmRFeHRlcm5hbFJhbmdlLmxhYmVsLCBzdGFydERhdGU6IGZpbmRFeHRlcm5hbFJhbmdlLnZhbHVlc1swXSwgZW5kRGF0ZTogZmluZEV4dGVybmFsUmFuZ2UudmFsdWVzWzFdIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IGZpbmRFeHRlcm5hbFJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IGZpbmRFeHRlcm5hbFJhbmdlLmxhYmVsLCBzdGFydERhdGU6IHVuZGVmaW5lZCwgZW5kRGF0ZTogdW5kZWZpbmVkIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY29uc3QgZGF0ZXMgPSByYW5nZS52YWx1ZXMgPz8gW107XG5cbiAgICAvLyB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZXNbMF0uY2xvbmUoKS5ob3VyKDApLm1pbnV0ZSgwKS5zZWNvbmQoMCkpO1xuICAgIC8vIHRoaXMuZW5kRGF0ZS5zZXQoZGF0ZXNbMV0uY2xvbmUoKS5ob3VyKDIzKS5taW51dGUoNTkpLnNlY29uZCg1OSkpO1xuICAgIC8vIHRoaXMudGltZVZhbHVlID0geyBob3VyOiAwLCB0b0hvdXI6IDAsIG1pbnV0ZTogMjMsIHRvTWludXRlOiA1OSB9O1xuICAgIC8vIHRoaXMudGltZXBpY2tlclZhcmlhYmxlcy5sZWZ0LnNlbGVjdGVkSG91ciA9IDA7XG4gICAgLy8gdGhpcy50aW1lcGlja2VyVmFyaWFibGVzLmxlZnQuc2VsZWN0ZWRNaW51dGUgPSAwO1xuICAgIC8vIHRoaXMudGltZXBpY2tlclZhcmlhYmxlcy5yaWdodC5zZWxlY3RlZEhvdXIgPSAyMztcbiAgICAvLyB0aGlzLnRpbWVwaWNrZXJWYXJpYWJsZXMucmlnaHQuc2VsZWN0ZWRNaW51dGUgPSA1OTtcblxuICAgIC8vIHRoaXMuc2hvd1JhbmdlTGFiZWxPbklucHV0ICYmIGxhYmVsICE9PSB0aGlzLmxvY2FsZURheS5jdXN0b21SYW5nZUxhYmVsID8gdGhpcy5jaG9zZW5MYWJlbCA9IGxhYmVsIDogdGhpcy5jYWxjdWxhdGVDaG9zZW5MYWJlbCgpO1xuXG4gICAgLy8gLy8gdGhpcy5hdXRvQXBwbHkuc2V0KHRydWUpO1xuICAgIC8vIGlmICghdGhpcy5oYXNUaW1lUGlja2VyKCkpIHtcbiAgICAvLyAgIGlmKHRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAvLyAgICAgdGhpcy5zdGFydERhdGUuc2V0KHRoaXMuc3RhcnREYXRlKCk/LnN0YXJ0T2YoJ2RheScpKTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmKHRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgLy8gICAgIHRoaXMuZW5kRGF0ZS5zZXQodGhpcy5lbmREYXRlKCk/LmVuZE9mKCdkYXknKSk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIC8vIGlmICghdGhpcy5hbHdheXNTaG93Q2FsZW5kYXJzKCkpIHtcbiAgICAvLyAgIHRoaXMuY2FsZW5kYXJTaG93aW5nLnNldChmYWxzZSk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMub3V0Q2xpY2tSYW5nZS5lbWl0KHJhbmdlKTtcblxuICAgIGlmICghdGhpcy5rZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlKCkgfHwgIXRoaXMuYWx3YXlzU2hvd0NhbGVuZGFycygpKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdERhdGVSYW5nZS5lbWl0KHsgcXVpY2tSYW5nZUlkOiByYW5nZS5pZCwgZGlzcGxheUxhYmVsOiByYW5nZS5sYWJlbCwgc3RhcnREYXRlOiByYW5nZS52YWx1ZXM/LlswXSwgZW5kRGF0ZTogcmFuZ2UudmFsdWVzPy5bMV0gfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMudGltZVBpY2tlcikge1xuICAgIC8vICAgdGhpcy5yZW5kZXJUaW1lUGlja2VyKFNpZGVFbnVtLmxlZnQpO1xuICAgIC8vICAgdGhpcy5yZW5kZXJUaW1lUGlja2VyKFNpZGVFbnVtLnJpZ2h0KTtcbiAgICAvLyB9XG4gICAgLy8gaWYgKHRoaXMuZ2V0TWF4RGF0ZSgpICYmIHRoaXMuZ2V0TWF4RGF0ZSgpLmlzU2FtZShkYXRlc1swXSwgJ21vbnRoJykpIHtcbiAgICAvLyAgIHRoaXMucmlnaHRDYWxlbmRhci5tb250aCA9IHRoaXMucmlnaHRDYWxlbmRhci5tb250aCAmJiB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGgubW9udGgoZGF0ZXNbMF0ubW9udGgoKSk7XG4gICAgLy8gICB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggPSB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoLnllYXIoZGF0ZXNbMF0ueWVhcigpKTtcbiAgICAvLyAgIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoID0gdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGgubW9udGgoZGF0ZXNbMF0ubW9udGgoKSAtIDEpO1xuICAgIC8vICAgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggPSB0aGlzLmxlZnRDYWxlbmRhci5tb250aCAmJiB0aGlzLmxlZnRDYWxlbmRhci5tb250aC55ZWFyKGRhdGVzWzFdLnllYXIoKSk7XG5cbiAgICAvLyAgIHJldHVybiB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLmxlZnRDYWxlbmRhci5tb250aCA9IHRoaXMubGVmdENhbGVuZGFyLm1vbnRoICYmIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoLm1vbnRoKGRhdGVzWzBdLm1vbnRoKCkpO1xuICAgIC8vIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoID0gdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGgueWVhcihkYXRlc1swXS55ZWFyKCkpO1xuICAgIC8vIGNvbnN0IG5leHRNb250aCA9IGRhdGVzWzBdLmNsb25lKCkuYWRkKDEsICdtb250aCcpO1xuXG4gICAgLy8gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoID0gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoICYmIHRoaXMucmlnaHRDYWxlbmRhci5tb250aC5tb250aChuZXh0TW9udGgubW9udGgoKSk7XG4gICAgLy8gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoID0gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoICYmIHRoaXMucmlnaHRDYWxlbmRhci5tb250aC55ZWFyKG5leHRNb250aC55ZWFyKCkpO1xuICAgIC8vIHRoaXMudXBkYXRlQ2FsZW5kYXJzKCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQ2FuY2VsKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vIHRoaXMuc3RhcnREYXRlLnNldChkYXlqcygwKSk7XG4gICAgLy8gdGhpcy5lbmREYXRlLnNldChkYXlqcygwKSk7XG4gICAgdGhpcy5vdXRDYW5jZWwuZW1pdCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZUZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbnNDb250cm9sKGV2ZW50OiBJQ2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuY2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50aW1lb3V0cygpLmZvckVhY2goaXRlbSA9PiBjbGVhclRpbWVvdXQoaXRlbSkpO1xuICAgIC8vIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICAvLyB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2ICNwaWNrZXJDb250YWluZXJcbiAgY2xhc3M9XCJsaWJzLXVpLWNvbXBvbmVudC1jdXN0b21fcmFuZ2VzIGZsZXggcm91bmRlZC1bNHB4XSBiZy1bI2ZmZmZmZl0gei1bMTAwMF0gb3ZlcmZsb3ctaGlkZGVuXCJcbiAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicG9zaXRpb25RdWlja1JhbmdlcygpID09PSAncmlnaHQnXCI+XG4gIEBpZiAoIWlzU2luZ2xlKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1jb21wb25lbnQtY3VzdG9tX3Jhbmdlcy1yYW5nZXMge3sgY2xhc3NJbmNsdWRlKCkgfHwgJycgfX1cIlxuICAgICAgW2NsYXNzLmJvcmRlci1sLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCcgJiYgc2hvd0NhbFRhYmxlSW5SYW5nZXMoKVwiXG4gICAgICBbY2xhc3MuYm9yZGVyLWxdPVwicG9zaXRpb25RdWlja1JhbmdlcygpID09PSAncmlnaHQnICYmIHNob3dDYWxUYWJsZUluUmFuZ2VzKClcIlxuICAgICAgW2NsYXNzLmJvcmRlci1yLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy5ib3JkZXItcl09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzI2MHB4XV09XCJzaG93Q2FsVGFibGVJblJhbmdlcygpICYmICFpc1NpbmdsZSgpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzMwMHB4XV09XCJoYXNUaW1lUGlja2VyKCkgJiYgIWlzU2luZ2xlKClcIlxuICAgICAgW2NsYXNzLiF3LVsxNjBweF1dPVwiIXdpZHRoQnlQYXJlbnQoKVwiXG4gICAgICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5UGFyZW50KClcIj5cbiAgICAgIEBmb3IgKHJhbmdlIG9mIHF1aWNrUmFuZ2VzQXJyYXkoKTsgdHJhY2sgcmFuZ2UuaWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGhvdmVyOmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTMpXSBjdXJzb3ItcG9pbnRlciBweC1bMTZweF0gcHktWzhweF1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLXNlbGVjdGVkLXJhbmdlXT1cInJhbmdlLmlkID09PSBjaG9zZW5RdWlja1JhbmdlKCkgJiYgc2hvd0N1c3RvbVJhbmdlTGFiZWwoKVwiXG4gICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTMpXV09XCJyYW5nZS5pZCA9PT0gY2hvc2VuUXVpY2tSYW5nZSgpIHx8IHJhbmdlLmlkID09PSBzZWxlY3RlZFF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJDbGlja1JhbmdlKCRldmVudCwgcmFuZ2UpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgZmxleCB0ZXh0LVsjMzMzMzMzXSBtaW4tdy0wIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7bWF4V2lkdGg6MTYwLGRpcmVjdGlvbjondG9wJyx6SW5kZXg6KHpJbmRleCgpIHx8MTAwMCkgKyAxfVwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmFuZ2UubGFiZWxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1bMTJweF0gbWwtWzE2cHhdXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tdPVwicmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXV09XCJyYW5nZS5pZCA9PT0gc2VsZWN0ZWRRdWlja1JhbmdlKClcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoc2hvd0NhbFRhYmxlSW5SYW5nZXMoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJtLVsxNnB4XSB3LWZ1bGxcIj5cbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtcGlja2VyLWN1c3RvbV9yYW5nZXMtY2FsZW5kYXIgW2lzU2luZ2xlXT1cImlzU2luZ2xlKClcIlxuICAgICAgICBbYXV0b0FwcGx5XT1cImF1dG9BcHBseSgpXCJcbiAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgIFtmbGFnTW91c2VdPVwiZmxhZ01vdXNlKClcIlxuICAgICAgICBbZGF0ZU9wdGlvbnNdPVwiZGF0ZU9wdGlvbnMoKVwiXG4gICAgICAgIFtoYXNUaW1lUGlja2VyXT1cImhhc1RpbWVQaWNrZXIoKVwiXG4gICAgICAgIFtxdWlja1Jhbmdlc0FycmF5XT1cInF1aWNrUmFuZ2VzQXJyYXkoKVwiXG4gICAgICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlKClcIlxuICAgICAgICBbZW5kRGF0ZV09XCJlbmREYXRlKClcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlKClcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlKClcIlxuICAgICAgICBbbGlzdFllYXJIaWRkZW5JbnB1dFNlYXJjaF09XCJsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoKClcIlxuICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid3LWZ1bGwnXCJcbiAgICAgICAgKG91dENhbmNlbCk9XCJoYW5kbGVyQ2FuY2VsKClcIlxuICAgICAgICAob3V0UGlja2VyRGF0ZSk9XCJoYW5kbGVyUGlja2VyRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woJGV2ZW50KVwiXG4gICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ2VGbGFnTW91c2UoJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9jdXN0b20tcmFuZ2VzL2N1c3RvbS1yYW5nZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvY3VzdG9tLXJhbmdlcy9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFjLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLMUcsT0FBTyxFQUFFLDJEQUEyRCxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZ0I1RyxNQUFNLE9BQU8sbURBQW1EO0lBQzlELGVBQWU7SUFDTCxvQkFBb0IsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUNqRCxrQkFBa0IsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7SUFDNUUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUV6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LENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxLQUFvQztRQUNwRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BELHlCQUF5QjtRQUN6Qiw2QkFBNkI7SUFDL0IsQ0FBQzt3R0FwVlUsbURBQW1EOzRGQUFuRCxtREFBbUQsOHdHQzFCaEUsdTJGQXVEQSw2cEJEbENJLGVBQWUsK0JBQ2YsMkRBQTJELGtnQkFDM0QsZ0NBQWdDOzs0RkFHdkIsbURBQW1EO2tCQWIvRCxTQUFTOytCQUVFLGtEQUFrRCxjQUdoRCxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsZUFBZTt3QkFDZiwyREFBMkQ7d0JBQzNELGdDQUFnQztxQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgZ2V0RGF5anMgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB7IGRlZmF1bHRMb2NhbGVDb25maWcsIGdldERhdGVPcHRpb25zLCBnZXREYXRlUmFuZ2VEZWZhdWx0IH0gZnJvbSBcIi4uL2RlZmluZXMvZGF0ZS1vcHRpb25zLmRlZmluZVwiO1xuaW1wb3J0IHsgSUVtaXREYXRlQ2FsZW5kYXIsIElFbWl0RGF0ZVJhbmdlLCBJRW1pdFNpbmdsZURhdGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbWl0LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSURhdGVSYW5nZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLXZhcmlhYmxlcy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElDYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvbkNvbmZpZyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BpY2tlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZVBpY2tlckN1c3RvbVJhbmdlc0NhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSBcIi4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1waWNrZXItY3VzdG9tX3JhbmdlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDYWxlbmRhckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZVBpY2tlckN1c3RvbVJhbmdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgc2hvd0NhbFRhYmxlSW5SYW5nZXMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgcXVpY2tSYW5nZXNBcnJheSA9IHNpZ25hbDxBcnJheTxJRGF0ZVJhbmdlPj4oW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRRdWlja1JhbmdlID0gc2lnbmFsPHN0cmluZz4oJycpOyAvLyBxdWljayByYW5nZSDEkcOjIMSRxrDhu6NjIGzGsHUgdHLGsOG7m2MgxJHDs1xuICBwcm90ZWN0ZWQgY2hvc2VuUXVpY2tSYW5nZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIHF1aWNrIHJhbmdlIMSRYW5nIMSRxrDhu6NjIGNo4buNblxuXG4gIHByaXZhdGUgY2FsZW5kYXJTaG93aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSB0aW1lb3V0cyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG4gIHByaXZhdGUgY2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJQ2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBjaG9zZW5TaW5nbGVEYXRlID0gc2lnbmFsPElFbWl0U2luZ2xlRGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBjaG9zZW5EYXRlUmFuZ2UgPSBzaWduYWw8SUVtaXREYXRlUmFuZ2UgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIElOUFVUICovXG4gIC8vIHJlYWRvbmx5IFNlbGVjdGVkUXVpY2tSYW5nZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGV4dGVuZFJhbmdlcyA9IGlucHV0PEFycmF5PElEYXRlUmFuZ2U+PihbXSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlQYXJlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGF1dG9BcHBseSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBtYXhEYXRlID0gaW5wdXQ8RGF5anMgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGxpc3RZZWFySGlkZGVuSW5wdXRTZWFyY2ggPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuXG5cbiAgcmVhZG9ubHkgcG9zaXRpb25RdWlja1JhbmdlcyA9IGlucHV0PCdsZWZ0JyB8ICdyaWdodCcsICdsZWZ0JyB8ICdyaWdodCc+KCdsZWZ0JywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJ2xlZnQnIH0pO1xuICByZWFkb25seSBpc1NpbmdsZSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgaGFzVGltZVBpY2tlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBmbGFnTW91c2UgPSBpbnB1dDxJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuICByZWFkb25seSBkYXRlT3B0aW9ucyA9IGlucHV0PExvY2FsaXphdGlvbkNvbmZpZz4oeyAuLi5kZWZhdWx0TG9jYWxlQ29uZmlnKCksIC4uLmdldERhdGVPcHRpb25zKCkgfSk7XG4gIHJlYWRvbmx5IGFsd2F5c1Nob3dDYWxlbmRhcnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZSA9IG1vZGVsPERheWpzIHwgdW5kZWZpbmVkPihnZXREYXlqczxEYXlqcz4oKS5zdGFydE9mKCdkYXknKSk7XG4gIHJlYWRvbmx5IGVuZERhdGUgPSBtb2RlbDxEYXlqcyB8IHVuZGVmaW5lZD4oZ2V0RGF5anM8RGF5anM+KCkuZW5kT2YoJ2RheScpKTtcbiAgcmVhZG9ubHkgc2hvd0N1c3RvbVJhbmdlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWQgPSBpbnB1dDxJRW1pdFNpbmdsZURhdGUgfCB1bmRlZmluZWQsIElFbWl0U2luZ2xlRGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGUgPSB2YWx1ZS5kYXRlO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGUgPSBnZXREYXlqczxEYXlqcz4oeyBkYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgZGF0ZVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZWFkb25seSBkYXRlUmFuZ2VTZWxlY3RlZCA9IGlucHV0PElFbWl0RGF0ZVJhbmdlIHwgdW5kZWZpbmVkLCBJRW1pdERhdGVSYW5nZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHN0YXJ0RGF0ZSA9IHZhbHVlLnN0YXJ0RGF0ZTtcbiAgICAgIGxldCBlbmREYXRlID0gdmFsdWUuZW5kRGF0ZTtcblxuICAgICAgaWYgKHR5cGVvZiBzdGFydERhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0YXJ0RGF0ZSA9IGdldERheWpzPERheWpzPih7IGRhdGU6IHN0YXJ0RGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBlbmREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBlbmREYXRlID0gZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogZW5kRGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udmFsdWUsXG4gICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuICByZWFkb25seSBvdXRVcGRhdGVXaWR0aCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IG91dENhbmNlbCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IG91dFNlbGVjdFNpbmdsZURhdGUgPSBvdXRwdXQ8SUVtaXRTaW5nbGVEYXRlPigpO1xuICByZWFkb25seSBvdXRTZWxlY3REYXRlUmFuZ2UgPSBvdXRwdXQ8SUVtaXREYXRlUmFuZ2U+KCk7XG4gIHJlYWRvbmx5IG91dENsaWNrTWVudVJhbmdlQ3VzdG9tID0gb3V0cHV0PFRZUEVfT0JKRUNUPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB1bnRyYWNrZWQodGhpcy5vbkFmdGVyVmlld0luaXQuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkFmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZ2V0RGF5anM8RGF5anM+KCkuc3RhcnRPZignZGF5JykpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLmVuZERhdGUuc2V0KGdldERheWpzPERheWpzPigpLmVuZE9mKCdkYXknKSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGVSYW5nZVNlbGVjdGVkID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpO1xuICAgIGNvbnN0IHNpbmdsZURhdGVTZWxlY3RlZCA9IHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkKCk7XG4gICAgY29uc3QgY3VzdG9tUmFuZ2UgPSB7XG4gICAgICBpZDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnLFxuICAgICAgbGFiZWw6IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCB8fCAnJ1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc1NpbmdsZSgpKSB7XG4gICAgICBpZiAodGhpcy5oYXNUaW1lUGlja2VyKCkpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gZ2V0RGF5anM8RGF5anM+KCk7XG5cbiAgICAgICAgdGhpcy5zdGFydERhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50LnNldCgnaG91cicsIDEwKS5zZXQoJ21pbnV0ZScsIDMwKTtcbiAgICAgICAgICAgIC8vIGN1cnJlbnQuaG91cihub3cuaG91cigpKS5taW51dGUobm93Lm1pbnV0ZSgpKTtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbmREYXRlLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY3VycmVudC5ob3VyKG5vdy5ob3VyKCkpLm1pbnV0ZShub3cubWludXRlKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChzaW5nbGVEYXRlU2VsZWN0ZWQ/LmRhdGUpIHtcbiAgICAgICAgdGhpcy5zdGFydERhdGUuc2V0KGdldERheWpzPERheWpzPih7IGRhdGU6IHNpbmdsZURhdGVTZWxlY3RlZC5kYXRlIH0pKTtcbiAgICAgICAgdGhpcy5lbmREYXRlLnNldChnZXREYXlqczxEYXlqcz4oeyBkYXRlOiBzaW5nbGVEYXRlU2VsZWN0ZWQuZGF0ZSB9KSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbmRlclJhbmdlcygpO1xuXG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZVJhbmdlU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWlja1JhbmdlLnNldChkYXRlUmFuZ2VTZWxlY3RlZC5xdWlja1JhbmdlSWQgPyBkYXRlUmFuZ2VTZWxlY3RlZC5xdWlja1JhbmdlSWQgOiBjdXN0b21SYW5nZS5pZCk7XG4gICAgICB0aGlzLmNob3NlblF1aWNrUmFuZ2Uuc2V0KGRhdGVSYW5nZVNlbGVjdGVkLnF1aWNrUmFuZ2VJZCA/PyBjdXN0b21SYW5nZS5pZCk7XG5cbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChnZXREYXlqczxEYXlqcz4oeyBkYXRlOiBkYXRlUmFuZ2VTZWxlY3RlZC5zdGFydERhdGUgfSkpO1xuICAgICAgdGhpcy5lbmREYXRlLnNldChnZXREYXlqczxEYXlqcz4oeyBkYXRlOiBkYXRlUmFuZ2VTZWxlY3RlZC5lbmREYXRlIH0pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUXVpY2tSYW5nZS5zZXQoY3VzdG9tUmFuZ2UuaWQpO1xuICAgICAgdGhpcy5jaG9zZW5RdWlja1JhbmdlLnNldChjdXN0b21SYW5nZS5pZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkUXVpY2tSYW5nZSgpID09PSB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlclJhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVXaWR0aCgpIHtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3V0VXBkYXRlV2lkdGguZW1pdCgxKTtcbiAgICB9KSBhcyB1bmtub3duIGFzIG51bWJlcjtcblxuICAgIHRoaXMudGltZW91dHMudXBkYXRlKGlkcyA9PiBbLi4uaWRzLCB0aW1lb3V0SWRdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUmFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJhbmdlc0RlZmF1bHQgPSBnZXREYXRlUmFuZ2VEZWZhdWx0KCk7XG4gICAgY29uc3QgcmFuZ2VzID0gdGhpcy5kYXRlT3B0aW9ucygpPy5yYW5nZXM7XG5cbiAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkuc2V0KFtdKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhbmdlcykge1xuICAgICAgY29uc3QgcmFuZ2VWYWx1ZSA9IHJhbmdlc0RlZmF1bHRba2V5XTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0RGF5anM8RGF5anM+KHsgZGF0ZTogcmFuZ2VWYWx1ZVswXSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IGVuZCA9IGdldERheWpzPERheWpzPih7IGRhdGU6IHJhbmdlVmFsdWVbMV0sIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG5cbiAgICAgIHRoaXMucXVpY2tSYW5nZXNBcnJheS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQucHVzaCh7XG4gICAgICAgICAgaWQ6IGtleSxcbiAgICAgICAgICBsYWJlbDogcmFuZ2VzW2tleV0sXG4gICAgICAgICAgdmFsdWVzOiBbc3RhcnQsIGVuZF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0N1c3RvbVJhbmdlTGFiZWwoKSAmJiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIHRoaXMucXVpY2tSYW5nZXNBcnJheS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQucHVzaCh7XG4gICAgICAgICAgaWQ6IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4dGVuZFJhbmdlcygpKSB7XG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnVuc2hpZnQoLi4udGhpcy5leHRlbmRSYW5nZXMoKSk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnF1aWNrUmFuZ2VzQXJyYXkoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2FuY2VsKCkge1xuICAgIHRoaXMub3V0Q2FuY2VsLmVtaXQoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQaWNrZXJEYXRlKGV2ZW50OiBJRW1pdERhdGVDYWxlbmRhcikge1xuICAgIHRoaXMuY2hvc2VuU2luZ2xlRGF0ZS5zZXQoe1xuICAgICAgZGlzcGxheUxhYmVsOiBldmVudC5kaXNwbGF5TGFiZWwsXG4gICAgICBkYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICB2YWx1ZXM6IGV2ZW50LmRldGFpbERhdGVQaWNrZXIuc3RhcnQoKVxuICAgIH0pO1xuICAgIGlmICghdGhpcy5pc1NpbmdsZSgpICYmIGV2ZW50LnN0YXJ0RGF0ZSAmJiAhZXZlbnQuZW5kRGF0ZSkge1xuICAgICAgY29uc3QgZW5kVGltZSA9IGV2ZW50LmRldGFpbERhdGVQaWNrZXIuZW5kKCk7XG4gICAgICBldmVudC5lbmREYXRlID0gZXZlbnQuc3RhcnREYXRlLmNsb25lKCkuaG91cihlbmRUaW1lLmhvdXIgYXMgbnVtYmVyKS5taW51dGUoZW5kVGltZS5taW51dGUgYXMgbnVtYmVyKS5zZWNvbmQoNTkpO1xuICAgIH1cbiAgICB0aGlzLmNob3NlbkRhdGVSYW5nZS5zZXQoe1xuICAgICAgcXVpY2tSYW5nZUlkOiB0aGlzLmNob3NlblF1aWNrUmFuZ2UoKSxcbiAgICAgIC4uLmV2ZW50XG4gICAgfSk7XG4gICAgY29uc3QgY2hvc2VuU2luZ2xlRGF0ZSA9IHRoaXMuY2hvc2VuU2luZ2xlRGF0ZSgpO1xuICAgIGNvbnN0IGNob3NlbkRhdGVSYW5nZSA9IHRoaXMuY2hvc2VuRGF0ZVJhbmdlKCk7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGUoKSAmJiBjaG9zZW5TaW5nbGVEYXRlKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdFNpbmdsZURhdGUuZW1pdChjaG9zZW5TaW5nbGVEYXRlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWNob3NlbkRhdGVSYW5nZSB8fCAoIWNob3NlbkRhdGVSYW5nZS5zdGFydERhdGUgJiYgIWNob3NlbkRhdGVSYW5nZS5lbmREYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dFNlbGVjdERhdGVSYW5nZS5lbWl0KGNob3NlbkRhdGVSYW5nZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrUmFuZ2UoZTogRXZlbnQsIHJhbmdlOiBJRGF0ZVJhbmdlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2hvc2VuUXVpY2tSYW5nZS5zZXQocmFuZ2UuaWQpO1xuXG4gICAgaWYgKHJhbmdlLmlkID09PSB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIGlmICghdGhpcy5jYWxlbmRhclNob3dpbmcoKSAmJiAhdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcygpKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJTaG93aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20uZW1pdChyYW5nZSk7XG4gICAgICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVXaWR0aCgpO1xuICAgIGlmICh0aGlzLmV4dGVuZFJhbmdlcygpKSB7XG4gICAgICBjb25zdCBmaW5kRXh0ZXJuYWxSYW5nZSA9IHRoaXMuZXh0ZW5kUmFuZ2VzKCkuZmluZChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHJhbmdlLmlkKTtcblxuICAgICAgaWYgKGZpbmRFeHRlcm5hbFJhbmdlICYmIHJhbmdlLmlkID09PSBmaW5kRXh0ZXJuYWxSYW5nZS5sYWJlbCkge1xuICAgICAgICBpZiAoZmluZEV4dGVybmFsUmFuZ2UudmFsdWVzKSB7XG4gICAgICAgICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdCh7IHF1aWNrUmFuZ2VJZDogZmluZEV4dGVybmFsUmFuZ2UuaWQsIGRpc3BsYXlMYWJlbDogZmluZEV4dGVybmFsUmFuZ2UubGFiZWwsIHN0YXJ0RGF0ZTogZmluZEV4dGVybmFsUmFuZ2UudmFsdWVzWzBdLCBlbmREYXRlOiBmaW5kRXh0ZXJuYWxSYW5nZS52YWx1ZXNbMV0gfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdCh7IHF1aWNrUmFuZ2VJZDogZmluZEV4dGVybmFsUmFuZ2UuaWQsIGRpc3BsYXlMYWJlbDogZmluZEV4dGVybmFsUmFuZ2UubGFiZWwsIHN0YXJ0RGF0ZTogdW5kZWZpbmVkLCBlbmREYXRlOiB1bmRlZmluZWQgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBjb25zdCBkYXRlcyA9IHJhbmdlLnZhbHVlcyA/PyBbXTtcblxuICAgIC8vIHRoaXMuc3RhcnREYXRlLnNldChkYXRlc1swXS5jbG9uZSgpLmhvdXIoMCkubWludXRlKDApLnNlY29uZCgwKSk7XG4gICAgLy8gdGhpcy5lbmREYXRlLnNldChkYXRlc1sxXS5jbG9uZSgpLmhvdXIoMjMpLm1pbnV0ZSg1OSkuc2Vjb25kKDU5KSk7XG4gICAgLy8gdGhpcy50aW1lVmFsdWUgPSB7IGhvdXI6IDAsIHRvSG91cjogMCwgbWludXRlOiAyMywgdG9NaW51dGU6IDU5IH07XG4gICAgLy8gdGhpcy50aW1lcGlja2VyVmFyaWFibGVzLmxlZnQuc2VsZWN0ZWRIb3VyID0gMDtcbiAgICAvLyB0aGlzLnRpbWVwaWNrZXJWYXJpYWJsZXMubGVmdC5zZWxlY3RlZE1pbnV0ZSA9IDA7XG4gICAgLy8gdGhpcy50aW1lcGlja2VyVmFyaWFibGVzLnJpZ2h0LnNlbGVjdGVkSG91ciA9IDIzO1xuICAgIC8vIHRoaXMudGltZXBpY2tlclZhcmlhYmxlcy5yaWdodC5zZWxlY3RlZE1pbnV0ZSA9IDU5O1xuXG4gICAgLy8gdGhpcy5zaG93UmFuZ2VMYWJlbE9uSW5wdXQgJiYgbGFiZWwgIT09IHRoaXMubG9jYWxlRGF5LmN1c3RvbVJhbmdlTGFiZWwgPyB0aGlzLmNob3NlbkxhYmVsID0gbGFiZWwgOiB0aGlzLmNhbGN1bGF0ZUNob3NlbkxhYmVsKCk7XG5cbiAgICAvLyAvLyB0aGlzLmF1dG9BcHBseS5zZXQodHJ1ZSk7XG4gICAgLy8gaWYgKCF0aGlzLmhhc1RpbWVQaWNrZXIoKSkge1xuICAgIC8vICAgaWYodGhpcy5zdGFydERhdGUoKSkge1xuICAgIC8vICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQodGhpcy5zdGFydERhdGUoKT8uc3RhcnRPZignZGF5JykpO1xuICAgIC8vICAgfVxuICAgIC8vICAgaWYodGhpcy5lbmREYXRlKCkpIHtcbiAgICAvLyAgICAgdGhpcy5lbmREYXRlLnNldCh0aGlzLmVuZERhdGUoKT8uZW5kT2YoJ2RheScpKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8gaWYgKCF0aGlzLmFsd2F5c1Nob3dDYWxlbmRhcnMoKSkge1xuICAgIC8vICAgdGhpcy5jYWxlbmRhclNob3dpbmcuc2V0KGZhbHNlKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5vdXRDbGlja1JhbmdlLmVtaXQocmFuZ2UpO1xuXG4gICAgaWYgKCF0aGlzLmtlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2UoKSB8fCAhdGhpcy5hbHdheXNTaG93Q2FsZW5kYXJzKCkpIHtcbiAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IHJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IHJhbmdlLmxhYmVsLCBzdGFydERhdGU6IHJhbmdlLnZhbHVlcz8uWzBdLCBlbmREYXRlOiByYW5nZS52YWx1ZXM/LlsxXSB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBpZiAodGhpcy50aW1lUGlja2VyKSB7XG4gICAgLy8gICB0aGlzLnJlbmRlclRpbWVQaWNrZXIoU2lkZUVudW0ubGVmdCk7XG4gICAgLy8gICB0aGlzLnJlbmRlclRpbWVQaWNrZXIoU2lkZUVudW0ucmlnaHQpO1xuICAgIC8vIH1cbiAgICAvLyBpZiAodGhpcy5nZXRNYXhEYXRlKCkgJiYgdGhpcy5nZXRNYXhEYXRlKCkuaXNTYW1lKGRhdGVzWzBdLCAnbW9udGgnKSkge1xuICAgIC8vICAgdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoID0gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoICYmIHRoaXMucmlnaHRDYWxlbmRhci5tb250aC5tb250aChkYXRlc1swXS5tb250aCgpKTtcbiAgICAvLyAgIHRoaXMucmlnaHRDYWxlbmRhci5tb250aCA9IHRoaXMucmlnaHRDYWxlbmRhci5tb250aCAmJiB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGgueWVhcihkYXRlc1swXS55ZWFyKCkpO1xuICAgIC8vICAgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggPSB0aGlzLmxlZnRDYWxlbmRhci5tb250aCAmJiB0aGlzLmxlZnRDYWxlbmRhci5tb250aC5tb250aChkYXRlc1swXS5tb250aCgpIC0gMSk7XG4gICAgLy8gICB0aGlzLmxlZnRDYWxlbmRhci5tb250aCA9IHRoaXMubGVmdENhbGVuZGFyLm1vbnRoICYmIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoLnllYXIoZGF0ZXNbMV0ueWVhcigpKTtcblxuICAgIC8vICAgcmV0dXJuIHRoaXMudXBkYXRlQ2FsZW5kYXJzKCk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoID0gdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGgubW9udGgoZGF0ZXNbMF0ubW9udGgoKSk7XG4gICAgLy8gdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGggPSB0aGlzLmxlZnRDYWxlbmRhci5tb250aCAmJiB0aGlzLmxlZnRDYWxlbmRhci5tb250aC55ZWFyKGRhdGVzWzBdLnllYXIoKSk7XG4gICAgLy8gY29uc3QgbmV4dE1vbnRoID0gZGF0ZXNbMF0uY2xvbmUoKS5hZGQoMSwgJ21vbnRoJyk7XG5cbiAgICAvLyB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggPSB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoLm1vbnRoKG5leHRNb250aC5tb250aCgpKTtcbiAgICAvLyB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggPSB0aGlzLnJpZ2h0Q2FsZW5kYXIubW9udGggJiYgdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoLnllYXIobmV4dE1vbnRoLnllYXIoKSk7XG4gICAgLy8gdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tDYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgLy8gdGhpcy5zdGFydERhdGUuc2V0KGRheWpzKDApKTtcbiAgICAvLyB0aGlzLmVuZERhdGUuc2V0KGRheWpzKDApKTtcbiAgICB0aGlzLm91dENhbmNlbC5lbWl0KCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlRmxhZ01vdXNlKGZsYWdNb3VzZTogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdNb3VzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woZXZlbnQ6IElDYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5jYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50LnNldChldmVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRpbWVvdXRzKCkuZm9yRWFjaChpdGVtID0+IGNsZWFyVGltZW91dChpdGVtKSk7XG4gICAgLy8gdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIC8vIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgI3BpY2tlckNvbnRhaW5lclxuICBjbGFzcz1cImxpYnMtdWktY29tcG9uZW50LWN1c3RvbV9yYW5nZXMgZmxleCByb3VuZGVkLVs0cHhdIGJnLVsjZmZmZmZmXSB6LVsxMDAwXSBvdmVyZmxvdy1oaWRkZW5cIlxuICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCdcIj5cbiAgQGlmICghaXNTaW5nbGUoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWNvbXBvbmVudC1jdXN0b21fcmFuZ2VzLXJhbmdlcyB7eyBjbGFzc0luY2x1ZGUoKSB8fCAnJyB9fVwiXG4gICAgICBbY2xhc3MuYm9yZGVyLWwtWyNlNmU4ZWRdXT1cInBvc2l0aW9uUXVpY2tSYW5nZXMoKSA9PT0gJ3JpZ2h0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy5ib3JkZXItbF09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCcgJiYgc2hvd0NhbFRhYmxlSW5SYW5nZXMoKVwiXG4gICAgICBbY2xhc3MuYm9yZGVyLXItWyNlNmU4ZWRdXT1cInBvc2l0aW9uUXVpY2tSYW5nZXMoKSA9PT0gJ2xlZnQnICYmIHNob3dDYWxUYWJsZUluUmFuZ2VzKClcIlxuICAgICAgW2NsYXNzLmJvcmRlci1yXT1cInBvc2l0aW9uUXVpY2tSYW5nZXMoKSA9PT0gJ2xlZnQnICYmIHNob3dDYWxUYWJsZUluUmFuZ2VzKClcIlxuICAgICAgW2NsYXNzLiFtaW4taC1bMjYwcHhdXT1cInNob3dDYWxUYWJsZUluUmFuZ2VzKCkgJiYgIWlzU2luZ2xlKClcIlxuICAgICAgW2NsYXNzLiFtaW4taC1bMzAwcHhdXT1cImhhc1RpbWVQaWNrZXIoKSAmJiAhaXNTaW5nbGUoKVwiXG4gICAgICBbY2xhc3MuIXctWzE2MHB4XV09XCIhd2lkdGhCeVBhcmVudCgpXCJcbiAgICAgIFtjbGFzcy4hdy1mdWxsXT1cIndpZHRoQnlQYXJlbnQoKVwiPlxuICAgICAgQGZvciAocmFuZ2Ugb2YgcXVpY2tSYW5nZXNBcnJheSgpOyB0cmFjayByYW5nZS5pZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaG92ZXI6YmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldIGN1cnNvci1wb2ludGVyIHB4LVsxNnB4XSBweS1bOHB4XVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktc2VsZWN0ZWQtcmFuZ2VdPVwicmFuZ2UuaWQgPT09IGNob3NlblF1aWNrUmFuZ2UoKSAmJiBzaG93Q3VzdG9tUmFuZ2VMYWJlbCgpXCJcbiAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldXT1cInJhbmdlLmlkID09PSBjaG9zZW5RdWlja1JhbmdlKCkgfHwgcmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrUmFuZ2UoJGV2ZW50LCByYW5nZSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1mb250LWg1ciBmbGV4IHRleHQtWyMzMzMzMzNdIG1pbi13LTAgdy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cInttYXhXaWR0aDoxNjAsZGlyZWN0aW9uOid0b3AnLHpJbmRleDooekluZGV4KCkgfHwxMDAwKSArIDF9XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyYW5nZS5sYWJlbFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LVsxMnB4XSBtbC1bMTZweF1cIlxuICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktaWNvbi1jaGVja109XCJyYW5nZS5pZCA9PT0gc2VsZWN0ZWRRdWlja1JhbmdlKClcIlxuICAgICAgICAgICAgW2NsYXNzLnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cInJhbmdlLmlkID09PSBzZWxlY3RlZFF1aWNrUmFuZ2UoKVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmIChzaG93Q2FsVGFibGVJblJhbmdlcygpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm0tWzE2cHhdIHctZnVsbFwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1waWNrZXItY3VzdG9tX3Jhbmdlcy1jYWxlbmRhciBbaXNTaW5nbGVdPVwiaXNTaW5nbGUoKVwiXG4gICAgICAgIFthdXRvQXBwbHldPVwiYXV0b0FwcGx5KClcIlxuICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgW2ZsYWdNb3VzZV09XCJmbGFnTW91c2UoKVwiXG4gICAgICAgIFtkYXRlT3B0aW9uc109XCJkYXRlT3B0aW9ucygpXCJcbiAgICAgICAgW2hhc1RpbWVQaWNrZXJdPVwiaGFzVGltZVBpY2tlcigpXCJcbiAgICAgICAgW3F1aWNrUmFuZ2VzQXJyYXldPVwicXVpY2tSYW5nZXNBcnJheSgpXCJcbiAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGUoKVwiXG4gICAgICAgIFtlbmREYXRlXT1cImVuZERhdGUoKVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUoKVwiXG4gICAgICAgIFtsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoXT1cImxpc3RZZWFySGlkZGVuSW5wdXRTZWFyY2goKVwiXG4gICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3ctZnVsbCdcIlxuICAgICAgICAob3V0Q2FuY2VsKT1cImhhbmRsZXJDYW5jZWwoKVwiXG4gICAgICAgIChvdXRQaWNrZXJEYXRlKT1cImhhbmRsZXJQaWNrZXJEYXRlKCRldmVudClcIlxuICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbCgkZXZlbnQpXCJcbiAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nZUZsYWdNb3VzZSgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -1648,10 +1648,10 @@ class LibsUiComponentsDatetimePickerCustomRangesComponent {
|
|
|
1648
1648
|
date: event.startDate,
|
|
1649
1649
|
values: event.detailDatePicker.start()
|
|
1650
1650
|
});
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1651
|
+
if (!this.isSingle() && event.startDate && !event.endDate) {
|
|
1652
|
+
const endTime = event.detailDatePicker.end();
|
|
1653
|
+
event.endDate = event.startDate.clone().hour(endTime.hour).minute(endTime.minute).second(59);
|
|
1654
|
+
}
|
|
1655
1655
|
this.chosenDateRange.set({
|
|
1656
1656
|
quickRangeId: this.chosenQuickRange(),
|
|
1657
1657
|
...event
|