cps-ui-kit 18.1.0 → 18.2.0
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.
|
@@ -79,6 +79,11 @@ export class CpsSchedulerComponent {
|
|
|
79
79
|
* @group Props
|
|
80
80
|
*/
|
|
81
81
|
this.showAdvanced = true;
|
|
82
|
+
/**
|
|
83
|
+
* Determines whether to show the 'Minutes' tab.
|
|
84
|
+
* @group Props
|
|
85
|
+
*/
|
|
86
|
+
this.showMinutes = true;
|
|
82
87
|
/**
|
|
83
88
|
* Determines whether to show the time zone selector.
|
|
84
89
|
* @group Props
|
|
@@ -140,6 +145,12 @@ export class CpsSchedulerComponent {
|
|
|
140
145
|
if (!this.showAdvanced) {
|
|
141
146
|
this.scheduleTypes.pop();
|
|
142
147
|
}
|
|
148
|
+
if (!this.showMinutes) {
|
|
149
|
+
const minutesIndex = this.scheduleTypes.findIndex((option) => option.value === 'Minutes');
|
|
150
|
+
if (minutesIndex !== -1) {
|
|
151
|
+
this.scheduleTypes.splice(minutesIndex, 1);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
143
154
|
if (!this.showNotSet) {
|
|
144
155
|
this.scheduleTypes.shift();
|
|
145
156
|
if (!this.cron)
|
|
@@ -624,7 +635,7 @@ export class CpsSchedulerComponent {
|
|
|
624
635
|
return isNaN(res) ? 0 : res;
|
|
625
636
|
}
|
|
626
637
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsSchedulerComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
627
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.3", type: CpsSchedulerComponent, isStandalone: true, selector: "cps-scheduler", inputs: { label: "label", cron: "cron", timeZone: "timeZone", showNotSet: "showNotSet", showAdvanced: "showAdvanced", showTimeZone: "showTimeZone", defaultTime: "defaultTime", use24HourTime: "use24HourTime", disabled: "disabled", infoTooltip: "infoTooltip" }, outputs: { cronChange: "cronChange", timeZoneChange: "timeZoneChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cps-scheduler-selector\">\n <cps-button-toggle\n [options]=\"scheduleTypes\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [infoTooltip]=\"infoTooltip\"\n [(ngModel)]=\"activeScheduleType\"\n (ngModelChange)=\"setActiveScheduleType($event)\">\n </cps-button-toggle>\n</div>\n\n<div\n [ngSwitch]=\"activeScheduleType\"\n class=\"cps-scheduler-container\"\n [ngClass]=\"{ 'cps-scheduler-container-disabled': disabled }\">\n <div *ngSwitchCase=\"'Not set'\" class=\"cps-scheduler-tab-pane\"></div>\n\n <div *ngSwitchCase=\"'Minutes'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.minutes.minutes\"\n [options]=\"selectOptions.minutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n minute(s)\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Hourly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.hours\"\n [options]=\"selectOptions.hours\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n hour(s) on minute\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.minutes\"\n [options]=\"selectOptions.fullMinutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Daily'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.daily.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'everyDays', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyDays'\n }\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.daily.everyDays.days\"\n [options]=\"selectOptions.monthDays\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n day(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyDays)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyDays)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n <cps-radio [option]=\"{ value: 'everyWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyWeekDay'\n }\">\n Every working day at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyWeekDay)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Weekly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-days-checkbox-group\">\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Monday\"\n [(ngModel)]=\"state.weekly.MON\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Tuesday\"\n [(ngModel)]=\"state.weekly.TUE\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Wednesday\"\n [(ngModel)]=\"state.weekly.WED\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Thursday\"\n [(ngModel)]=\"state.weekly.THU\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Friday\"\n [(ngModel)]=\"state.weekly.FRI\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Saturday\"\n [(ngModel)]=\"state.weekly.SAT\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Sunday\"\n [(ngModel)]=\"state.weekly.SUN\">\n </cps-checkbox>\n </div>\n <div class=\"cps-scheduler-tab-pane-row\">\n at\n <cps-timepicker\n [disabled]=\"disabled\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.weekly)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.weekly)\">\n </cps-timepicker>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Monthly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.monthly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificDay'\n }\">\n On the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.monthly.specificDay)\">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.monthly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificWeekDay'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"130px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"90px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) starting in\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.startMonth\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.monthly.specificWeekDay)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Yearly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.yearly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificMonthDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthDay'\n }\">\n Every\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n on the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthDay)\n \">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.yearly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificMonthWeek', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthWeek'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthWeek)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthWeek)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Advanced'\">\n <form [formGroup]=\"form\">\n <cps-input\n label=\"\"\n [disabled]=\"disabled\"\n width=\"500px\"\n placeholder=\"Please enter\"\n formControlName=\"advanced\"\n (valueChanged)=\"regenerateCron()\">\n </cps-input>\n </form>\n </div>\n <div class=\"cps-scheduler-time-zone\" *ngIf=\"cron && showTimeZone\">\n <cps-autocomplete\n label=\"Time zone\"\n [(ngModel)]=\"timeZone\"\n (valueChanged)=\"onTimeZoneChanged($event)\"\n [returnObject]=\"false\"\n width=\"300\"\n [options]=\"timeZoneOptions\"></cps-autocomplete>\n </div>\n</div>\n", styles: [":host .cps-scheduler-selector{margin-bottom:24px}:host .cps-scheduler-container{margin-top:10px;margin-left:16px}:host .cps-scheduler-container .cps-scheduler-select-control{margin-left:8px;margin-right:8px}:host .cps-scheduler-container .cps-scheduler-days-checkbox-group{max-width:700px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-template-rows:1fr 1fr;grid-gap:20px;margin-bottom:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane{margin-bottom:28px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-radio-group ::ng-deep .cps-radio-group-content{margin-left:0!important}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row{display:flex;align-items:center}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row-disabled{color:var(--cps-color-text-light)}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-nearest-weekday-checkbox{margin-left:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-timepicker{margin-left:8px}:host .cps-scheduler-container-disabled{color:var(--cps-color-text-light)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "optionIcon", "optionIconColor", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "showChevron", "value"], outputs: ["valueChanged", "focused", "blurred"] }, { kind: "component", type: CpsRadioGroupComponent, selector: "cps-radio-group", inputs: ["options", "groupLabel", "vertical", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "hint", "hideDetails", "value"], outputs: ["valueChanged", "blurred", "focused"] }, { kind: "component", type: CpsRadioComponent, selector: "cps-radio", inputs: ["option"] }, { kind: "component", type: CpsCheckboxComponent, selector: "cps-checkbox", inputs: ["label", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "icon", "iconColor", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsTimepickerComponent, selector: "cps-timepicker", inputs: ["label", "disabled", "use24HourTime", "withSeconds", "hint", "hideDetails", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "mandatoryValue", "value"], outputs: ["valueChanged", "focused", "blurred"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "loadingMessage", "showLoadingMessage", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "emptyOptionIndex", "inputChangeDebounceTime", "value", "options"], outputs: ["valueChanged", "inputChanged", "focused", "blurred"] }] }); }
|
|
638
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.3", type: CpsSchedulerComponent, isStandalone: true, selector: "cps-scheduler", inputs: { label: "label", cron: "cron", timeZone: "timeZone", showNotSet: "showNotSet", showAdvanced: "showAdvanced", showMinutes: "showMinutes", showTimeZone: "showTimeZone", defaultTime: "defaultTime", use24HourTime: "use24HourTime", disabled: "disabled", infoTooltip: "infoTooltip" }, outputs: { cronChange: "cronChange", timeZoneChange: "timeZoneChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cps-scheduler-selector\">\n <cps-button-toggle\n [options]=\"scheduleTypes\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [infoTooltip]=\"infoTooltip\"\n [(ngModel)]=\"activeScheduleType\"\n (ngModelChange)=\"setActiveScheduleType($event)\">\n </cps-button-toggle>\n</div>\n\n<div\n [ngSwitch]=\"activeScheduleType\"\n class=\"cps-scheduler-container\"\n [ngClass]=\"{ 'cps-scheduler-container-disabled': disabled }\">\n <div *ngSwitchCase=\"'Not set'\" class=\"cps-scheduler-tab-pane\"></div>\n\n <div *ngSwitchCase=\"'Minutes'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.minutes.minutes\"\n [options]=\"selectOptions.minutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n minute(s)\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Hourly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.hours\"\n [options]=\"selectOptions.hours\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n hour(s) on minute\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.minutes\"\n [options]=\"selectOptions.fullMinutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Daily'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.daily.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'everyDays', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyDays'\n }\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.daily.everyDays.days\"\n [options]=\"selectOptions.monthDays\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n day(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyDays)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyDays)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n <cps-radio [option]=\"{ value: 'everyWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyWeekDay'\n }\">\n Every working day at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyWeekDay)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Weekly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-days-checkbox-group\">\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Monday\"\n [(ngModel)]=\"state.weekly.MON\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Tuesday\"\n [(ngModel)]=\"state.weekly.TUE\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Wednesday\"\n [(ngModel)]=\"state.weekly.WED\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Thursday\"\n [(ngModel)]=\"state.weekly.THU\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Friday\"\n [(ngModel)]=\"state.weekly.FRI\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Saturday\"\n [(ngModel)]=\"state.weekly.SAT\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Sunday\"\n [(ngModel)]=\"state.weekly.SUN\">\n </cps-checkbox>\n </div>\n <div class=\"cps-scheduler-tab-pane-row\">\n at\n <cps-timepicker\n [disabled]=\"disabled\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.weekly)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.weekly)\">\n </cps-timepicker>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Monthly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.monthly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificDay'\n }\">\n On the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.monthly.specificDay)\">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.monthly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificWeekDay'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"130px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"90px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) starting in\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.startMonth\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.monthly.specificWeekDay)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Yearly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [hideDetails]=\"true\"\n [(ngModel)]=\"state.yearly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificMonthDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthDay'\n }\">\n Every\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n on the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthDay)\n \">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.yearly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificMonthWeek', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthWeek'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthWeek)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthWeek)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Advanced'\">\n <form [formGroup]=\"form\">\n <cps-input\n label=\"\"\n [disabled]=\"disabled\"\n width=\"500px\"\n placeholder=\"Please enter\"\n formControlName=\"advanced\"\n (valueChanged)=\"regenerateCron()\">\n </cps-input>\n </form>\n </div>\n <div class=\"cps-scheduler-time-zone\" *ngIf=\"cron && showTimeZone\">\n <cps-autocomplete\n label=\"Time zone\"\n [(ngModel)]=\"timeZone\"\n (valueChanged)=\"onTimeZoneChanged($event)\"\n [returnObject]=\"false\"\n width=\"300\"\n [options]=\"timeZoneOptions\"></cps-autocomplete>\n </div>\n</div>\n", styles: [":host .cps-scheduler-selector{margin-bottom:24px}:host .cps-scheduler-container{margin-top:10px;margin-left:16px}:host .cps-scheduler-container .cps-scheduler-select-control{margin-left:8px;margin-right:8px}:host .cps-scheduler-container .cps-scheduler-days-checkbox-group{max-width:700px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-template-rows:1fr 1fr;grid-gap:20px;margin-bottom:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane{margin-bottom:28px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-radio-group ::ng-deep .cps-radio-group-content{margin-left:0!important}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row{display:flex;align-items:center}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row-disabled{color:var(--cps-color-text-light)}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-nearest-weekday-checkbox{margin-left:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-timepicker{margin-left:8px}:host .cps-scheduler-container-disabled{color:var(--cps-color-text-light)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "optionIcon", "optionIconColor", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "showChevron", "value"], outputs: ["valueChanged", "focused", "blurred"] }, { kind: "component", type: CpsRadioGroupComponent, selector: "cps-radio-group", inputs: ["options", "groupLabel", "vertical", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "hint", "hideDetails", "value"], outputs: ["valueChanged", "blurred", "focused"] }, { kind: "component", type: CpsRadioComponent, selector: "cps-radio", inputs: ["option"] }, { kind: "component", type: CpsCheckboxComponent, selector: "cps-checkbox", inputs: ["label", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "icon", "iconColor", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsTimepickerComponent, selector: "cps-timepicker", inputs: ["label", "disabled", "use24HourTime", "withSeconds", "hint", "hideDetails", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "mandatoryValue", "value"], outputs: ["valueChanged", "focused", "blurred"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "loadingMessage", "showLoadingMessage", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "emptyOptionIndex", "inputChangeDebounceTime", "value", "options"], outputs: ["valueChanged", "inputChanged", "focused", "blurred"] }] }); }
|
|
628
639
|
}
|
|
629
640
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsSchedulerComponent, decorators: [{
|
|
630
641
|
type: Component,
|
|
@@ -651,6 +662,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
651
662
|
type: Input
|
|
652
663
|
}], showAdvanced: [{
|
|
653
664
|
type: Input
|
|
665
|
+
}], showMinutes: [{
|
|
666
|
+
type: Input
|
|
654
667
|
}], showTimeZone: [{
|
|
655
668
|
type: Input
|
|
656
669
|
}], defaultTime: [{
|
|
@@ -666,4 +679,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
666
679
|
}], timeZoneChange: [{
|
|
667
680
|
type: Output
|
|
668
681
|
}] } });
|
|
669
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNjaGVkdWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2NoZWR1bGVyL2Nwcy1zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNjaGVkdWxlci9jcHMtc2NoZWR1bGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFJTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQ0wsd0JBQXdCLEVBRXpCLE1BQU0sa0RBQWtELENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUV2QixNQUFNLDRDQUE0QyxDQUFDOzs7O0FBRXBELE1BQU0s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QkFBc0IsdVVBQ3RCLHdCQUF3Qjs7MkZBS2YscUJBQXFCO2tCQW5CakMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3FCQUN6QjtnSEFTUSxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFPSSxVQUFVO3NCQUFuQixNQUFNO2dCQU9HLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0aW1lWm9uZXMgfSBmcm9tICcuL2Nwcy1zY2hlZHVsZXIudXRpbHMnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXJhZGlvLWdyb3VwL2Nwcy1yYWRpby1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzUmFkaW9Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtcmFkaW8tZ3JvdXAvY3BzLXJhZGlvL2Nwcy1yYWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtY2hlY2tib3gvY3BzLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1hdXRvY29tcGxldGUvY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ3BzQnV0dG9uVG9nZ2xlQ29tcG9uZW50LFxuICBDcHNCdXR0b25Ub2dnbGVPcHRpb25cbn0gZnJvbSAnLi4vY3BzLWJ1dHRvbi10b2dnbGUvY3BzLWJ1dHRvbi10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENwc1RpbWVwaWNrZXJDb21wb25lbnQsXG4gIENwc1RpbWVcbn0gZnJvbSAnLi4vY3BzLXRpbWVwaWNrZXIvY3BzLXRpbWVwaWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgRGF5cyA9IHtcbiAgTU9OOiAnTW9uZGF5JyxcbiAgVFVFOiAnVHVlc2RheScsXG4gIFdFRDogJ1dlZG5lc2RheScsXG4gIFRIVTogJ1RodXJzZGF5JyxcbiAgRlJJOiAnRnJpZGF5JyxcbiAgU0FUOiAnU2F0dXJkYXknLFxuICBTVU46ICdTdW5kYXknXG59O1xuXG5jb25zdCBNb250aFdlZWtzID0ge1xuICAnIzEnOiAnRmlyc3QnLFxuICAnIzInOiAnU2Vjb25kJyxcbiAgJyMzJzogJ1RoaXJkJyxcbiAgJyM0JzogJ0ZvdXJ0aCcsXG4gICcjNSc6ICdGaWZ0aCcsXG4gIEw6ICdMYXN0J1xufTtcblxuZW51bSBNb250aHMge1xuICBKYW51YXJ5ID0gMSxcbiAgRmVicnVhcnksXG4gIE1hcmNoLFxuICBBcHJpbCxcbiAgTWF5LFxuICBKdW5lLFxuICBKdWx5LFxuICBBdWd1c3QsXG4gIFNlcHRlbWJlcixcbiAgT2N0b2JlcixcbiAgTm92ZW1iZXIsXG4gIERlY2VtYmVyXG59XG5cbi8qKlxuICogQ3BzU2NoZWR1bGVyQ29tcG9uZW50IGlzIGEgY29tcG9uZW50IGRlc2lnbmVkIHRvIGZhY2lsaXRhdGUgdGhlIGNyZWF0aW9uIG9mIEFtYXpvbiBFdmVudEJyaWRnZSBDUk9OIGV4cHJlc3Npb25zLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXNjaGVkdWxlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDcHNCdXR0b25Ub2dnbGVDb21wb25lbnQsXG4gICAgQ3BzU2VsZWN0Q29tcG9uZW50LFxuICAgIENwc1JhZGlvR3JvdXBDb21wb25lbnQsXG4gICAgQ3BzUmFkaW9Db21wb25lbnQsXG4gICAgQ3BzQ2hlY2tib3hDb21wb25lbnQsXG4gICAgQ3BzSW5wdXRDb21wb25lbnQsXG4gICAgQ3BzVGltZXBpY2tlckNvbXBvbmVudCxcbiAgICBDcHNBdXRvY29tcGxldGVDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3BzLXNjaGVkdWxlci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgQ3BzU2NoZWR1bGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogTGFiZWwgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBDcm9uIGV4cHJlc3Npb24gdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY3JvbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaW1lIHpvbmUgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUgfHwgJ1VUQyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHRoZSAnTm90IHNldCcgdGFiLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dOb3RTZXQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgJ0FkdmFuY2VkJyB0YWIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0FkdmFuY2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIHRpbWUgem9uZSBzZWxlY3Rvci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93VGltZVpvbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmYXVsdCB0aW1lIGZvcm1hdCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBkZWZhdWx0VGltZSA9ICcwMDowMCc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byB1c2UgMjQtaG91ciB0aW1lIGZvcm1hdC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB1c2UyNEhvdXJUaW1lID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gdG9vbHRpcCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcCA9ICcnO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gY3JvbiBleHByZXNzaW9uIHZhbHVlIGNoYW5nZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIGNyb24gZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjcm9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiB0aW1lIHpvbmUgY2hhbmdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gdGltZSB6b25lIGNoYW5nZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHRpbWVab25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgc2NoZWR1bGVUeXBlczogQ3BzQnV0dG9uVG9nZ2xlT3B0aW9uW10gPSBbXG4gICAgeyBsYWJlbDogJ05vdCBzZXQnLCB2YWx1ZTogJ05vdCBzZXQnIH0sXG4gICAgeyBsYWJlbDogJ01pbnV0ZXMnLCB2YWx1ZTogJ01pbnV0ZXMnIH0sXG4gICAgeyBsYWJlbDogJ0hvdXJseScsIHZhbHVlOiAnSG91cmx5JyB9LFxuICAgIHsgbGFiZWw6ICdEYWlseScsIHZhbHVlOiAnRGFpbHknIH0sXG4gICAgeyBsYWJlbDogJ1dlZWtseScsIHZhbHVlOiAnV2Vla2x5JyB9LFxuICAgIHsgbGFiZWw6ICdNb250aGx5JywgdmFsdWU6ICdNb250aGx5JyB9LFxuICAgIHsgbGFiZWw6ICdZZWFybHknLCB2YWx1ZTogJ1llYXJseScgfSxcbiAgICB7IGxhYmVsOiAnQWR2YW5jZWQnLCB2YWx1ZTogJ0FkdmFuY2VkJyB9XG4gIF07XG5cbiAgYWN0aXZlU2NoZWR1bGVUeXBlID0gJ05vdCBzZXQnO1xuICBzZWxlY3RPcHRpb25zID0gdGhpcy5fZ2V0U2VsZWN0T3B0aW9ucygpO1xuICB0aW1lWm9uZU9wdGlvbnMgPSB0aW1lWm9uZXMubWFwKCh0eikgPT4gKHsgbGFiZWw6IHR6LCB2YWx1ZTogdHogfSkpO1xuICBzdGF0ZTogYW55O1xuICBmb3JtOiBGb3JtR3JvdXAgPSB0aGlzLl9mYi5ncm91cCh7XG4gICAgYWR2YW5jZWQ6IFsnJywgW3RoaXMuX3ZhbGlkYXRlQWR2YW5jZWRFeHByXV1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBfaXNEaXJ0eSA9IGZhbHNlO1xuICBwcml2YXRlIF9taW51dGVzRGVmYXVsdCA9ICcwLzEgKiAxLzEgKiA/IConO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5fZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FkdmFuY2VkKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlVHlwZXMucG9wKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3dOb3RTZXQpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVUeXBlcy5zaGlmdCgpO1xuICAgICAgaWYgKCF0aGlzLmNyb24pIHRoaXMuY3JvbiA9IHRoaXMuX21pbnV0ZXNEZWZhdWx0O1xuICAgIH1cbiAgICB0aGlzLl9oYW5kbGVNb2RlbENoYW5nZSh0aGlzLmNyb24pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0Nyb24gPSBjaGFuZ2VzLnZhbHVlO1xuICAgIGlmIChuZXdDcm9uICYmICFuZXdDcm9uLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9oYW5kbGVNb2RlbENoYW5nZSh0aGlzLmNyb24pO1xuICAgIH1cbiAgfVxuXG4gIHNldEFjdGl2ZVNjaGVkdWxlVHlwZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9IHZhbHVlO1xuICAgICAgdGhpcy5yZWdlbmVyYXRlQ3Jvbih0cnVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuZm9ybSkge1xuICAgICAgaWYgKHZhbHVlID09PSAnQWR2YW5jZWQnKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuYWR2YW5jZWQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmFkdmFuY2VkLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVnZW5lcmF0ZUNyb24odGFiQ2hhbmdlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzRGlydHkgPSB0cnVlO1xuXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSkge1xuICAgICAgY2FzZSAnTWludXRlcyc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNyb24oYDAvJHt0aGlzLnN0YXRlLm1pbnV0ZXMubWludXRlc30gKiAxLzEgKiA/ICpgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb3VybHknOlxuICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGUuaG91cmx5Lm1pbnV0ZXN9IDAvJHt0aGlzLnN0YXRlLmhvdXJseS5ob3Vyc30gMS8xICogPyAqYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhaWx5JzpcbiAgICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLmRhaWx5LnN1YlRhYikge1xuICAgICAgICAgIGNhc2UgJ2V2ZXJ5RGF5cyc6XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5taW51dGVzfSAke3RoaXMuX2hvdXJUb0Nyb24oXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91cnMsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gMS8ke3RoaXMuc3RhdGUuZGFpbHkuZXZlcnlEYXlzLmRheXN9ICogPyAqYFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZXZlcnlXZWVrRGF5JzpcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNyb24oXG4gICAgICAgICAgICAgIGAke3RoaXMuc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5ob3VyVHlwZVxuICAgICAgICAgICAgICApfSA/ICogTU9OLUZSSSAqYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JvbiBkYWlseSBzdWJ0YWIgc2VsZWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXZWVrbHknOiB7XG4gICAgICAgIGNvbnN0IGRheXMgPSB0aGlzLnNlbGVjdE9wdGlvbnMuZGF5c1xuICAgICAgICAgIC5tYXAoKGQpID0+IGQudmFsdWUpXG4gICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIGRheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W2RheV0gPyBhY2MuY29uY2F0KFtkYXldKSA6IGFjYyksXG4gICAgICAgICAgICBbXSBhcyBzdHJpbmdbXVxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGUud2Vla2x5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgIHRoaXMuc3RhdGUud2Vla2x5LmhvdXJzLFxuICAgICAgICAgICAgdGhpcy5zdGF0ZS53ZWVrbHkuaG91clR5cGVcbiAgICAgICAgICApfSA/ICogJHtkYXlzfSAqYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ01vbnRobHknOiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZS5tb250aGx5LnN1YlRhYikge1xuICAgICAgICAgIGNhc2UgJ3NwZWNpZmljRGF5Jzoge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5zdGF0ZS5tb250aGx5LnJ1bk9uV2Vla2RheVxuICAgICAgICAgICAgICA/IGAke3RoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5kYXl9V2BcbiAgICAgICAgICAgICAgOiB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuZGF5O1xuXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubWludXRlc30gJHt0aGlzLl9ob3VyVG9Dcm9uKFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gJHtkYXl9IDEvJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubW9udGhzfSA/ICpgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3NwZWNpZmljV2Vla0RheSc6XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5LmhvdXJzLFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gPyAke3RoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuc3RhcnRNb250aH0vJHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1vbnRoc1xuICAgICAgICAgICAgICB9ICR7dGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5kYXl9JHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1vbnRoV2Vla1xuICAgICAgICAgICAgICB9ICpgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcm9uIG1vbnRobHkgc3VidGFiIHNlbGVjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnWWVhcmx5JzpcbiAgICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLnllYXJseS5zdWJUYWIpIHtcbiAgICAgICAgICBjYXNlICdzcGVjaWZpY01vbnRoRGF5Jzoge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5zdGF0ZS55ZWFybHkucnVuT25XZWVrZGF5XG4gICAgICAgICAgICAgID8gYCR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5kYXl9V2BcbiAgICAgICAgICAgICAgOiB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheTtcblxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3JvbihcbiAgICAgICAgICAgICAgYCR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5taW51dGVzfSAke3RoaXMuX2hvdXJUb0Nyb24oXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmhvdXJUeXBlXG4gICAgICAgICAgICAgICl9ICR7ZGF5fSAke3RoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkubW9udGh9ID8gKmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnc3BlY2lmaWNNb250aFdlZWsnOlxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3JvbihcbiAgICAgICAgICAgICAgYCR7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubWludXRlc1xuICAgICAgICAgICAgICB9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VyVHlwZVxuICAgICAgICAgICAgICApfSA/ICR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGh9ICR7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuZGF5XG4gICAgICAgICAgICAgIH0ke3RoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1vbnRoV2Vla30gKmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24geWVhcmx5IHN1YnRhYiBzZWxlY3Rpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FkdmFuY2VkJzpcbiAgICAgICAgaWYgKCF0YWJDaGFuZ2UpIHRoaXMuX3VwZGF0ZUNyb24odGhpcy5mb3JtLnZhbHVlLmFkdmFuY2VkIHx8ICcnKTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmFkdmFuY2VkLnNldFZhbHVlKHRoaXMuY3Jvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuc2hvd05vdFNldCkgdGhpcy5fdXBkYXRlQ3JvbignJyk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIG9uVGltZVpvbmVDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd1RpbWVab25lKSByZXR1cm47XG4gICAgdGhpcy50aW1lWm9uZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZWQodmFsdWU6IENwc1RpbWUsIHRhcmdldDogYW55KTogdm9pZCB7XG4gICAgdGFyZ2V0LmhvdXJzID0gdGhpcy5fc3RyaW5nVG9OdW0odmFsdWUuaG91cnMpO1xuICAgIHRhcmdldC5taW51dGVzID0gdGhpcy5fc3RyaW5nVG9OdW0odmFsdWUubWludXRlcyk7XG4gICAgdGhpcy5yZWdlbmVyYXRlQ3JvbigpO1xuICB9XG5cbiAgZm9ybWF0VGltZVZhbHVlKHZhbHVlOiBhbnkpOiBDcHNUaW1lIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG91cnM6IHRoaXMuX251bVRvU3RyaW5nKHZhbHVlLmhvdXJzKSxcbiAgICAgIG1pbnV0ZXM6IHRoaXMuX251bVRvU3RyaW5nKHZhbHVlLm1pbnV0ZXMpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNyb24odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNyb24gPT09IHZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5jcm9uID0gdmFsdWU7XG4gICAgdGhpcy5jcm9uQ2hhbmdlLmVtaXQodGhpcy5jcm9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWRDcm9uKGNyb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgY3JvbiAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICghdGhpcy5zaG93Tm90U2V0KSB7XG4gICAgICBpZiAoIWNyb24pIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNyb24gPT09ICcnKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IHBhcnRzID0gY3Jvbi5zcGxpdCgnICcpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlQWR2YW5jZWRFeHByKGM6IEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgY3JvbiA9IGMudmFsdWU7XG4gICAgaWYgKCFjcm9uKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHNwbGl0cyA9IGNyb24/LnNwbGl0KCcgJykgfHwgW107XG4gICAgaWYgKHNwbGl0cy5sZW5ndGggIT09IDYpIHJldHVybiB7IGludmFsaWRFeHByZXNzaW9uOiAnSW52YWxpZCBleHByZXNzaW9uJyB9O1xuXG4gICAgY29uc3QgY3JvblNldmVuID0gYDAgJHtjcm9ufWA7XG5cbiAgICByZXR1cm4gY3JvblNldmVuLm1hdGNoKC9cXGQrIDBcXC9cXGQrIFxcKiAxXFwvMSBcXCogXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyAwXFwvXFxkKyAxXFwvMSBcXCogXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyBcXGQrIDFcXC9cXGQrIFxcKiBcXD8gXFwqLykgfHxcbiAgICAgIGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIFxcZCsgXFw/IFxcKiBNT04tRlJJIFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIChNT058VFVFfFdFRHxUSFV8RlJJfFNBVHxTVU4pKCwoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSkqIFxcKi9cbiAgICAgICkgfHxcbiAgICAgIGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIFxcZCsgKFxcZCt8THxMV3wxVykgMVxcL1xcZCsgXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkK1xcL1xcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKSB8fFxuICAgICAgY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAoXFxkK3xMfExXfDFXKSBcXGQrIFxcPyBcXCovKSB8fFxuICAgICAgY3JvblNldmVuLm1hdGNoKFxuICAgICAgICAvXFxkKyBcXGQrIFxcZCsgXFw/IFxcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKVxuICAgICAgPyBudWxsXG4gICAgICA6IHsgaW52YWxpZEV4cHJlc3Npb246ICdJbnZhbGlkIGV4cHJlc3Npb24nIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRBbVBtSG91cihob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnVzZTI0SG91clRpbWUgPyBob3VyIDogKChob3VyICsgMTEpICUgMTIpICsgMTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEhvdXJUeXBlKGhvdXI6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudXNlMjRIb3VyVGltZSA/IHVuZGVmaW5lZCA6IGhvdXIgPj0gMTIgPyAnUE0nIDogJ0FNJztcbiAgfVxuXG4gIHByaXZhdGUgX2hvdXJUb0Nyb24oaG91cjogbnVtYmVyLCBob3VyVHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy51c2UyNEhvdXJUaW1lKSB7XG4gICAgICByZXR1cm4gaG91cjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhvdXJUeXBlID09PSAnQU0nXG4gICAgICAgID8gaG91ciA9PT0gMTJcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IGhvdXJcbiAgICAgICAgOiBob3VyID09PSAxMlxuICAgICAgICAgID8gMTJcbiAgICAgICAgICA6IGhvdXIgKyAxMjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVNb2RlbENoYW5nZShjcm9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWRDcm9uKGNyb24pKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGNyb24gdmFsdWU6JywgY3Jvbik7XG4gICAgICB0aGlzLmNyb24gPSB0aGlzLnNob3dOb3RTZXQgPyAnJyA6IHRoaXMuX21pbnV0ZXNEZWZhdWx0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc0RpcnR5KSB7XG4gICAgICB0aGlzLl9pc0RpcnR5ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lzRGlydHkgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWNyb24gfHwgY3Jvbi5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdOb3Qgc2V0JztcbiAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3JvblNldmVuID0gYDAgJHtjcm9ufWA7XG5cbiAgICBjb25zdCBbbWludXRlcywgaG91cnMsIGRheU9mTW9udGgsIG1vbnRoLCBkYXlPZldlZWtdID0gY3Jvbi5zcGxpdCgnICcpO1xuXG4gICAgaWYgKGNyb25TZXZlbi5tYXRjaCgvXFxkKyAwXFwvXFxkKyBcXCogMVxcLzEgXFwqIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnTWludXRlcyc7XG5cbiAgICAgIHRoaXMuc3RhdGUubWludXRlcy5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMuc3Vic3RyaW5nKDIpKTtcbiAgICB9IGVsc2UgaWYgKGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIDBcXC9cXGQrIDFcXC8xIFxcKiBcXD8gXFwqLykpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0hvdXJseSc7XG5cbiAgICAgIHRoaXMuc3RhdGUuaG91cmx5LmhvdXJzID0gTnVtYmVyKGhvdXJzLnN1YnN0cmluZygyKSk7XG4gICAgICB0aGlzLnN0YXRlLmhvdXJseS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAxXFwvXFxkKyBcXCogXFw/IFxcKi8pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdEYWlseSc7XG5cbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuc3ViVGFiID0gJ2V2ZXJ5RGF5cyc7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5kYXlzID0gTnVtYmVyKGRheU9mTW9udGguc3Vic3RyaW5nKDIpKTtcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuZXZlcnlEYXlzLmhvdXJzID0gdGhpcy5fZ2V0QW1QbUhvdXIocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91clR5cGUgPSB0aGlzLl9nZXRIb3VyVHlwZShwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIE1PTi1GUkkgXFwqLykpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0RhaWx5JztcblxuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5zdWJUYWIgPSAnZXZlcnlXZWVrRGF5JztcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5LmhvdXJzID0gdGhpcy5fZ2V0QW1QbUhvdXIocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeVdlZWtEYXkuaG91clR5cGUgPSB0aGlzLl9nZXRIb3VyVHlwZShwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIChNT058VFVFfFdFRHxUSFV8RlJJfFNBVHxTVU4pKCwoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSkqIFxcKi9cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ1dlZWtseSc7XG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbnMuZGF5c1xuICAgICAgICAubWFwKChkKSA9PiBkLnZhbHVlKVxuICAgICAgICAuZm9yRWFjaCgod2Vla0RheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W3dlZWtEYXldID0gZmFsc2UpKTtcbiAgICAgIGRheU9mV2Vla1xuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAuZm9yRWFjaCgod2Vla0RheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W3dlZWtEYXldID0gdHJ1ZSkpO1xuICAgICAgY29uc3QgcGFyc2VkSG91cnMgPSBOdW1iZXIoaG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS53ZWVrbHkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLndlZWtseS5ob3VyVHlwZSA9IHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUud2Vla2x5Lm1pbnV0ZXMgPSBOdW1iZXIobWludXRlcyk7XG4gICAgfSBlbHNlIGlmIChjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyBcXGQrIChcXGQrfEx8TFd8MVcpIDFcXC9cXGQrIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnTW9udGhseSc7XG4gICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3ViVGFiID0gJ3NwZWNpZmljRGF5JztcblxuICAgICAgaWYgKGRheU9mTW9udGguaW5kZXhPZignVycpICE9PSAtMSkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuZGF5ID0gZGF5T2ZNb250aC5jaGFyQXQoMCk7XG4gICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5ydW5PbldlZWtkYXkgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljRGF5LmRheSA9IGRheU9mTW9udGg7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5tb250aHMgPSBOdW1iZXIobW9udGguc3Vic3RyaW5nKDIpKTtcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VycyA9IHRoaXMuX2dldEFtUG1Ib3VyKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VyVHlwZSA9IHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkK1xcL1xcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3QgZGF5ID0gZGF5T2ZXZWVrLnN1YnN0cmluZygwLCAzKTtcbiAgICAgIGNvbnN0IG1vbnRoV2VlayA9IGRheU9mV2Vlay5zdWJzdHJpbmcoMyk7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdNb250aGx5JztcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zdWJUYWIgPSAnc3BlY2lmaWNXZWVrRGF5JztcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkubW9udGhXZWVrID0gbW9udGhXZWVrO1xuICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5kYXkgPSBkYXk7XG5cbiAgICAgIGlmIChtb250aC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IFtzdGFydE1vbnRoLCBtb250aHNdID0gbW9udGguc3BsaXQoJy8nKS5tYXAoTnVtYmVyKTtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aHMgPSBtb250aHM7XG4gICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuc3RhcnRNb250aCA9IHN0YXJ0TW9udGg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5LmhvdXJUeXBlID1cbiAgICAgICAgdGhpcy5fZ2V0SG91clR5cGUocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAoXFxkK3xMfExXfDFXKSBcXGQrIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnWWVhcmx5JztcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnN1YlRhYiA9ICdzcGVjaWZpY01vbnRoRGF5JztcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkubW9udGggPSBOdW1iZXIobW9udGgpO1xuXG4gICAgICBpZiAoZGF5T2ZNb250aC5pbmRleE9mKCdXJykgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkuZGF5ID0gZGF5T2ZNb250aC5jaGFyQXQoMCk7XG4gICAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnJ1bk9uV2Vla2RheSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheSA9IGRheU9mTW9udGg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmhvdXJUeXBlID1cbiAgICAgICAgdGhpcy5fZ2V0SG91clR5cGUocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkKyAoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSgoI1sxLTVdKXxMKSBcXCovXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXkgPSBkYXlPZldlZWsuc3Vic3RyaW5nKDAsIDMpO1xuICAgICAgY29uc3QgbW9udGhXZWVrID0gZGF5T2ZXZWVrLnN1YnN0cmluZygzKTtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ1llYXJseSc7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zdWJUYWIgPSAnc3BlY2lmaWNNb250aFdlZWsnO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGhXZWVrID0gbW9udGhXZWVrO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuZGF5ID0gZGF5O1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGggPSBOdW1iZXIobW9udGgpO1xuICAgICAgY29uc3QgcGFyc2VkSG91cnMgPSBOdW1iZXIoaG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuaG91cnMgPVxuICAgICAgICB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VyVHlwZSA9XG4gICAgICAgIHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1pbnV0ZXMgPSBOdW1iZXIobWludXRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0FkdmFuY2VkJztcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5zZXRWYWx1ZShjcm9uKTtcbiAgICB9XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRTdGF0ZSgpIHtcbiAgICBjb25zdCBbZGVmYXVsdEhvdXJzLCBkZWZhdWx0TWludXRlc10gPSB0aGlzLmRlZmF1bHRUaW1lXG4gICAgICAuc3BsaXQoJzonKVxuICAgICAgLm1hcChOdW1iZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbnV0ZXM6IHtcbiAgICAgICAgbWludXRlczogMVxuICAgICAgfSxcbiAgICAgIGhvdXJseToge1xuICAgICAgICBob3VyczogMSxcbiAgICAgICAgbWludXRlczogMFxuICAgICAgfSxcbiAgICAgIGRhaWx5OiB7XG4gICAgICAgIHN1YlRhYjogJ2V2ZXJ5RGF5cycsXG4gICAgICAgIGV2ZXJ5RGF5czoge1xuICAgICAgICAgIGRheXM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfSxcbiAgICAgICAgZXZlcnlXZWVrRGF5OiB7XG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHdlZWtseToge1xuICAgICAgICBNT046IHRydWUsXG4gICAgICAgIFRVRTogZmFsc2UsXG4gICAgICAgIFdFRDogZmFsc2UsXG4gICAgICAgIFRIVTogZmFsc2UsXG4gICAgICAgIEZSSTogZmFsc2UsXG4gICAgICAgIFNBVDogZmFsc2UsXG4gICAgICAgIFNVTjogZmFsc2UsXG4gICAgICAgIGhvdXJzOiB0aGlzLl9nZXRBbVBtSG91cihkZWZhdWx0SG91cnMpLFxuICAgICAgICBtaW51dGVzOiBkZWZhdWx0TWludXRlcyxcbiAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgIH0sXG4gICAgICBtb250aGx5OiB7XG4gICAgICAgIHN1YlRhYjogJ3NwZWNpZmljRGF5JyxcbiAgICAgICAgcnVuT25XZWVrZGF5OiBmYWxzZSxcbiAgICAgICAgc3BlY2lmaWNEYXk6IHtcbiAgICAgICAgICBkYXk6ICcxJyxcbiAgICAgICAgICBtb250aHM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfSxcbiAgICAgICAgc3BlY2lmaWNXZWVrRGF5OiB7XG4gICAgICAgICAgbW9udGhXZWVrOiAnIzEnLFxuICAgICAgICAgIGRheTogJ01PTicsXG4gICAgICAgICAgc3RhcnRNb250aDogMSxcbiAgICAgICAgICBtb250aHM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHllYXJseToge1xuICAgICAgICBzdWJUYWI6ICdzcGVjaWZpY01vbnRoRGF5JyxcbiAgICAgICAgcnVuT25XZWVrZGF5OiBmYWxzZSxcbiAgICAgICAgc3BlY2lmaWNNb250aERheToge1xuICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgIGRheTogJzEnLFxuICAgICAgICAgIGhvdXJzOiB0aGlzLl9nZXRBbVBtSG91cihkZWZhdWx0SG91cnMpLFxuICAgICAgICAgIG1pbnV0ZXM6IGRlZmF1bHRNaW51dGVzLFxuICAgICAgICAgIGhvdXJUeXBlOiB0aGlzLl9nZXRIb3VyVHlwZShkZWZhdWx0SG91cnMpXG4gICAgICAgIH0sXG4gICAgICAgIHNwZWNpZmljTW9udGhXZWVrOiB7XG4gICAgICAgICAgbW9udGhXZWVrOiAnIzEnLFxuICAgICAgICAgIGRheTogJ01PTicsXG4gICAgICAgICAgbW9udGg6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFkdmFuY2VkOiB7XG4gICAgICAgIGV4cHJlc3Npb246IHRoaXMuY3JvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRSYW5nZShzdGFydEZyb206IG51bWJlciwgdW50aWw6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiB1bnRpbCArIDEgLSBzdGFydEZyb20gfSxcbiAgICAgIChfLCBrKSA9PiBrICsgc3RhcnRGcm9tXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlbGVjdE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vbnRoc051bWVyaWM6IHRoaXMuX2dldFJhbmdlKDEsIDEyKS5tYXAoKG1vbnRoKSA9PiAoe1xuICAgICAgICBsYWJlbDogbW9udGgsXG4gICAgICAgIHZhbHVlOiBtb250aFxuICAgICAgfSkpLFxuICAgICAgbW9udGhzOiB0aGlzLl9nZXRSYW5nZSgxLCAxMikubWFwKChtb250aCkgPT4gKHtcbiAgICAgICAgbGFiZWw6IE1vbnRoc1ttb250aF0sXG4gICAgICAgIHZhbHVlOiBtb250aFxuICAgICAgfSkpLFxuICAgICAgbW9udGhXZWVrczogT2JqZWN0LmVudHJpZXMoTW9udGhXZWVrcykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgdmFsdWU6IGtleVxuICAgICAgfSkpLFxuICAgICAgZGF5czogT2JqZWN0LmVudHJpZXMoRGF5cykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgdmFsdWU6IGtleVxuICAgICAgfSkpLFxuICAgICAgbWludXRlczogdGhpcy5fZ2V0UmFuZ2UoMSwgNTkpLm1hcCgobWluKSA9PiAoe1xuICAgICAgICBsYWJlbDogbWluLFxuICAgICAgICB2YWx1ZTogbWluXG4gICAgICB9KSksXG4gICAgICBmdWxsTWludXRlczogdGhpcy5fZ2V0UmFuZ2UoMCwgNTkpLm1hcCgobWluKSA9PiAoe1xuICAgICAgICBsYWJlbDogdGhpcy5fbnVtVG9TdHJpbmcobWluKSxcbiAgICAgICAgdmFsdWU6IG1pblxuICAgICAgfSkpLFxuICAgICAgaG91cnM6IHRoaXMuX2dldFJhbmdlKDEsIDIzKS5tYXAoKGhvdXIpID0+ICh7XG4gICAgICAgIGxhYmVsOiBob3VyLFxuICAgICAgICB2YWx1ZTogaG91clxuICAgICAgfSkpLFxuICAgICAgbW9udGhEYXlzOiB0aGlzLl9nZXRSYW5nZSgxLCAzMSkubWFwKChkYXkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBkYXksXG4gICAgICAgIHZhbHVlOiBkYXlcbiAgICAgIH0pKSxcbiAgICAgIG1vbnRoRGF5c1dpdGhMYXN0czogWy4uLnRoaXMuX2dldFJhbmdlKDEsIDMxKS5tYXAoU3RyaW5nKSwgJ0wnXS5tYXAoXG4gICAgICAgIChtZGwpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMuX2dldE1vbnRoRGF5TGFiZWwobWRsKSxcbiAgICAgICAgICAgIHZhbHVlOiBtZGxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1vbnRoRGF5TGFiZWwobW9udGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKG1vbnRoID09PSAnTCcpIHtcbiAgICAgIHJldHVybiAnTGFzdCBEYXknO1xuICAgIH0gZWxzZSBpZiAobW9udGggPT09ICdMVycpIHtcbiAgICAgIHJldHVybiAnTGFzdCBXZWVrZGF5JztcbiAgICB9IGVsc2UgaWYgKG1vbnRoID09PSAnMVcnKSB7XG4gICAgICByZXR1cm4gJ0ZpcnN0IFdlZWtkYXknO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgc3VmZml4ID0gJyc7XG4gICAgICBpZiAobW9udGgubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzZWNvbmRUb0xhc3REaWdpdCA9IG1vbnRoLmNoYXJBdChtb250aC5sZW5ndGggLSAyKTtcbiAgICAgICAgaWYgKHNlY29uZFRvTGFzdERpZ2l0ID09PSAnMScpIHtcbiAgICAgICAgICBzdWZmaXggPSAndGgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXN1ZmZpeCkge1xuICAgICAgICBjb25zdCBsYXN0RGlnaXQgPSBtb250aC5jaGFyQXQobW9udGgubGVuZ3RoIC0gMSk7XG4gICAgICAgIHN3aXRjaCAobGFzdERpZ2l0KSB7XG4gICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICBzdWZmaXggPSAnc3QnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICBzdWZmaXggPSAnbmQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICBzdWZmaXggPSAncmQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHN1ZmZpeCA9ICd0aCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7bW9udGh9JHtzdWZmaXh9IGRheWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbnVtVG9TdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gOSA/ICcwJyArIHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0cmluZ1RvTnVtKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHJlcyA9IE51bWJlcih2YWx1ZSk7XG4gICAgcmV0dXJuIGlzTmFOKHJlcykgPyAwIDogcmVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3RvclwiPlxuICA8Y3BzLWJ1dHRvbi10b2dnbGVcbiAgICBbb3B0aW9uc109XCJzY2hlZHVsZVR5cGVzXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW2luZm9Ub29sdGlwXT1cImluZm9Ub29sdGlwXCJcbiAgICBbKG5nTW9kZWwpXT1cImFjdGl2ZVNjaGVkdWxlVHlwZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QWN0aXZlU2NoZWR1bGVUeXBlKCRldmVudClcIj5cbiAgPC9jcHMtYnV0dG9uLXRvZ2dsZT5cbjwvZGl2PlxuXG48ZGl2XG4gIFtuZ1N3aXRjaF09XCJhY3RpdmVTY2hlZHVsZVR5cGVcIlxuICBjbGFzcz1cImNwcy1zY2hlZHVsZXItY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnY3BzLXNjaGVkdWxlci1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCI+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidOb3Qgc2V0J1wiIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZVwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidNaW51dGVzJ1wiIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiPlxuICAgICAgRXZlcnlcbiAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUubWludXRlcy5taW51dGVzXCJcbiAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5taW51dGVzXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICBtaW51dGUocylcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0hvdXJseSdcIiBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIj5cbiAgICAgIEV2ZXJ5XG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmhvdXJseS5ob3Vyc1wiXG4gICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMuaG91cnNcIlxuICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgIGhvdXIocykgb24gbWludXRlXG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmhvdXJseS5taW51dGVzXCJcbiAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5mdWxsTWludXRlc1wiXG4gICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgPC9jcHMtc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInRGFpbHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGNwcy1yYWRpby1ncm91cFxuICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5kYWlseS5zdWJUYWJcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCI+XG4gICAgICA8Y3BzLXJhZGlvIFtvcHRpb25dPVwieyB2YWx1ZTogJ2V2ZXJ5RGF5cycsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS5kYWlseS5zdWJUYWIgIT09ICdldmVyeURheXMnXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIEV2ZXJ5XG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUuZGFpbHkuc3ViVGFiICE9PSAnZXZlcnlEYXlzJ1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5kYXlzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhEYXlzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBkYXkocykgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5kYWlseS5zdWJUYWIgIT09ICdldmVyeURheXMnXCJcbiAgICAgICAgICAgIFt1c2UyNEhvdXJUaW1lXT1cInVzZTI0SG91clRpbWVcIlxuICAgICAgICAgICAgW21hbmRhdG9yeVZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdFRpbWVWYWx1ZShzdGF0ZS5kYWlseS5ldmVyeURheXMpXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25UaW1lQ2hhbmdlZCgkZXZlbnQsIHN0YXRlLmRhaWx5LmV2ZXJ5RGF5cylcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY3BzLXJhZGlvPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdldmVyeVdlZWtEYXknLCBkaXNhYmxlZDogZGlzYWJsZWQgfVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Nwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93LWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgc3RhdGUuZGFpbHkuc3ViVGFiICE9PSAnZXZlcnlXZWVrRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBFdmVyeSB3b3JraW5nIGRheSBhdFxuICAgICAgICAgIDxjcHMtdGltZXBpY2tlclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLmRhaWx5LnN1YlRhYiAhPT0gJ2V2ZXJ5V2Vla0RheSdcIlxuICAgICAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgICAgICBbbWFuZGF0b3J5VmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0VGltZVZhbHVlKHN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheSlcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5KVwiPlxuICAgICAgICAgIDwvY3BzLXRpbWVwaWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jcHMtcmFkaW8+XG4gICAgPC9jcHMtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidXZWVrbHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1zY2hlZHVsZXItZGF5cy1jaGVja2JveC1ncm91cFwiPlxuICAgICAgPGNwcy1jaGVja2JveFxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBsYWJlbD1cIk1vbmRheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5Lk1PTlwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiVHVlc2RheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlRVRVwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiV2VkbmVzZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuV0VEXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgbGFiZWw9XCJUaHVyc2RheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlRIVVwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiRnJpZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuRlJJXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgbGFiZWw9XCJTYXR1cmRheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlNBVFwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiU3VuZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuU1VOXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIj5cbiAgICAgIGF0XG4gICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgW3ZhbHVlXT1cImZvcm1hdFRpbWVWYWx1ZShzdGF0ZS53ZWVrbHkpXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uVGltZUNoYW5nZWQoJGV2ZW50LCBzdGF0ZS53ZWVrbHkpXCI+XG4gICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInTW9udGhseSdcIiBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmVcIj5cbiAgICA8Y3BzLXJhZGlvLWdyb3VwXG4gICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkuc3ViVGFiXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICBbdmVydGljYWxdPVwidHJ1ZVwiPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY0RheScsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBPbiB0aGVcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCIxMjBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljRGF5LmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoRGF5c1dpdGhMYXN0c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb2YgZXZlcnlcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCI3MHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubW9udGhzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhzTnVtZXJpY1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgbW9udGgocykgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUubW9udGhseS5zcGVjaWZpY0RheSlcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUubW9udGhseS5zcGVjaWZpY0RheSlcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY0RheSdcIlxuICAgICAgICAgICAgbGFiZWw9XCJEdXJpbmcgdGhlIG5lYXJlc3Qgd2Vla2RheVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkucnVuT25XZWVrZGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1uZWFyZXN0LXdlZWtkYXktY2hlY2tib3hcIj5cbiAgICAgICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cblxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY1dlZWtEYXknLCBkaXNhYmxlZDogZGlzYWJsZWQgfVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Nwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93LWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY1dlZWtEYXknXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIE9uIHRoZVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwNnB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aFdlZWtcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aFdlZWtzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCIxMzBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY1dlZWtEYXknXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuZGF5XCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMuZGF5c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb2YgZXZlcnlcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCI5MHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aHNcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aHNOdW1lcmljXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBtb250aChzKSBzdGFydGluZyBpblxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5zdGFydE1vbnRoXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBhdFxuICAgICAgICAgIDxjcHMtdGltZXBpY2tlclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLm1vbnRobHkuc3ViVGFiICE9PSAnc3BlY2lmaWNXZWVrRGF5J1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkpXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwiXG4gICAgICAgICAgICAgIG9uVGltZUNoYW5nZWQoJGV2ZW50LCBzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheSlcbiAgICAgICAgICAgIFwiPlxuICAgICAgICAgIDwvY3BzLXRpbWVwaWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jcHMtcmFkaW8+XG4gICAgPC9jcHMtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidZZWFybHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGNwcy1yYWRpby1ncm91cFxuICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3ViVGFiXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICBbdmVydGljYWxdPVwidHJ1ZVwiPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY01vbnRoRGF5JywgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvdy1kaXNhYmxlZCc6XG4gICAgICAgICAgICAgIHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBFdmVyeVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aERheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5tb250aFwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoc1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb24gdGhlXG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTIwcHhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoRGF5J1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoRGF5c1dpdGhMYXN0c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aERheSdcIlxuICAgICAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgICAgICBbbWFuZGF0b3J5VmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0VGltZVZhbHVlKHN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5KVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICBvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkpXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUueWVhcmx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljTW9udGhEYXknXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRHVyaW5nIHRoZSBuZWFyZXN0IHdlZWtkYXlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkucnVuT25XZWVrZGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1uZWFyZXN0LXdlZWtkYXktY2hlY2tib3hcIj5cbiAgICAgICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cblxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY01vbnRoV2VlaycsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIE9uIHRoZVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwNnB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1vbnRoV2Vla1wiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoV2Vla3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLmRheXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIG9mXG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTIwcHhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoV2VlaydcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGhcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIGF0XG4gICAgICAgICAgPGNwcy10aW1lcGlja2VyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUueWVhcmx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljTW9udGhXZWVrJ1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrKVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICBvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrKVxuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgPC9jcHMtdGltZXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cbiAgICA8L2Nwcy1yYWRpby1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0FkdmFuY2VkJ1wiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGNwcy1pbnB1dFxuICAgICAgICBsYWJlbD1cIlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIHdpZHRoPVwiNTAwcHhcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlBsZWFzZSBlbnRlclwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VkXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCI+XG4gICAgICA8L2Nwcy1pbnB1dD5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10aW1lLXpvbmVcIiAqbmdJZj1cImNyb24gJiYgc2hvd1RpbWVab25lXCI+XG4gICAgPGNwcy1hdXRvY29tcGxldGVcbiAgICAgIGxhYmVsPVwiVGltZSB6b25lXCJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZVpvbmVcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVab25lQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgd2lkdGg9XCIzMDBcIlxuICAgICAgW29wdGlvbnNdPVwidGltZVpvbmVPcHRpb25zXCI+PC9jcHMtYXV0b2NvbXBsZXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
682
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNjaGVkdWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2NoZWR1bGVyL2Nwcy1zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNjaGVkdWxlci9jcHMtc2NoZWR1bGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFJTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQ0wsd0JBQXdCLEVBRXpCLE1BQU0sa0RBQWtELENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUV2QixNQUFNLDRDQUE0QyxDQUFDOzs7O0FBRXBELE1BQU0s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YW5nZXMsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRpbWVab25lcyB9IGZyb20gJy4vY3BzLXNjaGVkdWxlci51dGlscyc7XG5pbXBvcnQgeyBDcHNTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtc2VsZWN0L2Nwcy1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IENwc1JhZGlvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtcmFkaW8tZ3JvdXAvY3BzLXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1yYWRpby1ncm91cC9jcHMtcmFkaW8vY3BzLXJhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1jaGVja2JveC9jcHMtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IENwc0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWlucHV0L2Nwcy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWF1dG9jb21wbGV0ZS9jcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDcHNCdXR0b25Ub2dnbGVDb21wb25lbnQsXG4gIENwc0J1dHRvblRvZ2dsZU9wdGlvblxufSBmcm9tICcuLi9jcHMtYnV0dG9uLXRvZ2dsZS9jcHMtYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ3BzVGltZXBpY2tlckNvbXBvbmVudCxcbiAgQ3BzVGltZVxufSBmcm9tICcuLi9jcHMtdGltZXBpY2tlci9jcHMtdGltZXBpY2tlci5jb21wb25lbnQnO1xuXG5jb25zdCBEYXlzID0ge1xuICBNT046ICdNb25kYXknLFxuICBUVUU6ICdUdWVzZGF5JyxcbiAgV0VEOiAnV2VkbmVzZGF5JyxcbiAgVEhVOiAnVGh1cnNkYXknLFxuICBGUkk6ICdGcmlkYXknLFxuICBTQVQ6ICdTYXR1cmRheScsXG4gIFNVTjogJ1N1bmRheSdcbn07XG5cbmNvbnN0IE1vbnRoV2Vla3MgPSB7XG4gICcjMSc6ICdGaXJzdCcsXG4gICcjMic6ICdTZWNvbmQnLFxuICAnIzMnOiAnVGhpcmQnLFxuICAnIzQnOiAnRm91cnRoJyxcbiAgJyM1JzogJ0ZpZnRoJyxcbiAgTDogJ0xhc3QnXG59O1xuXG5lbnVtIE1vbnRocyB7XG4gIEphbnVhcnkgPSAxLFxuICBGZWJydWFyeSxcbiAgTWFyY2gsXG4gIEFwcmlsLFxuICBNYXksXG4gIEp1bmUsXG4gIEp1bHksXG4gIEF1Z3VzdCxcbiAgU2VwdGVtYmVyLFxuICBPY3RvYmVyLFxuICBOb3ZlbWJlcixcbiAgRGVjZW1iZXJcbn1cblxuLyoqXG4gKiBDcHNTY2hlZHVsZXJDb21wb25lbnQgaXMgYSBjb21wb25lbnQgZGVzaWduZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2YgQW1hem9uIEV2ZW50QnJpZGdlIENST04gZXhwcmVzc2lvbnMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHMtc2NoZWR1bGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENwc0J1dHRvblRvZ2dsZUNvbXBvbmVudCxcbiAgICBDcHNTZWxlY3RDb21wb25lbnQsXG4gICAgQ3BzUmFkaW9Hcm91cENvbXBvbmVudCxcbiAgICBDcHNSYWRpb0NvbXBvbmVudCxcbiAgICBDcHNDaGVja2JveENvbXBvbmVudCxcbiAgICBDcHNJbnB1dENvbXBvbmVudCxcbiAgICBDcHNUaW1lcGlja2VyQ29tcG9uZW50LFxuICAgIENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLXNjaGVkdWxlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jcHMtc2NoZWR1bGVyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBDcHNTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBMYWJlbCBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIENyb24gZXhwcmVzc2lvbiB2YWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjcm9uID0gJyc7XG5cbiAgLyoqXG4gICAqIFRpbWUgem9uZSB2YWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0aW1lWm9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSB8fCAnVVRDJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlICdOb3Qgc2V0JyB0YWIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd05vdFNldCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHRoZSAnQWR2YW5jZWQnIHRhYi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93QWR2YW5jZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgJ01pbnV0ZXMnIHRhYi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93TWludXRlcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHRoZSB0aW1lIHpvbmUgc2VsZWN0b3IuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd1RpbWVab25lID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdGltZSBmb3JtYXQgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdFRpbWUgPSAnMDA6MDAnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIDI0LWhvdXIgdGltZSBmb3JtYXQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdXNlMjRIb3VyVGltZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIHRvb2x0aXAgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXAgPSAnJztcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGNyb24gZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBjcm9uIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgY3JvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGltZSB6b25lIGNoYW5nZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIHRpbWUgem9uZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSB0aW1lWm9uZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHNjaGVkdWxlVHlwZXM6IENwc0J1dHRvblRvZ2dsZU9wdGlvbltdID0gW1xuICAgIHsgbGFiZWw6ICdOb3Qgc2V0JywgdmFsdWU6ICdOb3Qgc2V0JyB9LFxuICAgIHsgbGFiZWw6ICdNaW51dGVzJywgdmFsdWU6ICdNaW51dGVzJyB9LFxuICAgIHsgbGFiZWw6ICdIb3VybHknLCB2YWx1ZTogJ0hvdXJseScgfSxcbiAgICB7IGxhYmVsOiAnRGFpbHknLCB2YWx1ZTogJ0RhaWx5JyB9LFxuICAgIHsgbGFiZWw6ICdXZWVrbHknLCB2YWx1ZTogJ1dlZWtseScgfSxcbiAgICB7IGxhYmVsOiAnTW9udGhseScsIHZhbHVlOiAnTW9udGhseScgfSxcbiAgICB7IGxhYmVsOiAnWWVhcmx5JywgdmFsdWU6ICdZZWFybHknIH0sXG4gICAgeyBsYWJlbDogJ0FkdmFuY2VkJywgdmFsdWU6ICdBZHZhbmNlZCcgfVxuICBdO1xuXG4gIGFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdOb3Qgc2V0JztcbiAgc2VsZWN0T3B0aW9ucyA9IHRoaXMuX2dldFNlbGVjdE9wdGlvbnMoKTtcbiAgdGltZVpvbmVPcHRpb25zID0gdGltZVpvbmVzLm1hcCgodHopID0+ICh7IGxhYmVsOiB0eiwgdmFsdWU6IHR6IH0pKTtcbiAgc3RhdGU6IGFueTtcbiAgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgIGFkdmFuY2VkOiBbJycsIFt0aGlzLl92YWxpZGF0ZUFkdmFuY2VkRXhwcl1dXG4gIH0pO1xuXG4gIHByaXZhdGUgX2lzRGlydHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbWludXRlc0RlZmF1bHQgPSAnMC8xICogMS8xICogPyAqJztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuX2dldERlZmF1bHRTdGF0ZSgpO1xuXG4gICAgaWYgKCF0aGlzLnNob3dBZHZhbmNlZCkge1xuICAgICAgdGhpcy5zY2hlZHVsZVR5cGVzLnBvcCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG93TWludXRlcykge1xuICAgICAgY29uc3QgbWludXRlc0luZGV4ID0gdGhpcy5zY2hlZHVsZVR5cGVzLmZpbmRJbmRleChcbiAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSAnTWludXRlcydcbiAgICAgICk7XG4gICAgICBpZiAobWludXRlc0luZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlVHlwZXMuc3BsaWNlKG1pbnV0ZXNJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3dOb3RTZXQpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVUeXBlcy5zaGlmdCgpO1xuICAgICAgaWYgKCF0aGlzLmNyb24pIHRoaXMuY3JvbiA9IHRoaXMuX21pbnV0ZXNEZWZhdWx0O1xuICAgIH1cbiAgICB0aGlzLl9oYW5kbGVNb2RlbENoYW5nZSh0aGlzLmNyb24pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0Nyb24gPSBjaGFuZ2VzLnZhbHVlO1xuICAgIGlmIChuZXdDcm9uICYmICFuZXdDcm9uLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9oYW5kbGVNb2RlbENoYW5nZSh0aGlzLmNyb24pO1xuICAgIH1cbiAgfVxuXG4gIHNldEFjdGl2ZVNjaGVkdWxlVHlwZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9IHZhbHVlO1xuICAgICAgdGhpcy5yZWdlbmVyYXRlQ3Jvbih0cnVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuZm9ybSkge1xuICAgICAgaWYgKHZhbHVlID09PSAnQWR2YW5jZWQnKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuYWR2YW5jZWQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmFkdmFuY2VkLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVnZW5lcmF0ZUNyb24odGFiQ2hhbmdlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzRGlydHkgPSB0cnVlO1xuXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSkge1xuICAgICAgY2FzZSAnTWludXRlcyc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNyb24oYDAvJHt0aGlzLnN0YXRlLm1pbnV0ZXMubWludXRlc30gKiAxLzEgKiA/ICpgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb3VybHknOlxuICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGUuaG91cmx5Lm1pbnV0ZXN9IDAvJHt0aGlzLnN0YXRlLmhvdXJseS5ob3Vyc30gMS8xICogPyAqYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhaWx5JzpcbiAgICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLmRhaWx5LnN1YlRhYikge1xuICAgICAgICAgIGNhc2UgJ2V2ZXJ5RGF5cyc6XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5taW51dGVzfSAke3RoaXMuX2hvdXJUb0Nyb24oXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91cnMsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gMS8ke3RoaXMuc3RhdGUuZGFpbHkuZXZlcnlEYXlzLmRheXN9ICogPyAqYFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZXZlcnlXZWVrRGF5JzpcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNyb24oXG4gICAgICAgICAgICAgIGAke3RoaXMuc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5ob3VyVHlwZVxuICAgICAgICAgICAgICApfSA/ICogTU9OLUZSSSAqYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JvbiBkYWlseSBzdWJ0YWIgc2VsZWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXZWVrbHknOiB7XG4gICAgICAgIGNvbnN0IGRheXMgPSB0aGlzLnNlbGVjdE9wdGlvbnMuZGF5c1xuICAgICAgICAgIC5tYXAoKGQpID0+IGQudmFsdWUpXG4gICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIGRheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W2RheV0gPyBhY2MuY29uY2F0KFtkYXldKSA6IGFjYyksXG4gICAgICAgICAgICBbXSBhcyBzdHJpbmdbXVxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGUud2Vla2x5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgIHRoaXMuc3RhdGUud2Vla2x5LmhvdXJzLFxuICAgICAgICAgICAgdGhpcy5zdGF0ZS53ZWVrbHkuaG91clR5cGVcbiAgICAgICAgICApfSA/ICogJHtkYXlzfSAqYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ01vbnRobHknOiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZS5tb250aGx5LnN1YlRhYikge1xuICAgICAgICAgIGNhc2UgJ3NwZWNpZmljRGF5Jzoge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5zdGF0ZS5tb250aGx5LnJ1bk9uV2Vla2RheVxuICAgICAgICAgICAgICA/IGAke3RoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5kYXl9V2BcbiAgICAgICAgICAgICAgOiB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuZGF5O1xuXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubWludXRlc30gJHt0aGlzLl9ob3VyVG9Dcm9uKFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gJHtkYXl9IDEvJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubW9udGhzfSA/ICpgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3NwZWNpZmljV2Vla0RheSc6XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDcm9uKFxuICAgICAgICAgICAgICBgJHt0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1pbnV0ZXN9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5LmhvdXJzLFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuaG91clR5cGVcbiAgICAgICAgICAgICAgKX0gPyAke3RoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuc3RhcnRNb250aH0vJHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1vbnRoc1xuICAgICAgICAgICAgICB9ICR7dGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5kYXl9JHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5Lm1vbnRoV2Vla1xuICAgICAgICAgICAgICB9ICpgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcm9uIG1vbnRobHkgc3VidGFiIHNlbGVjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnWWVhcmx5JzpcbiAgICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLnllYXJseS5zdWJUYWIpIHtcbiAgICAgICAgICBjYXNlICdzcGVjaWZpY01vbnRoRGF5Jzoge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5zdGF0ZS55ZWFybHkucnVuT25XZWVrZGF5XG4gICAgICAgICAgICAgID8gYCR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5kYXl9V2BcbiAgICAgICAgICAgICAgOiB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheTtcblxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3JvbihcbiAgICAgICAgICAgICAgYCR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5taW51dGVzfSAke3RoaXMuX2hvdXJUb0Nyb24oXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmhvdXJUeXBlXG4gICAgICAgICAgICAgICl9ICR7ZGF5fSAke3RoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkubW9udGh9ID8gKmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnc3BlY2lmaWNNb250aFdlZWsnOlxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3JvbihcbiAgICAgICAgICAgICAgYCR7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubWludXRlc1xuICAgICAgICAgICAgICB9ICR7dGhpcy5faG91clRvQ3JvbihcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VycyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VyVHlwZVxuICAgICAgICAgICAgICApfSA/ICR7dGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGh9ICR7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuZGF5XG4gICAgICAgICAgICAgIH0ke3RoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1vbnRoV2Vla30gKmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24geWVhcmx5IHN1YnRhYiBzZWxlY3Rpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FkdmFuY2VkJzpcbiAgICAgICAgaWYgKCF0YWJDaGFuZ2UpIHRoaXMuX3VwZGF0ZUNyb24odGhpcy5mb3JtLnZhbHVlLmFkdmFuY2VkIHx8ICcnKTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmFkdmFuY2VkLnNldFZhbHVlKHRoaXMuY3Jvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuc2hvd05vdFNldCkgdGhpcy5fdXBkYXRlQ3JvbignJyk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIG9uVGltZVpvbmVDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd1RpbWVab25lKSByZXR1cm47XG4gICAgdGhpcy50aW1lWm9uZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZWQodmFsdWU6IENwc1RpbWUsIHRhcmdldDogYW55KTogdm9pZCB7XG4gICAgdGFyZ2V0LmhvdXJzID0gdGhpcy5fc3RyaW5nVG9OdW0odmFsdWUuaG91cnMpO1xuICAgIHRhcmdldC5taW51dGVzID0gdGhpcy5fc3RyaW5nVG9OdW0odmFsdWUubWludXRlcyk7XG4gICAgdGhpcy5yZWdlbmVyYXRlQ3JvbigpO1xuICB9XG5cbiAgZm9ybWF0VGltZVZhbHVlKHZhbHVlOiBhbnkpOiBDcHNUaW1lIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG91cnM6IHRoaXMuX251bVRvU3RyaW5nKHZhbHVlLmhvdXJzKSxcbiAgICAgIG1pbnV0ZXM6IHRoaXMuX251bVRvU3RyaW5nKHZhbHVlLm1pbnV0ZXMpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNyb24odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNyb24gPT09IHZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5jcm9uID0gdmFsdWU7XG4gICAgdGhpcy5jcm9uQ2hhbmdlLmVtaXQodGhpcy5jcm9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWRDcm9uKGNyb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgY3JvbiAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICghdGhpcy5zaG93Tm90U2V0KSB7XG4gICAgICBpZiAoIWNyb24pIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNyb24gPT09ICcnKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IHBhcnRzID0gY3Jvbi5zcGxpdCgnICcpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlQWR2YW5jZWRFeHByKGM6IEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgY3JvbiA9IGMudmFsdWU7XG4gICAgaWYgKCFjcm9uKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHNwbGl0cyA9IGNyb24/LnNwbGl0KCcgJykgfHwgW107XG4gICAgaWYgKHNwbGl0cy5sZW5ndGggIT09IDYpIHJldHVybiB7IGludmFsaWRFeHByZXNzaW9uOiAnSW52YWxpZCBleHByZXNzaW9uJyB9O1xuXG4gICAgY29uc3QgY3JvblNldmVuID0gYDAgJHtjcm9ufWA7XG5cbiAgICByZXR1cm4gY3JvblNldmVuLm1hdGNoKC9cXGQrIDBcXC9cXGQrIFxcKiAxXFwvMSBcXCogXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyAwXFwvXFxkKyAxXFwvMSBcXCogXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyBcXGQrIDFcXC9cXGQrIFxcKiBcXD8gXFwqLykgfHxcbiAgICAgIGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIFxcZCsgXFw/IFxcKiBNT04tRlJJIFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIChNT058VFVFfFdFRHxUSFV8RlJJfFNBVHxTVU4pKCwoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSkqIFxcKi9cbiAgICAgICkgfHxcbiAgICAgIGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIFxcZCsgKFxcZCt8THxMV3wxVykgMVxcL1xcZCsgXFw/IFxcKi8pIHx8XG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkK1xcL1xcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKSB8fFxuICAgICAgY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAoXFxkK3xMfExXfDFXKSBcXGQrIFxcPyBcXCovKSB8fFxuICAgICAgY3JvblNldmVuLm1hdGNoKFxuICAgICAgICAvXFxkKyBcXGQrIFxcZCsgXFw/IFxcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKVxuICAgICAgPyBudWxsXG4gICAgICA6IHsgaW52YWxpZEV4cHJlc3Npb246ICdJbnZhbGlkIGV4cHJlc3Npb24nIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRBbVBtSG91cihob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnVzZTI0SG91clRpbWUgPyBob3VyIDogKChob3VyICsgMTEpICUgMTIpICsgMTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEhvdXJUeXBlKGhvdXI6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudXNlMjRIb3VyVGltZSA/IHVuZGVmaW5lZCA6IGhvdXIgPj0gMTIgPyAnUE0nIDogJ0FNJztcbiAgfVxuXG4gIHByaXZhdGUgX2hvdXJUb0Nyb24oaG91cjogbnVtYmVyLCBob3VyVHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy51c2UyNEhvdXJUaW1lKSB7XG4gICAgICByZXR1cm4gaG91cjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhvdXJUeXBlID09PSAnQU0nXG4gICAgICAgID8gaG91ciA9PT0gMTJcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IGhvdXJcbiAgICAgICAgOiBob3VyID09PSAxMlxuICAgICAgICAgID8gMTJcbiAgICAgICAgICA6IGhvdXIgKyAxMjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVNb2RlbENoYW5nZShjcm9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWRDcm9uKGNyb24pKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGNyb24gdmFsdWU6JywgY3Jvbik7XG4gICAgICB0aGlzLmNyb24gPSB0aGlzLnNob3dOb3RTZXQgPyAnJyA6IHRoaXMuX21pbnV0ZXNEZWZhdWx0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc0RpcnR5KSB7XG4gICAgICB0aGlzLl9pc0RpcnR5ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lzRGlydHkgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWNyb24gfHwgY3Jvbi5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdOb3Qgc2V0JztcbiAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3JvblNldmVuID0gYDAgJHtjcm9ufWA7XG5cbiAgICBjb25zdCBbbWludXRlcywgaG91cnMsIGRheU9mTW9udGgsIG1vbnRoLCBkYXlPZldlZWtdID0gY3Jvbi5zcGxpdCgnICcpO1xuXG4gICAgaWYgKGNyb25TZXZlbi5tYXRjaCgvXFxkKyAwXFwvXFxkKyBcXCogMVxcLzEgXFwqIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnTWludXRlcyc7XG5cbiAgICAgIHRoaXMuc3RhdGUubWludXRlcy5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMuc3Vic3RyaW5nKDIpKTtcbiAgICB9IGVsc2UgaWYgKGNyb25TZXZlbi5tYXRjaCgvXFxkKyBcXGQrIDBcXC9cXGQrIDFcXC8xIFxcKiBcXD8gXFwqLykpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0hvdXJseSc7XG5cbiAgICAgIHRoaXMuc3RhdGUuaG91cmx5LmhvdXJzID0gTnVtYmVyKGhvdXJzLnN1YnN0cmluZygyKSk7XG4gICAgICB0aGlzLnN0YXRlLmhvdXJseS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAxXFwvXFxkKyBcXCogXFw/IFxcKi8pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdEYWlseSc7XG5cbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuc3ViVGFiID0gJ2V2ZXJ5RGF5cyc7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5kYXlzID0gTnVtYmVyKGRheU9mTW9udGguc3Vic3RyaW5nKDIpKTtcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuZXZlcnlEYXlzLmhvdXJzID0gdGhpcy5fZ2V0QW1QbUhvdXIocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeURheXMuaG91clR5cGUgPSB0aGlzLl9nZXRIb3VyVHlwZShwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIE1PTi1GUkkgXFwqLykpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0RhaWx5JztcblxuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5zdWJUYWIgPSAnZXZlcnlXZWVrRGF5JztcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5LmhvdXJzID0gdGhpcy5fZ2V0QW1QbUhvdXIocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5kYWlseS5ldmVyeVdlZWtEYXkuaG91clR5cGUgPSB0aGlzLl9nZXRIb3VyVHlwZShwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFwqIChNT058VFVFfFdFRHxUSFV8RlJJfFNBVHxTVU4pKCwoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSkqIFxcKi9cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ1dlZWtseSc7XG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbnMuZGF5c1xuICAgICAgICAubWFwKChkKSA9PiBkLnZhbHVlKVxuICAgICAgICAuZm9yRWFjaCgod2Vla0RheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W3dlZWtEYXldID0gZmFsc2UpKTtcbiAgICAgIGRheU9mV2Vla1xuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAuZm9yRWFjaCgod2Vla0RheSkgPT4gKHRoaXMuc3RhdGUud2Vla2x5W3dlZWtEYXldID0gdHJ1ZSkpO1xuICAgICAgY29uc3QgcGFyc2VkSG91cnMgPSBOdW1iZXIoaG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS53ZWVrbHkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLndlZWtseS5ob3VyVHlwZSA9IHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUud2Vla2x5Lm1pbnV0ZXMgPSBOdW1iZXIobWludXRlcyk7XG4gICAgfSBlbHNlIGlmIChjcm9uU2V2ZW4ubWF0Y2goL1xcZCsgXFxkKyBcXGQrIChcXGQrfEx8TFd8MVcpIDFcXC9cXGQrIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnTW9udGhseSc7XG4gICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3ViVGFiID0gJ3NwZWNpZmljRGF5JztcblxuICAgICAgaWYgKGRheU9mTW9udGguaW5kZXhPZignVycpICE9PSAtMSkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkuZGF5ID0gZGF5T2ZNb250aC5jaGFyQXQoMCk7XG4gICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5ydW5PbldlZWtkYXkgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljRGF5LmRheSA9IGRheU9mTW9udGg7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5tb250aHMgPSBOdW1iZXIobW9udGguc3Vic3RyaW5nKDIpKTtcbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VycyA9IHRoaXMuX2dldEFtUG1Ib3VyKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5ob3VyVHlwZSA9IHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkK1xcL1xcZCsgKE1PTnxUVUV8V0VEfFRIVXxGUkl8U0FUfFNVTikoKCNbMS01XSl8TCkgXFwqL1xuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3QgZGF5ID0gZGF5T2ZXZWVrLnN1YnN0cmluZygwLCAzKTtcbiAgICAgIGNvbnN0IG1vbnRoV2VlayA9IGRheU9mV2Vlay5zdWJzdHJpbmcoMyk7XG4gICAgICB0aGlzLmFjdGl2ZVNjaGVkdWxlVHlwZSA9ICdNb250aGx5JztcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zdWJUYWIgPSAnc3BlY2lmaWNXZWVrRGF5JztcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkubW9udGhXZWVrID0gbW9udGhXZWVrO1xuICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5kYXkgPSBkYXk7XG5cbiAgICAgIGlmIChtb250aC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IFtzdGFydE1vbnRoLCBtb250aHNdID0gbW9udGguc3BsaXQoJy8nKS5tYXAoTnVtYmVyKTtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aHMgPSBtb250aHM7XG4gICAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuc3RhcnRNb250aCA9IHN0YXJ0TW9udGg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLm1vbnRobHkuc3BlY2lmaWNXZWVrRGF5LmhvdXJUeXBlID1cbiAgICAgICAgdGhpcy5fZ2V0SG91clR5cGUocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoY3JvblNldmVuLm1hdGNoKC9cXGQrIFxcZCsgXFxkKyAoXFxkK3xMfExXfDFXKSBcXGQrIFxcPyBcXCovKSkge1xuICAgICAgdGhpcy5hY3RpdmVTY2hlZHVsZVR5cGUgPSAnWWVhcmx5JztcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnN1YlRhYiA9ICdzcGVjaWZpY01vbnRoRGF5JztcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkubW9udGggPSBOdW1iZXIobW9udGgpO1xuXG4gICAgICBpZiAoZGF5T2ZNb250aC5pbmRleE9mKCdXJykgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkuZGF5ID0gZGF5T2ZNb250aC5jaGFyQXQoMCk7XG4gICAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnJ1bk9uV2Vla2RheSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheSA9IGRheU9mTW9udGg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlZEhvdXJzID0gTnVtYmVyKGhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkuaG91cnMgPSB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmhvdXJUeXBlID1cbiAgICAgICAgdGhpcy5fZ2V0SG91clR5cGUocGFyc2VkSG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5taW51dGVzID0gTnVtYmVyKG1pbnV0ZXMpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjcm9uU2V2ZW4ubWF0Y2goXG4gICAgICAgIC9cXGQrIFxcZCsgXFxkKyBcXD8gXFxkKyAoTU9OfFRVRXxXRUR8VEhVfEZSSXxTQVR8U1VOKSgoI1sxLTVdKXxMKSBcXCovXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXkgPSBkYXlPZldlZWsuc3Vic3RyaW5nKDAsIDMpO1xuICAgICAgY29uc3QgbW9udGhXZWVrID0gZGF5T2ZXZWVrLnN1YnN0cmluZygzKTtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ1llYXJseSc7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zdWJUYWIgPSAnc3BlY2lmaWNNb250aFdlZWsnO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGhXZWVrID0gbW9udGhXZWVrO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuZGF5ID0gZGF5O1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGggPSBOdW1iZXIobW9udGgpO1xuICAgICAgY29uc3QgcGFyc2VkSG91cnMgPSBOdW1iZXIoaG91cnMpO1xuICAgICAgdGhpcy5zdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsuaG91cnMgPVxuICAgICAgICB0aGlzLl9nZXRBbVBtSG91cihwYXJzZWRIb3Vycyk7XG4gICAgICB0aGlzLnN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoV2Vlay5ob3VyVHlwZSA9XG4gICAgICAgIHRoaXMuX2dldEhvdXJUeXBlKHBhcnNlZEhvdXJzKTtcbiAgICAgIHRoaXMuc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1pbnV0ZXMgPSBOdW1iZXIobWludXRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlU2NoZWR1bGVUeXBlID0gJ0FkdmFuY2VkJztcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5hZHZhbmNlZC5zZXRWYWx1ZShjcm9uKTtcbiAgICB9XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRTdGF0ZSgpIHtcbiAgICBjb25zdCBbZGVmYXVsdEhvdXJzLCBkZWZhdWx0TWludXRlc10gPSB0aGlzLmRlZmF1bHRUaW1lXG4gICAgICAuc3BsaXQoJzonKVxuICAgICAgLm1hcChOdW1iZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbnV0ZXM6IHtcbiAgICAgICAgbWludXRlczogMVxuICAgICAgfSxcbiAgICAgIGhvdXJseToge1xuICAgICAgICBob3VyczogMSxcbiAgICAgICAgbWludXRlczogMFxuICAgICAgfSxcbiAgICAgIGRhaWx5OiB7XG4gICAgICAgIHN1YlRhYjogJ2V2ZXJ5RGF5cycsXG4gICAgICAgIGV2ZXJ5RGF5czoge1xuICAgICAgICAgIGRheXM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfSxcbiAgICAgICAgZXZlcnlXZWVrRGF5OiB7XG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHdlZWtseToge1xuICAgICAgICBNT046IHRydWUsXG4gICAgICAgIFRVRTogZmFsc2UsXG4gICAgICAgIFdFRDogZmFsc2UsXG4gICAgICAgIFRIVTogZmFsc2UsXG4gICAgICAgIEZSSTogZmFsc2UsXG4gICAgICAgIFNBVDogZmFsc2UsXG4gICAgICAgIFNVTjogZmFsc2UsXG4gICAgICAgIGhvdXJzOiB0aGlzLl9nZXRBbVBtSG91cihkZWZhdWx0SG91cnMpLFxuICAgICAgICBtaW51dGVzOiBkZWZhdWx0TWludXRlcyxcbiAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgIH0sXG4gICAgICBtb250aGx5OiB7XG4gICAgICAgIHN1YlRhYjogJ3NwZWNpZmljRGF5JyxcbiAgICAgICAgcnVuT25XZWVrZGF5OiBmYWxzZSxcbiAgICAgICAgc3BlY2lmaWNEYXk6IHtcbiAgICAgICAgICBkYXk6ICcxJyxcbiAgICAgICAgICBtb250aHM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfSxcbiAgICAgICAgc3BlY2lmaWNXZWVrRGF5OiB7XG4gICAgICAgICAgbW9udGhXZWVrOiAnIzEnLFxuICAgICAgICAgIGRheTogJ01PTicsXG4gICAgICAgICAgc3RhcnRNb250aDogMSxcbiAgICAgICAgICBtb250aHM6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHllYXJseToge1xuICAgICAgICBzdWJUYWI6ICdzcGVjaWZpY01vbnRoRGF5JyxcbiAgICAgICAgcnVuT25XZWVrZGF5OiBmYWxzZSxcbiAgICAgICAgc3BlY2lmaWNNb250aERheToge1xuICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgIGRheTogJzEnLFxuICAgICAgICAgIGhvdXJzOiB0aGlzLl9nZXRBbVBtSG91cihkZWZhdWx0SG91cnMpLFxuICAgICAgICAgIG1pbnV0ZXM6IGRlZmF1bHRNaW51dGVzLFxuICAgICAgICAgIGhvdXJUeXBlOiB0aGlzLl9nZXRIb3VyVHlwZShkZWZhdWx0SG91cnMpXG4gICAgICAgIH0sXG4gICAgICAgIHNwZWNpZmljTW9udGhXZWVrOiB7XG4gICAgICAgICAgbW9udGhXZWVrOiAnIzEnLFxuICAgICAgICAgIGRheTogJ01PTicsXG4gICAgICAgICAgbW9udGg6IDEsXG4gICAgICAgICAgaG91cnM6IHRoaXMuX2dldEFtUG1Ib3VyKGRlZmF1bHRIb3VycyksXG4gICAgICAgICAgbWludXRlczogZGVmYXVsdE1pbnV0ZXMsXG4gICAgICAgICAgaG91clR5cGU6IHRoaXMuX2dldEhvdXJUeXBlKGRlZmF1bHRIb3VycylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFkdmFuY2VkOiB7XG4gICAgICAgIGV4cHJlc3Npb246IHRoaXMuY3JvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRSYW5nZShzdGFydEZyb206IG51bWJlciwgdW50aWw6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiB1bnRpbCArIDEgLSBzdGFydEZyb20gfSxcbiAgICAgIChfLCBrKSA9PiBrICsgc3RhcnRGcm9tXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlbGVjdE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vbnRoc051bWVyaWM6IHRoaXMuX2dldFJhbmdlKDEsIDEyKS5tYXAoKG1vbnRoKSA9PiAoe1xuICAgICAgICBsYWJlbDogbW9udGgsXG4gICAgICAgIHZhbHVlOiBtb250aFxuICAgICAgfSkpLFxuICAgICAgbW9udGhzOiB0aGlzLl9nZXRSYW5nZSgxLCAxMikubWFwKChtb250aCkgPT4gKHtcbiAgICAgICAgbGFiZWw6IE1vbnRoc1ttb250aF0sXG4gICAgICAgIHZhbHVlOiBtb250aFxuICAgICAgfSkpLFxuICAgICAgbW9udGhXZWVrczogT2JqZWN0LmVudHJpZXMoTW9udGhXZWVrcykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgdmFsdWU6IGtleVxuICAgICAgfSkpLFxuICAgICAgZGF5czogT2JqZWN0LmVudHJpZXMoRGF5cykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgdmFsdWU6IGtleVxuICAgICAgfSkpLFxuICAgICAgbWludXRlczogdGhpcy5fZ2V0UmFuZ2UoMSwgNTkpLm1hcCgobWluKSA9PiAoe1xuICAgICAgICBsYWJlbDogbWluLFxuICAgICAgICB2YWx1ZTogbWluXG4gICAgICB9KSksXG4gICAgICBmdWxsTWludXRlczogdGhpcy5fZ2V0UmFuZ2UoMCwgNTkpLm1hcCgobWluKSA9PiAoe1xuICAgICAgICBsYWJlbDogdGhpcy5fbnVtVG9TdHJpbmcobWluKSxcbiAgICAgICAgdmFsdWU6IG1pblxuICAgICAgfSkpLFxuICAgICAgaG91cnM6IHRoaXMuX2dldFJhbmdlKDEsIDIzKS5tYXAoKGhvdXIpID0+ICh7XG4gICAgICAgIGxhYmVsOiBob3VyLFxuICAgICAgICB2YWx1ZTogaG91clxuICAgICAgfSkpLFxuICAgICAgbW9udGhEYXlzOiB0aGlzLl9nZXRSYW5nZSgxLCAzMSkubWFwKChkYXkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBkYXksXG4gICAgICAgIHZhbHVlOiBkYXlcbiAgICAgIH0pKSxcbiAgICAgIG1vbnRoRGF5c1dpdGhMYXN0czogWy4uLnRoaXMuX2dldFJhbmdlKDEsIDMxKS5tYXAoU3RyaW5nKSwgJ0wnXS5tYXAoXG4gICAgICAgIChtZGwpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWw6IHRoaXMuX2dldE1vbnRoRGF5TGFiZWwobWRsKSxcbiAgICAgICAgICAgIHZhbHVlOiBtZGxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1vbnRoRGF5TGFiZWwobW9udGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKG1vbnRoID09PSAnTCcpIHtcbiAgICAgIHJldHVybiAnTGFzdCBEYXknO1xuICAgIH0gZWxzZSBpZiAobW9udGggPT09ICdMVycpIHtcbiAgICAgIHJldHVybiAnTGFzdCBXZWVrZGF5JztcbiAgICB9IGVsc2UgaWYgKG1vbnRoID09PSAnMVcnKSB7XG4gICAgICByZXR1cm4gJ0ZpcnN0IFdlZWtkYXknO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgc3VmZml4ID0gJyc7XG4gICAgICBpZiAobW9udGgubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzZWNvbmRUb0xhc3REaWdpdCA9IG1vbnRoLmNoYXJBdChtb250aC5sZW5ndGggLSAyKTtcbiAgICAgICAgaWYgKHNlY29uZFRvTGFzdERpZ2l0ID09PSAnMScpIHtcbiAgICAgICAgICBzdWZmaXggPSAndGgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXN1ZmZpeCkge1xuICAgICAgICBjb25zdCBsYXN0RGlnaXQgPSBtb250aC5jaGFyQXQobW9udGgubGVuZ3RoIC0gMSk7XG4gICAgICAgIHN3aXRjaCAobGFzdERpZ2l0KSB7XG4gICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICBzdWZmaXggPSAnc3QnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICBzdWZmaXggPSAnbmQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICBzdWZmaXggPSAncmQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHN1ZmZpeCA9ICd0aCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7bW9udGh9JHtzdWZmaXh9IGRheWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbnVtVG9TdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gOSA/ICcwJyArIHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0cmluZ1RvTnVtKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHJlcyA9IE51bWJlcih2YWx1ZSk7XG4gICAgcmV0dXJuIGlzTmFOKHJlcykgPyAwIDogcmVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3RvclwiPlxuICA8Y3BzLWJ1dHRvbi10b2dnbGVcbiAgICBbb3B0aW9uc109XCJzY2hlZHVsZVR5cGVzXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW2luZm9Ub29sdGlwXT1cImluZm9Ub29sdGlwXCJcbiAgICBbKG5nTW9kZWwpXT1cImFjdGl2ZVNjaGVkdWxlVHlwZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QWN0aXZlU2NoZWR1bGVUeXBlKCRldmVudClcIj5cbiAgPC9jcHMtYnV0dG9uLXRvZ2dsZT5cbjwvZGl2PlxuXG48ZGl2XG4gIFtuZ1N3aXRjaF09XCJhY3RpdmVTY2hlZHVsZVR5cGVcIlxuICBjbGFzcz1cImNwcy1zY2hlZHVsZXItY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnY3BzLXNjaGVkdWxlci1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCI+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidOb3Qgc2V0J1wiIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZVwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidNaW51dGVzJ1wiIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiPlxuICAgICAgRXZlcnlcbiAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUubWludXRlcy5taW51dGVzXCJcbiAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5taW51dGVzXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICBtaW51dGUocylcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0hvdXJseSdcIiBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIj5cbiAgICAgIEV2ZXJ5XG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmhvdXJseS5ob3Vyc1wiXG4gICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMuaG91cnNcIlxuICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgIGhvdXIocykgb24gbWludXRlXG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmhvdXJseS5taW51dGVzXCJcbiAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5mdWxsTWludXRlc1wiXG4gICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgPC9jcHMtc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInRGFpbHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGNwcy1yYWRpby1ncm91cFxuICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5kYWlseS5zdWJUYWJcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCI+XG4gICAgICA8Y3BzLXJhZGlvIFtvcHRpb25dPVwieyB2YWx1ZTogJ2V2ZXJ5RGF5cycsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS5kYWlseS5zdWJUYWIgIT09ICdldmVyeURheXMnXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIEV2ZXJ5XG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUuZGFpbHkuc3ViVGFiICE9PSAnZXZlcnlEYXlzJ1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLmRhaWx5LmV2ZXJ5RGF5cy5kYXlzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhEYXlzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBkYXkocykgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5kYWlseS5zdWJUYWIgIT09ICdldmVyeURheXMnXCJcbiAgICAgICAgICAgIFt1c2UyNEhvdXJUaW1lXT1cInVzZTI0SG91clRpbWVcIlxuICAgICAgICAgICAgW21hbmRhdG9yeVZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdFRpbWVWYWx1ZShzdGF0ZS5kYWlseS5ldmVyeURheXMpXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25UaW1lQ2hhbmdlZCgkZXZlbnQsIHN0YXRlLmRhaWx5LmV2ZXJ5RGF5cylcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY3BzLXJhZGlvPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdldmVyeVdlZWtEYXknLCBkaXNhYmxlZDogZGlzYWJsZWQgfVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Nwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93LWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgc3RhdGUuZGFpbHkuc3ViVGFiICE9PSAnZXZlcnlXZWVrRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBFdmVyeSB3b3JraW5nIGRheSBhdFxuICAgICAgICAgIDxjcHMtdGltZXBpY2tlclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLmRhaWx5LnN1YlRhYiAhPT0gJ2V2ZXJ5V2Vla0RheSdcIlxuICAgICAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgICAgICBbbWFuZGF0b3J5VmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0VGltZVZhbHVlKHN0YXRlLmRhaWx5LmV2ZXJ5V2Vla0RheSlcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUuZGFpbHkuZXZlcnlXZWVrRGF5KVwiPlxuICAgICAgICAgIDwvY3BzLXRpbWVwaWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jcHMtcmFkaW8+XG4gICAgPC9jcHMtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidXZWVrbHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1zY2hlZHVsZXItZGF5cy1jaGVja2JveC1ncm91cFwiPlxuICAgICAgPGNwcy1jaGVja2JveFxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBsYWJlbD1cIk1vbmRheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5Lk1PTlwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiVHVlc2RheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlRVRVwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiV2VkbmVzZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuV0VEXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgbGFiZWw9XCJUaHVyc2RheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlRIVVwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiRnJpZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuRlJJXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgbGFiZWw9XCJTYXR1cmRheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUud2Vla2x5LlNBVFwiPlxuICAgICAgPC9jcHMtY2hlY2tib3g+XG4gICAgICA8Y3BzLWNoZWNrYm94XG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIGxhYmVsPVwiU3VuZGF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS53ZWVrbHkuU1VOXCI+XG4gICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIj5cbiAgICAgIGF0XG4gICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgW3ZhbHVlXT1cImZvcm1hdFRpbWVWYWx1ZShzdGF0ZS53ZWVrbHkpXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uVGltZUNoYW5nZWQoJGV2ZW50LCBzdGF0ZS53ZWVrbHkpXCI+XG4gICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInTW9udGhseSdcIiBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmVcIj5cbiAgICA8Y3BzLXJhZGlvLWdyb3VwXG4gICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkuc3ViVGFiXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICBbdmVydGljYWxdPVwidHJ1ZVwiPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY0RheScsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBPbiB0aGVcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCIxMjBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljRGF5LmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoRGF5c1dpdGhMYXN0c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb2YgZXZlcnlcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCI3MHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkuc3BlY2lmaWNEYXkubW9udGhzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhzTnVtZXJpY1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgbW9udGgocykgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljRGF5J1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUubW9udGhseS5zcGVjaWZpY0RheSlcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUubW9udGhseS5zcGVjaWZpY0RheSlcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY0RheSdcIlxuICAgICAgICAgICAgbGFiZWw9XCJEdXJpbmcgdGhlIG5lYXJlc3Qgd2Vla2RheVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLm1vbnRobHkucnVuT25XZWVrZGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1uZWFyZXN0LXdlZWtkYXktY2hlY2tib3hcIj5cbiAgICAgICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cblxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY1dlZWtEYXknLCBkaXNhYmxlZDogZGlzYWJsZWQgfVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvd1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Nwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93LWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY1dlZWtEYXknXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIE9uIHRoZVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwNnB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aFdlZWtcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aFdlZWtzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCIxMzBweFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUubW9udGhseS5zdWJUYWIgIT09ICdzcGVjaWZpY1dlZWtEYXknXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkuZGF5XCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMuZGF5c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb2YgZXZlcnlcbiAgICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgICAgd2lkdGg9XCI5MHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5tb250aHNcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aHNOdW1lcmljXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBtb250aChzKSBzdGFydGluZyBpblxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS5tb250aGx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljV2Vla0RheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheS5zdGFydE1vbnRoXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNlbGVjdE9wdGlvbnMubW9udGhzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1zZWxlY3QtY29udHJvbFwiPlxuICAgICAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICAgICAgICBhdFxuICAgICAgICAgIDxjcHMtdGltZXBpY2tlclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLm1vbnRobHkuc3ViVGFiICE9PSAnc3BlY2lmaWNXZWVrRGF5J1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUubW9udGhseS5zcGVjaWZpY1dlZWtEYXkpXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwiXG4gICAgICAgICAgICAgIG9uVGltZUNoYW5nZWQoJGV2ZW50LCBzdGF0ZS5tb250aGx5LnNwZWNpZmljV2Vla0RheSlcbiAgICAgICAgICAgIFwiPlxuICAgICAgICAgIDwvY3BzLXRpbWVwaWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jcHMtcmFkaW8+XG4gICAgPC9jcHMtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidZZWFybHknXCIgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXRhYi1wYW5lXCI+XG4gICAgPGNwcy1yYWRpby1ncm91cFxuICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3ViVGFiXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICBbdmVydGljYWxdPVwidHJ1ZVwiPlxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY01vbnRoRGF5JywgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3dcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjcHMtc2NoZWR1bGVyLXRhYi1wYW5lLXJvdy1kaXNhYmxlZCc6XG4gICAgICAgICAgICAgIHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoRGF5J1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgICBFdmVyeVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aERheSdcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aERheS5tb250aFwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoc1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgb24gdGhlXG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTIwcHhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoRGF5J1wiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5LmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoRGF5c1dpdGhMYXN0c1wiXG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgICAgICAgYXRcbiAgICAgICAgICA8Y3BzLXRpbWVwaWNrZXJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aERheSdcIlxuICAgICAgICAgICAgW3VzZTI0SG91clRpbWVdPVwidXNlMjRIb3VyVGltZVwiXG4gICAgICAgICAgICBbbWFuZGF0b3J5VmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0VGltZVZhbHVlKHN0YXRlLnllYXJseS5zcGVjaWZpY01vbnRoRGF5KVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICBvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhEYXkpXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICA8L2Nwcy10aW1lcGlja2VyPlxuICAgICAgICAgIDxjcHMtY2hlY2tib3hcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwicmVnZW5lcmF0ZUNyb24oKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUueWVhcmx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljTW9udGhEYXknXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRHVyaW5nIHRoZSBuZWFyZXN0IHdlZWtkYXlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkucnVuT25XZWVrZGF5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNjaGVkdWxlci1uZWFyZXN0LXdlZWtkYXktY2hlY2tib3hcIj5cbiAgICAgICAgICA8L2Nwcy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cblxuICAgICAgPGNwcy1yYWRpbyBbb3B0aW9uXT1cInsgdmFsdWU6ICdzcGVjaWZpY01vbnRoV2VlaycsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zY2hlZHVsZXItdGFiLXBhbmUtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY3BzLXNjaGVkdWxlci10YWItcGFuZS1yb3ctZGlzYWJsZWQnOlxuICAgICAgICAgICAgICBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXG4gICAgICAgICAgfVwiPlxuICAgICAgICAgIE9uIHRoZVxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwNnB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLm1vbnRoV2Vla1wiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLm1vbnRoV2Vla3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEyMHB4XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdGF0ZS55ZWFybHkuc3ViVGFiICE9PSAnc3BlY2lmaWNNb250aFdlZWsnXCJcbiAgICAgICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrLmRheVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzZWxlY3RPcHRpb25zLmRheXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIG9mXG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTIwcHhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN0YXRlLnllYXJseS5zdWJUYWIgIT09ICdzcGVjaWZpY01vbnRoV2VlaydcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cInJlZ2VuZXJhdGVDcm9uKClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS55ZWFybHkuc3BlY2lmaWNNb250aFdlZWsubW9udGhcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2VsZWN0T3B0aW9ucy5tb250aHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtc2NoZWR1bGVyLXNlbGVjdC1jb250cm9sXCI+XG4gICAgICAgICAgPC9jcHMtc2VsZWN0PlxuICAgICAgICAgIGF0XG4gICAgICAgICAgPGNwcy10aW1lcGlja2VyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3RhdGUueWVhcmx5LnN1YlRhYiAhPT0gJ3NwZWNpZmljTW9udGhXZWVrJ1wiXG4gICAgICAgICAgICBbdXNlMjRIb3VyVGltZV09XCJ1c2UyNEhvdXJUaW1lXCJcbiAgICAgICAgICAgIFttYW5kYXRvcnlWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRUaW1lVmFsdWUoc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrKVwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICBvblRpbWVDaGFuZ2VkKCRldmVudCwgc3RhdGUueWVhcmx5LnNwZWNpZmljTW9udGhXZWVrKVxuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgPC9jcHMtdGltZXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nwcy1yYWRpbz5cbiAgICA8L2Nwcy1yYWRpby1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0FkdmFuY2VkJ1wiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGNwcy1pbnB1dFxuICAgICAgICBsYWJlbD1cIlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIHdpZHRoPVwiNTAwcHhcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlBsZWFzZSBlbnRlclwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VkXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJyZWdlbmVyYXRlQ3JvbigpXCI+XG4gICAgICA8L2Nwcy1pbnB1dD5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3BzLXNjaGVkdWxlci10aW1lLXpvbmVcIiAqbmdJZj1cImNyb24gJiYgc2hvd1RpbWVab25lXCI+XG4gICAgPGNwcy1hdXRvY29tcGxldGVcbiAgICAgIGxhYmVsPVwiVGltZSB6b25lXCJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZVpvbmVcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblRpbWVab25lQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgd2lkdGg9XCIzMDBcIlxuICAgICAgW29wdGlvbnNdPVwidGltZVpvbmVPcHRpb25zXCI+PC9jcHMtYXV0b2NvbXBsZXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|