@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
153 lines • 22.7 kB
JavaScript
import { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';
export var QueryDataItemValueType;
(function (QueryDataItemValueType) {
QueryDataItemValueType["SingleDropdown"] = "SingleDropdown";
QueryDataItemValueType["TextInput"] = "TextInput";
QueryDataItemValueType["MultiSelectDropdown"] = "MultiSelectDropdown";
QueryDataItemValueType["TimespanDropdown"] = "TimespanDropdown";
QueryDataItemValueType["Disabled"] = "Disabled";
})(QueryDataItemValueType || (QueryDataItemValueType = {}));
export var QueryDataOperand;
(function (QueryDataOperand) {
QueryDataOperand["Eq"] = "=";
QueryDataOperand["Gt"] = ">";
QueryDataOperand["Lt"] = "<";
QueryDataOperand["Nq"] = "!=";
QueryDataOperand["Dropdowns"] = ":";
})(QueryDataOperand || (QueryDataOperand = {}));
export var ApplyMode;
(function (ApplyMode) {
ApplyMode[ApplyMode["Lazy"] = 0] = "Lazy";
ApplyMode[ApplyMode["Active"] = 1] = "Active";
})(ApplyMode || (ApplyMode = {}));
export class QueryDataItemPresetGenerator {
itemGenerator(column, operand, value, irremovable, disabled, icon) {
const res = {
column: column,
operand: operand,
value: value,
irremovable: irremovable ? irremovable : false,
isEditing: false,
disabled: disabled ? disabled : false
};
if (icon) {
res.icon = icon;
}
// validating the preset pills
res.invalid = false;
if (res.value) {
if (res.value.type === QueryDataItemValueType.TextInput || res.value.type === QueryDataItemValueType.SingleDropdown) {
if (res.value.value === '') {
res.invalid = true;
res.value.isValueUnset = true;
}
}
else if (res.value.type === QueryDataItemValueType.MultiSelectDropdown) {
if (!res.value.value || !res.value.value.length) {
res.invalid = true;
res.value.isValueUnset = true;
}
}
else if (res.value.type === QueryDataItemValueType.TimespanDropdown) {
if (!res.value.value) {
res.invalid = true;
res.value.isValueUnset = true;
}
}
}
return res;
}
editingItem(input) {
input.isEditing = true;
return input;
}
columnGenerator(label, value, uneditable) {
return {
label: label,
value: value,
uneditable: uneditable ? uneditable : false
};
}
valueGenerator(value, type, searchable = true, temporaryValue) {
const res = {
value: value ? value : '',
type: type || QueryDataItemValueType.TextInput,
temporaryValue: temporaryValue ? temporaryValue : '',
isValueUnset: true
};
if (type === QueryDataItemValueType.MultiSelectDropdown || type === QueryDataItemValueType.SingleDropdown) {
res.options = [];
}
if (type === QueryDataItemValueType.TextInput || type === QueryDataItemValueType.SingleDropdown
|| type === QueryDataItemValueType.MultiSelectDropdown) {
if (!value || !value.length) {
if (temporaryValue && temporaryValue.length) {
res.value = temporaryValue;
}
else {
res.isValueUnset = true;
if (typeof value === 'string') {
res.value = res.temporaryValue = '';
}
else {
res.value = res.temporaryValue = [];
}
}
}
else {
if (!temporaryValue || !temporaryValue.length) {
res.temporaryValue = value;
}
else {
if (value !== temporaryValue) {
res.temporaryValue = res.value;
}
}
res.isValueUnset = false;
}
}
else if (type === QueryDataItemValueType.TimespanDropdown) {
const presetLabel = value && value.label ? value.label : 'TODO: Localization Custom';
res.customDisplayLabel = presetLabel;
try {
value = value.value;
if (!value || !value.isValid()) {
if (temporaryValue) {
res.value = temporaryValue;
}
else {
res.isValueUnset = true;
res.value = res.temporaryValue = new DateRange();
}
}
else {
res.temporaryValue = value;
res.value = value;
res.isValueUnset = false;
}
// Initialize the default value display on the query editor for timespan dropdown
res.tooltip = res.value.toString();
}
catch (e) { }
}
else {
// It deals with when 'type' is not specified
if (!MsftSme.isNullOrWhiteSpace(value) &&
!(typeof res.value === 'string' && MsftSme.isNullOrWhiteSpace(res.value)) ||
!(typeof res.value === 'object' && !res.value.length)) {
res.isValueUnset = false;
}
}
if (typeof value === 'object' && type !== QueryDataItemValueType.TimespanDropdown) {
res.type = QueryDataItemValueType.MultiSelectDropdown;
}
if (searchable && (res.type === QueryDataItemValueType.MultiSelectDropdown || res.type === QueryDataItemValueType.SingleDropdown)) {
res.searchable = true;
}
else if (!searchable || res.type === QueryDataItemValueType.TextInput || res.type === QueryDataItemValueType.TimespanDropdown) {
res.searchable = false;
}
return res;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZWRpdG9yLWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcXVlcnktZWRpdG9yL3F1ZXJ5LWVkaXRvci1jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0RBQStELENBQUM7QUE4QjFGLE1BQU0sQ0FBTixJQUFZLHNCQU1YO0FBTkQsV0FBWSxzQkFBc0I7SUFDOUIsMkRBQWlDLENBQUE7SUFDakMsaURBQXVCLENBQUE7SUFDdkIscUVBQTJDLENBQUE7SUFDM0MsK0RBQXFDLENBQUE7SUFDckMsK0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQU5XLHNCQUFzQixLQUF0QixzQkFBc0IsUUFNakM7QUFvQkQsTUFBTSxDQUFOLElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUN4Qiw0QkFBUSxDQUFBO0lBQ1IsNEJBQVEsQ0FBQTtJQUNSLDRCQUFRLENBQUE7SUFDUiw2QkFBUyxDQUFBO0lBQ1QsbUNBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUVELE1BQU0sQ0FBTixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDakIseUNBQVUsQ0FBQTtJQUNWLDZDQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBRUQsTUFBTSxPQUFPLDRCQUE0QjtJQUM5QixhQUFhLENBQ2hCLE1BQTJCLEVBQzNCLE9BQXlCLEVBQ3pCLEtBQXlCLEVBQ3pCLFdBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLElBQWE7UUFDYixNQUFNLEdBQUcsR0FBa0I7WUFDdkIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFD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LElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMvSCxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN6QjthQUFNLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3SCxHQUFHLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUMxQjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RhdGUvZGF0ZS1yYW5nZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RGF0YUl0ZW0ge1xyXG4gICAgY29sdW1uOiBRdWVyeURhdGFJdGVtQ29sdW1uO1xyXG4gICAgb3BlcmFuZDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IFF1ZXJ5RGF0YUl0ZW1WYWx1ZTtcclxuICAgIGlzRWRpdGluZzogYm9vbGVhbjtcclxuICAgIGlycmVtb3ZhYmxlPzogYm9vbGVhbjtcclxuICAgIGludmFsaWQ/OiBib29sZWFuO1xyXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gICAgaWNvbj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeURhdGFJdGVtQ29sdW1uIHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICB2YWx1ZTogc3RyaW5nO1xyXG4gICAgdW5lZGl0YWJsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlEYXRhSXRlbVZhbHVlIHtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgICB0eXBlOiBRdWVyeURhdGFJdGVtVmFsdWVUeXBlO1xyXG4gICAgdGVtcG9yYXJ5VmFsdWU/OiBhbnk7XHJcbiAgICBvcHRpb25zPzogb2JqZWN0O1xyXG4gICAgaXNWYWx1ZVVuc2V0PzogYm9vbGVhbjtcclxuICAgIHNlYXJjaGFibGU/OiBib29sZWFuO1xyXG4gICAgdG9vbHRpcD86IHN0cmluZztcclxuICAgIGN1c3RvbURpc3BsYXlMYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZSB7XHJcbiAgICBTaW5nbGVEcm9wZG93biA9ICdTaW5nbGVEcm9wZG93bicsXHJcbiAgICBUZXh0SW5wdXQgPSAnVGV4dElucHV0JyxcclxuICAgIE11bHRpU2VsZWN0RHJvcGRvd24gPSAnTXVsdGlTZWxlY3REcm9wZG93bicsXHJcbiAgICBUaW1lc3BhbkRyb3Bkb3duID0gJ1RpbWVzcGFuRHJvcGRvd24nLFxyXG4gICAgRGlzYWJsZWQgPSAnRGlzYWJsZWQnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlEYXRhIHtcclxuICAgIGNvbnRlbnRzOiBRdWVyeURhdGFJdGVtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlEYXRhSXRlbVByZXNldE9wdGlvbnMge1xyXG4gICAgY29udGVudHM6IFF1ZXJ5RGF0YUl0ZW1QcmVzZXRPcHRpb25bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeURhdGFJdGVtUHJlc2V0T3B0aW9uIHtcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nO1xyXG4gICAgZmllbGRWYWx1ZTogUXVlcnlEYXRhSXRlbVByZXNldE9wdGlvbkNvbnRlbnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeURhdGFJdGVtUHJlc2V0T3B0aW9uQ29udGVudCB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IERhdGVSYW5nZTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUXVlcnlEYXRhT3BlcmFuZCB7XHJcbiAgICBFcSA9ICc9JyxcclxuICAgIEd0ID0gJz4nLFxyXG4gICAgTHQgPSAnPCcsXHJcbiAgICBOcSA9ICchPScsXHJcbiAgICBEcm9wZG93bnMgPSAnOidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQXBwbHlNb2RlIHtcclxuICAgICdMYXp5JyA9IDAsXHJcbiAgICAnQWN0aXZlJyA9IDFcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGF0YUl0ZW1QcmVzZXRHZW5lcmF0b3Ige1xyXG4gICAgcHVibGljIGl0ZW1HZW5lcmF0b3IoXHJcbiAgICAgICAgY29sdW1uOiBRdWVyeURhdGFJdGVtQ29sdW1uLFxyXG4gICAgICAgIG9wZXJhbmQ6IFF1ZXJ5RGF0YU9wZXJhbmQsXHJcbiAgICAgICAgdmFsdWU6IFF1ZXJ5RGF0YUl0ZW1WYWx1ZSxcclxuICAgICAgICBpcnJlbW92YWJsZT86IGJvb2xlYW4sXHJcbiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuLFxyXG4gICAgICAgIGljb24/OiBzdHJpbmcpOiBRdWVyeURhdGFJdGVtIHtcclxuICAgICAgICBjb25zdCByZXM6IFF1ZXJ5RGF0YUl0ZW0gPSB7XHJcbiAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxyXG4gICAgICAgICAgICBvcGVyYW5kOiBvcGVyYW5kLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIGlycmVtb3ZhYmxlOiBpcnJlbW92YWJsZSA/IGlycmVtb3ZhYmxlIDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRWRpdGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCA/IGRpc2FibGVkIDogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChpY29uKSB7XHJcbiAgICAgICAgICAgIHJlcy5pY29uID0gaWNvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHZhbGlkYXRpbmcgdGhlIHByZXNldCBwaWxsc1xyXG4gICAgICAgIHJlcy5pbnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlcy52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAocmVzLnZhbHVlLnR5cGUgPT09IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuVGV4dElucHV0IHx8IHJlcy52YWx1ZS50eXBlID09PSBRdWVyeURhdGFJdGVtVmFsdWVUeXBlLlNpbmdsZURyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnZhbHVlLnZhbHVlID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5pbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXMudmFsdWUuaXNWYWx1ZVVuc2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMudmFsdWUudHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5NdWx0aVNlbGVjdERyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcy52YWx1ZS52YWx1ZSB8fCAhcmVzLnZhbHVlLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5pbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXMudmFsdWUuaXNWYWx1ZVVuc2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMudmFsdWUudHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5UaW1lc3BhbkRyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcy52YWx1ZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5pbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXMudmFsdWUuaXNWYWx1ZVVuc2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlZGl0aW5nSXRlbShpbnB1dDogUXVlcnlEYXRhSXRlbSkge1xyXG4gICAgICAgIGlucHV0LmlzRWRpdGluZyA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb2x1bW5HZW5lcmF0b3IoXHJcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcclxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgICAgIHVuZWRpdGFibGU/OiBib29sZWFuKTogUXVlcnlEYXRhSXRlbUNvbHVtbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIHVuZWRpdGFibGU6IHVuZWRpdGFibGUgPyB1bmVkaXRhYmxlIDogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWx1ZUdlbmVyYXRvcihcclxuICAgICAgICB2YWx1ZTogYW55LFxyXG4gICAgICAgIHR5cGU/OiBRdWVyeURhdGFJdGVtVmFsdWVUeXBlLFxyXG4gICAgICAgIHNlYXJjaGFibGUgPSB0cnVlLFxyXG4gICAgICAgIHRlbXBvcmFyeVZhbHVlPzogYW55XHJcbiAgICApOiBRdWVyeURhdGFJdGVtVmFsdWUge1xyXG4gICAgICAgIGNvbnN0IHJlczogUXVlcnlEYXRhSXRlbVZhbHVlID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6ICcnLFxyXG4gICAgICAgICAgICB0eXBlOiB0eXBlIHx8IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuVGV4dElucHV0LFxyXG4gICAgICAgICAgICB0ZW1wb3JhcnlWYWx1ZTogdGVtcG9yYXJ5VmFsdWUgPyB0ZW1wb3JhcnlWYWx1ZSA6ICcnLFxyXG4gICAgICAgICAgICBpc1ZhbHVlVW5zZXQ6IHRydWVcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5NdWx0aVNlbGVjdERyb3Bkb3duIHx8IHR5cGUgPT09IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuU2luZ2xlRHJvcGRvd24pIHtcclxuICAgICAgICAgICAgcmVzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlID09PSBRdWVyeURhdGFJdGVtVmFsdWVUeXBlLlRleHRJbnB1dCB8fCB0eXBlID09PSBRdWVyeURhdGFJdGVtVmFsdWVUeXBlLlNpbmdsZURyb3Bkb3duXHJcbiAgICAgICAgICAgIHx8IHR5cGUgPT09IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuTXVsdGlTZWxlY3REcm9wZG93bikge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlWYWx1ZSAmJiB0ZW1wb3JhcnlWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXMudmFsdWUgPSB0ZW1wb3JhcnlWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmlzVmFsdWVVbnNldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlID0gcmVzLnRlbXBvcmFyeVZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlID0gcmVzLnRlbXBvcmFyeVZhbHVlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlWYWx1ZSB8fCAhdGVtcG9yYXJ5VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnRlbXBvcmFyeVZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdGVtcG9yYXJ5VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnRlbXBvcmFyeVZhbHVlID0gcmVzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlcy5pc1ZhbHVlVW5zZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5UaW1lc3BhbkRyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZXNldExhYmVsID0gdmFsdWUgJiYgdmFsdWUubGFiZWwgPyB2YWx1ZS5sYWJlbCA6ICdUT0RPOiBMb2NhbGl6YXRpb24gQ3VzdG9tJztcclxuICAgICAgICAgICAgcmVzLmN1c3RvbURpc3BsYXlMYWJlbCA9IHByZXNldExhYmVsO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMudmFsdWUgPSB0ZW1wb3JhcnlWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuaXNWYWx1ZVVuc2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlID0gcmVzLnRlbXBvcmFyeVZhbHVlID0gbmV3IERhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnRlbXBvcmFyeVZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmlzVmFsdWVVbnNldCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB2YWx1ZSBkaXNwbGF5IG9uIHRoZSBxdWVyeSBlZGl0b3IgZm9yIHRpbWVzcGFuIGRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICByZXMudG9vbHRpcCA9IHJlcy52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBJdCBkZWFscyB3aXRoIHdoZW4gJ3R5cGUnIGlzIG5vdCBzcGVjaWZpZWRcclxuICAgICAgICAgICAgaWYgKCFNc2Z0U21lLmlzTnVsbE9yV2hpdGVTcGFjZSh2YWx1ZSkgJiZcclxuICAgICAgICAgICAgICAgICEodHlwZW9mIHJlcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UocmVzLnZhbHVlKSkgfHxcclxuICAgICAgICAgICAgICAgICEodHlwZW9mIHJlcy52YWx1ZSA9PT0gJ29iamVjdCcgJiYgIXJlcy52YWx1ZS5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXMuaXNWYWx1ZVVuc2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuVGltZXNwYW5Ecm9wZG93bikge1xyXG4gICAgICAgICAgICByZXMudHlwZSA9IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuTXVsdGlTZWxlY3REcm9wZG93bjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZWFyY2hhYmxlICYmIChyZXMudHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5NdWx0aVNlbGVjdERyb3Bkb3duIHx8IHJlcy50eXBlID09PSBRdWVyeURhdGFJdGVtVmFsdWVUeXBlLlNpbmdsZURyb3Bkb3duKSkge1xyXG4gICAgICAgICAgICByZXMuc2VhcmNoYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghc2VhcmNoYWJsZSB8fCByZXMudHlwZSA9PT0gUXVlcnlEYXRhSXRlbVZhbHVlVHlwZS5UZXh0SW5wdXQgfHwgcmVzLnR5cGUgPT09IFF1ZXJ5RGF0YUl0ZW1WYWx1ZVR5cGUuVGltZXNwYW5Ecm9wZG93bikge1xyXG4gICAgICAgICAgICByZXMuc2VhcmNoYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxufVxyXG4iXX0=