vcomply-workflow-engine 7.1.2 → 7.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/more-option/more-option.component.mjs +10 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +77 -13
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +13 -35
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +36 -23
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -4
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +8 -7
- package/fesm2022/vcomply-workflow-engine.mjs +211 -150
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -0
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -5
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,7 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
24
24
|
this.selectedResponsibility = 0;
|
|
25
25
|
this.placeholder = 'Loading...';
|
|
26
26
|
this.selectedResponsibilityDetails = {};
|
|
27
|
+
this.selectedResponsibilityListPrefill = {};
|
|
27
28
|
this.startDate = Math.floor(Date.now() / 1000);
|
|
28
29
|
this.lifecycleDetails = '0000-00-00~~0';
|
|
29
30
|
this.frequencyDetails = new EventEmitter();
|
|
@@ -34,7 +35,47 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
34
35
|
}
|
|
35
36
|
ngOnInit() {
|
|
36
37
|
this.frequencyInfo = Object.assign(this.frequencyService.frequencyInfo);
|
|
38
|
+
// If we already have a simple onCompletionResponsibility (from edit),
|
|
39
|
+
// hydrate structures so the chip + list can use it.
|
|
40
|
+
if (this.onCompletionResponsibility?.title &&
|
|
41
|
+
!this.selectedResponsibilityDetails?.responsibility) {
|
|
42
|
+
// For chip + frequency calculations we only need title/id
|
|
43
|
+
this.selectedResponsibilityDetails = {
|
|
44
|
+
responsibility: {
|
|
45
|
+
title: this.onCompletionResponsibility.title,
|
|
46
|
+
id: this.onCompletionResponsibility.id,
|
|
47
|
+
assigneeDetails: [
|
|
48
|
+
{
|
|
49
|
+
assignee: null,
|
|
50
|
+
responsibilityCenter: null,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
eachAssignee: {
|
|
55
|
+
assignee: null,
|
|
56
|
+
responsibilityCenter: null,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
// For list component pre-selection we must match its expected shape
|
|
60
|
+
this.selectedResponsibilityListPrefill = {
|
|
61
|
+
assignee: null,
|
|
62
|
+
responsibilityCenter: null,
|
|
63
|
+
title: this.onCompletionResponsibility.title,
|
|
64
|
+
id: this.onCompletionResponsibility.id,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
37
67
|
this.getCompletionReports();
|
|
68
|
+
// Pre-populate selected responsibility when editing an existing frequency
|
|
69
|
+
if (!this.onCompletionResponsibility?.title &&
|
|
70
|
+
this.frequencyData?.onCompletionReportDetails) {
|
|
71
|
+
const details = this.frequencyData.onCompletionReportDetails;
|
|
72
|
+
if (details && Object.keys(details).length > 0) {
|
|
73
|
+
this.onCompletionResponsibility = {
|
|
74
|
+
title: details.report_name,
|
|
75
|
+
id: details.ReportId,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
38
79
|
this.getOnCompletionFrequency();
|
|
39
80
|
this.isSelectedData = this.selectedResponsibilityDetails
|
|
40
81
|
? Object.keys(this.selectedResponsibilityDetails)?.length > 0
|
|
@@ -46,7 +87,8 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
46
87
|
this.onCompletionOfFailed = this.frequencyData.failed;
|
|
47
88
|
this.onCompletionOfWindow = this.frequencyData.window;
|
|
48
89
|
this.onCompletionOfTime = this.frequencyData.failedTime;
|
|
49
|
-
this.selectedResponsibilityDetails =
|
|
90
|
+
this.selectedResponsibilityDetails =
|
|
91
|
+
this.frequencyData.onCompletionResponsibility;
|
|
50
92
|
this.getOnCompletionFrequency();
|
|
51
93
|
this.isSelectedData = this.selectedResponsibilityDetails
|
|
52
94
|
? Object.keys(this.selectedResponsibilityDetails)?.length > 0
|
|
@@ -67,6 +109,15 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
67
109
|
}
|
|
68
110
|
onResponsibilitySelection(event) {
|
|
69
111
|
this.selectedResponsibilityDetails = event;
|
|
112
|
+
// Build flat prefill object for list on subsequent edits
|
|
113
|
+
if (event?.eachAssignee && event?.responsibility) {
|
|
114
|
+
this.selectedResponsibilityListPrefill = {
|
|
115
|
+
assignee: event.eachAssignee.assignee,
|
|
116
|
+
responsibilityCenter: event.eachAssignee.responsibilityCenter,
|
|
117
|
+
title: event.responsibility.title,
|
|
118
|
+
id: event.responsibility.id,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
70
121
|
this.onCompletionResponsibility = event?.responsibility;
|
|
71
122
|
this.getOnCompletionFrequency();
|
|
72
123
|
}
|
|
@@ -90,15 +141,20 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
90
141
|
this.getOnCompletionFrequency();
|
|
91
142
|
}
|
|
92
143
|
getOnCompletionFrequency() {
|
|
144
|
+
const responsibilityTitle = this.selectedResponsibilityDetails?.responsibility?.title ||
|
|
145
|
+
this.onCompletionResponsibility?.title ||
|
|
146
|
+
'';
|
|
147
|
+
const responsibilityId = this.selectedResponsibilityDetails?.responsibility?.id ||
|
|
148
|
+
this.onCompletionResponsibility?.id ||
|
|
149
|
+
null;
|
|
150
|
+
const firstAssigneeDetail = this.selectedResponsibilityDetails?.responsibility?.assigneeDetails?.[0] ||
|
|
151
|
+
{};
|
|
93
152
|
this.frequencyInfo.placeholder =
|
|
94
153
|
this.onCompletionOfInput +
|
|
95
154
|
' ' +
|
|
96
155
|
(this.onCompletionOfInput > 1 ? 'days' : 'day') +
|
|
97
156
|
' after completion of ' +
|
|
98
|
-
|
|
99
|
-
this.selectedResponsibilityDetails?.responsibility?.title
|
|
100
|
-
? this.selectedResponsibilityDetails?.responsibility?.title
|
|
101
|
-
: '');
|
|
157
|
+
responsibilityTitle;
|
|
102
158
|
this.frequencyInfo.pattern =
|
|
103
159
|
6 + '~' + '0' + '~' + '0' + '~' + this.onCompletionOfInput;
|
|
104
160
|
this.frequencyInfo.case = 'on_complete';
|
|
@@ -108,14 +164,14 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
108
164
|
this.frequencyInfo.timeIn24Hr = this.frequencyService.timeFrom12hTo24h(this.onCompletionOfTime);
|
|
109
165
|
this.frequencyInfo.failed_time_utc = 0;
|
|
110
166
|
this.frequencyInfo.onCompletionResponsibility = {
|
|
111
|
-
title:
|
|
112
|
-
id:
|
|
167
|
+
title: responsibilityTitle,
|
|
168
|
+
id: responsibilityId,
|
|
113
169
|
};
|
|
114
170
|
this.frequencyInfo.onCompletion = {
|
|
115
171
|
dueAfter: this.onCompletionOfInput,
|
|
116
|
-
responsibility:
|
|
117
|
-
assignee:
|
|
118
|
-
responsibilityCenter:
|
|
172
|
+
responsibility: responsibilityId,
|
|
173
|
+
assignee: firstAssigneeDetail.assignee ?? null,
|
|
174
|
+
responsibilityCenter: firstAssigneeDetail.responsibilityCenter ?? null,
|
|
119
175
|
};
|
|
120
176
|
this.frequencyDetails.emit(this.frequencyInfo);
|
|
121
177
|
}
|
|
@@ -132,10 +188,18 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
132
188
|
}
|
|
133
189
|
remove() {
|
|
134
190
|
this.selectedResponsibilityDetails = {};
|
|
191
|
+
this.selectedResponsibilityListPrefill = {};
|
|
192
|
+
this.onCompletionResponsibility = null;
|
|
135
193
|
this.isSelectedData = this.selectedResponsibilityDetails
|
|
136
194
|
? Object.keys(this.selectedResponsibilityDetails)?.length > 0
|
|
137
195
|
: false;
|
|
138
196
|
this.frequencyInfo.reportId = 0;
|
|
197
|
+
// Reset placeholder text since no responsibility is selected
|
|
198
|
+
this.frequencyInfo.placeholder =
|
|
199
|
+
this.onCompletionOfInput +
|
|
200
|
+
' ' +
|
|
201
|
+
(this.onCompletionOfInput > 1 ? 'days' : 'day') +
|
|
202
|
+
' after completion of ';
|
|
139
203
|
this.frequencyDetails.emit(this.frequencyInfo);
|
|
140
204
|
}
|
|
141
205
|
timeSelection(event) {
|
|
@@ -143,11 +207,11 @@ export class FrequencyOnCompletionOfComponent {
|
|
|
143
207
|
this.onTimeChanged(selectedValue);
|
|
144
208
|
}
|
|
145
209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyOnCompletionOfComponent, deps: [{ token: i1.FrequencyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyOnCompletionOfComponent, selector: "app-frequency-on-completion-of", inputs: { mode: "mode", feature: "feature", onCompletionResponsibility: "onCompletionResponsibility", startDate: "startDate", frequencyData: "frequencyData" }, outputs: { frequencyDetails: "frequencyDetails", radioForm: "radioForm" }, ngImport: i0, template: "<div class=\"frequency-completion\" *ngIf=\"mode !== 'policy' || backButton\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n DUE DATE FREQUENCY:\n </div>\n <div class=\"frequency-completion-inner\">\n <div class=\"frequency-completion-top vx-p-3 vx-d-flex vx-align-center\">\n <input class=\"countNum\" type=\"number\" [(ngModel)]=\"onCompletionOfInput\" (change)=\"inputValueChange($event)\"\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\n <div class=\"vx-fs-13 vx-paragraph-txt\">day after completion of</div>\n </div>\n <div class=\"frequency-completion-bottom vx-p-3\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n RESPONSIBILITY\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <ng-container>\n <div *ngIf=\"!onCompletionResponsibility?.title\" [class.disabled]=\"placeholder === 'Loading...'\"\n class=\"select-box vx-fs-11 vx-paragraph-txt vx-p-2 vx-pl-3 vx-pr-3 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\"\n (click)=\"openRadioResponsibility($event)\">\n {{\n placeholder === \"Loading...\"\n ? \"Loading...\"\n : \"Select a Responsibility\"\n }}\n <i class=\"icons vx-fs-10\"></i>\n </div>\n <div *ngIf=\"onCompletionResponsibility?.title as respName\"\n class=\"after-select-box vx-p-1 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\">\n <div class=\"select-chip vx-fs-12 vx-paragraph-txt vx-p-1 vx-pl-2 vx-pr-2 vx-d-flex vx-align-center\">\n <i class=\"icons cross vx-fs-14 vx-mr-1\" (click)=\"remove()\"></i>\n <span [appTooltip]=\"respName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{\n respName }}</span>\n </div>\n <button\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"openRadioResponsibility($event)\">\n <i class=\"icons vx-mr-1\" (click)=\"openRadioResponsibility($event)\"></i>\n EDIT\n </button>\n </div>\n <app-frequency-responsibility-list *ngIf=\"openRadio\" [feature]=\"feature\" [selectedResponsibilityDetails]=\"\n onCompletionResponsibility\n \" (backButton)=\"openRadioResponsibility($event)\"\n (selectedResponsibility)=\"onResponsibilitySelection($event)\"></app-frequency-responsibility-list>\n </ng-container>\n\n <div class=\"time-picker-group vx-d-flex\" *ngIf=\"!openRadio\">\n <div class=\"time-field\" appPopover (click)=\"timePicker.popover()\" placement=\"right\">\n <input class=\"input\" [placeholder]=\"onCompletionOfTime | uppercase\" readonly />\n <div class=\"clock-icon vx-d-flex vx-align-center vx-justify-center\">\n <i class=\"icons vx-fs-12 vx-paragraph-txt\"></i>\n </div>\n </div>\n <app-popover #timePicker [dontCloseonClick]=\"true\">\n <app-time-picker [time]=\"onCompletionOfTime\" (onTimeSelection)=\"\n timeSelection($event); timePicker.closePopover('top')\n \"></app-time-picker>\n </app-popover>\n </div>\n </div>\n </div>\n </div>\n <app-frequency-due-date [id]=\"3\" [pageName]=\"'onCompletion'\" [mode]=\"mode\" [isDeactivated]=\"false\"\n [completedValue]=\"onCompletionOfWindow\" [notCompletedValue]=\"onCompletionOfFailed\"\n (valueChange)=\"onValueChange($event)\"></app-frequency-due-date>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-completion-inner{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-completion-top input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem 0 0;outline:none}::ng-deep .frequency-completion-top input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-completion-top input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-completion-bottom{border-top:1px solid #f1f1f1}::ng-deep .frequency-completion-bottom .select-box{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2rem}::ng-deep .frequency-completion-bottom .select-box.disabled{pointer-events:none;opacity:.5}::ng-deep .frequency-completion-bottom .after-select-box{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;height:2rem}::ng-deep .frequency-completion-bottom .after-select-box .select-chip{background:#fff;border-radius:.125rem;box-shadow:0 2px 4px #1e5dd31a}::ng-deep .frequency-completion-bottom .after-select-box .select-chip .cross{cursor:pointer}::ng-deep .frequency-completion-bottom .after-select-box .select-chip span{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:30rem}::ng-deep .frequency-completion-bottom .after-select-box button.edit-btn{background:#fff;border-radius:.125rem;border:1px solid #f1f1f1;height:1.5rem}::ng-deep .frequency-completion-bottom cs-select{width:100%;margin-right:.75rem}::ng-deep .frequency-completion-bottom cs-select .selection-wrap .input-group input.value{height:2rem!important;font-size:11px!important}::ng-deep .frequency-completion-bottom .time-picker-group{background:#fff;border-radius:.25rem;display:flex;position:relative}::ng-deep .frequency-completion-bottom .time-picker-group input{background:transparent;border-radius:.25rem;border:1px solid #DBDBDB;color:#747576;font-size:13px;font-weight:400;width:6.25rem;padding:0 .75rem;margin:0;height:2rem;outline:none;position:relative;z-index:1;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group input::placeholder{color:#747576}::ng-deep .frequency-completion-bottom .time-picker-group .time-field{position:relative;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group .time-field.disable{background:#f1f1f1;border-radius:.25rem}::ng-deep .frequency-completion-bottom .time-picker-group .time-field .clock-icon{height:2rem;width:.75rem;position:absolute;right:.75rem;top:0}::ng-deep .selection-wrap .input-group i{top:12px!important}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TimePickerComponent, selector: "app-time-picker", inputs: ["time"], outputs: ["onTimeSelection"] }, { kind: "component", type: i8.FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: ["mode", "pageType", "completedRequired", "notCompletedRequired", "completedValue", "notCompletedValue", "deactivateValue", "isDeactivated", "id", "pageName"], outputs: ["valueChange"] }, { kind: "component", type: i9.FrequencyResponsibilityListComponent, selector: "app-frequency-responsibility-list", inputs: ["selectedResponsibilityDetails"], outputs: ["backButton", "selectedResponsibility"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }] }); }
|
|
210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyOnCompletionOfComponent, selector: "app-frequency-on-completion-of", inputs: { mode: "mode", feature: "feature", onCompletionResponsibility: "onCompletionResponsibility", startDate: "startDate", frequencyData: "frequencyData" }, outputs: { frequencyDetails: "frequencyDetails", radioForm: "radioForm" }, ngImport: i0, template: "<div class=\"frequency-completion\" *ngIf=\"mode !== 'policy' || backButton\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n DUE DATE FREQUENCY:\n </div>\n <div class=\"frequency-completion-inner\">\n <div class=\"frequency-completion-top vx-p-3 vx-d-flex vx-align-center\">\n <input class=\"countNum\" type=\"number\" [(ngModel)]=\"onCompletionOfInput\" (change)=\"inputValueChange($event)\"\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\n <div class=\"vx-fs-13 vx-paragraph-txt\">day after completion of</div>\n </div>\n <div class=\"frequency-completion-bottom vx-p-3\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n RESPONSIBILITY\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <ng-container>\n <div *ngIf=\"!onCompletionResponsibility?.title\" [class.disabled]=\"placeholder === 'Loading...'\"\n class=\"select-box vx-fs-11 vx-paragraph-txt vx-p-2 vx-pl-3 vx-pr-3 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\"\n (click)=\"openRadioResponsibility($event)\">\n {{\n placeholder === \"Loading...\"\n ? \"Loading...\"\n : \"Select a Responsibility\"\n }}\n <i class=\"icons vx-fs-10\"></i>\n </div>\n <div *ngIf=\"onCompletionResponsibility?.title as respName\"\n class=\"after-select-box vx-p-1 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\">\n <div class=\"select-chip vx-fs-12 vx-paragraph-txt vx-p-1 vx-pl-2 vx-pr-2 vx-d-flex vx-align-center\">\n <i class=\"icons cross vx-fs-14 vx-mr-1\" (click)=\"remove()\"></i>\n <span [appTooltip]=\"respName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{\n respName }}</span>\n </div>\n <button\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"openRadioResponsibility($event)\">\n <i class=\"icons vx-mr-1\" (click)=\"openRadioResponsibility($event)\"></i>\n EDIT\n </button>\n </div>\n <app-frequency-responsibility-list *ngIf=\"openRadio\" [feature]=\"feature\"\n [selectedResponsibilityDetails]=\"selectedResponsibilityListPrefill\"\n (backButton)=\"openRadioResponsibility($event)\"\n (selectedResponsibility)=\"onResponsibilitySelection($event)\"></app-frequency-responsibility-list>\n </ng-container>\n\n <div class=\"time-picker-group vx-d-flex\" *ngIf=\"!openRadio\">\n <div class=\"time-field\" appPopover (click)=\"timePicker.popover()\" placement=\"right\">\n <input class=\"input\" [placeholder]=\"onCompletionOfTime | uppercase\" readonly />\n <div class=\"clock-icon vx-d-flex vx-align-center vx-justify-center\">\n <i class=\"icons vx-fs-12 vx-paragraph-txt\"></i>\n </div>\n </div>\n <app-popover #timePicker [dontCloseonClick]=\"true\">\n <app-time-picker [time]=\"onCompletionOfTime\" (onTimeSelection)=\"\n timeSelection($event); timePicker.closePopover('top')\n \"></app-time-picker>\n </app-popover>\n </div>\n </div>\n </div>\n </div>\n <app-frequency-due-date [id]=\"3\" [pageName]=\"'onCompletion'\" [mode]=\"mode\" [isDeactivated]=\"false\"\n [completedValue]=\"onCompletionOfWindow\" [notCompletedValue]=\"onCompletionOfFailed\"\n (valueChange)=\"onValueChange($event)\"></app-frequency-due-date>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-completion-inner{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-completion-top input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem 0 0;outline:none}::ng-deep .frequency-completion-top input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-completion-top input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-completion-bottom{border-top:1px solid #f1f1f1}::ng-deep .frequency-completion-bottom .select-box{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2rem}::ng-deep .frequency-completion-bottom .select-box.disabled{pointer-events:none;opacity:.5}::ng-deep .frequency-completion-bottom .after-select-box{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;height:2rem}::ng-deep .frequency-completion-bottom .after-select-box .select-chip{background:#fff;border-radius:.125rem;box-shadow:0 2px 4px #1e5dd31a}::ng-deep .frequency-completion-bottom .after-select-box .select-chip .cross{cursor:pointer}::ng-deep .frequency-completion-bottom .after-select-box .select-chip span{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:30rem}::ng-deep .frequency-completion-bottom .after-select-box button.edit-btn{background:#fff;border-radius:.125rem;border:1px solid #f1f1f1;height:1.5rem}::ng-deep .frequency-completion-bottom cs-select{width:100%;margin-right:.75rem}::ng-deep .frequency-completion-bottom cs-select .selection-wrap .input-group input.value{height:2rem!important;font-size:11px!important}::ng-deep .frequency-completion-bottom .time-picker-group{background:#fff;border-radius:.25rem;display:flex;position:relative}::ng-deep .frequency-completion-bottom .time-picker-group input{background:transparent;border-radius:.25rem;border:1px solid #DBDBDB;color:#747576;font-size:13px;font-weight:400;width:6.25rem;padding:0 .75rem;margin:0;height:2rem;outline:none;position:relative;z-index:1;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group input::placeholder{color:#747576}::ng-deep .frequency-completion-bottom .time-picker-group .time-field{position:relative;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group .time-field.disable{background:#f1f1f1;border-radius:.25rem}::ng-deep .frequency-completion-bottom .time-picker-group .time-field .clock-icon{height:2rem;width:.75rem;position:absolute;right:.75rem;top:0}::ng-deep .selection-wrap .input-group i{top:12px!important}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TimePickerComponent, selector: "app-time-picker", inputs: ["time"], outputs: ["onTimeSelection"] }, { kind: "component", type: i8.FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: ["mode", "pageType", "completedRequired", "notCompletedRequired", "completedValue", "notCompletedValue", "deactivateValue", "isDeactivated", "id", "pageName"], outputs: ["valueChange"] }, { kind: "component", type: i9.FrequencyResponsibilityListComponent, selector: "app-frequency-responsibility-list", inputs: ["selectedResponsibilityDetails"], outputs: ["backButton", "selectedResponsibility"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }] }); }
|
|
147
211
|
}
|
|
148
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyOnCompletionOfComponent, decorators: [{
|
|
149
213
|
type: Component,
|
|
150
|
-
args: [{ selector: 'app-frequency-on-completion-of', template: "<div class=\"frequency-completion\" *ngIf=\"mode !== 'policy' || backButton\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n DUE DATE FREQUENCY:\n </div>\n <div class=\"frequency-completion-inner\">\n <div class=\"frequency-completion-top vx-p-3 vx-d-flex vx-align-center\">\n <input class=\"countNum\" type=\"number\" [(ngModel)]=\"onCompletionOfInput\" (change)=\"inputValueChange($event)\"\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\n <div class=\"vx-fs-13 vx-paragraph-txt\">day after completion of</div>\n </div>\n <div class=\"frequency-completion-bottom vx-p-3\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n RESPONSIBILITY\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <ng-container>\n <div *ngIf=\"!onCompletionResponsibility?.title\" [class.disabled]=\"placeholder === 'Loading...'\"\n class=\"select-box vx-fs-11 vx-paragraph-txt vx-p-2 vx-pl-3 vx-pr-3 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\"\n (click)=\"openRadioResponsibility($event)\">\n {{\n placeholder === \"Loading...\"\n ? \"Loading...\"\n : \"Select a Responsibility\"\n }}\n <i class=\"icons vx-fs-10\"></i>\n </div>\n <div *ngIf=\"onCompletionResponsibility?.title as respName\"\n class=\"after-select-box vx-p-1 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\">\n <div class=\"select-chip vx-fs-12 vx-paragraph-txt vx-p-1 vx-pl-2 vx-pr-2 vx-d-flex vx-align-center\">\n <i class=\"icons cross vx-fs-14 vx-mr-1\" (click)=\"remove()\"></i>\n <span [appTooltip]=\"respName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{\n respName }}</span>\n </div>\n <button\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"openRadioResponsibility($event)\">\n <i class=\"icons vx-mr-1\" (click)=\"openRadioResponsibility($event)\"></i>\n EDIT\n </button>\n </div>\n <app-frequency-responsibility-list *ngIf=\"openRadio\" [feature]=\"feature\"
|
|
214
|
+
args: [{ selector: 'app-frequency-on-completion-of', template: "<div class=\"frequency-completion\" *ngIf=\"mode !== 'policy' || backButton\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n DUE DATE FREQUENCY:\n </div>\n <div class=\"frequency-completion-inner\">\n <div class=\"frequency-completion-top vx-p-3 vx-d-flex vx-align-center\">\n <input class=\"countNum\" type=\"number\" [(ngModel)]=\"onCompletionOfInput\" (change)=\"inputValueChange($event)\"\n onkeydown=\"return event.keyCode !== 190\" min=\"0\" oninput=\"this.value = Math.abs(this.value)\" />\n <div class=\"vx-fs-13 vx-paragraph-txt\">day after completion of</div>\n </div>\n <div class=\"frequency-completion-bottom vx-p-3\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n RESPONSIBILITY\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <ng-container>\n <div *ngIf=\"!onCompletionResponsibility?.title\" [class.disabled]=\"placeholder === 'Loading...'\"\n class=\"select-box vx-fs-11 vx-paragraph-txt vx-p-2 vx-pl-3 vx-pr-3 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\"\n (click)=\"openRadioResponsibility($event)\">\n {{\n placeholder === \"Loading...\"\n ? \"Loading...\"\n : \"Select a Responsibility\"\n }}\n <i class=\"icons vx-fs-10\"></i>\n </div>\n <div *ngIf=\"onCompletionResponsibility?.title as respName\"\n class=\"after-select-box vx-p-1 vx-mr-3 vx-d-flex vx-align-center vx-justify-between vx-w-100\">\n <div class=\"select-chip vx-fs-12 vx-paragraph-txt vx-p-1 vx-pl-2 vx-pr-2 vx-d-flex vx-align-center\">\n <i class=\"icons cross vx-fs-14 vx-mr-1\" (click)=\"remove()\"></i>\n <span [appTooltip]=\"respName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{\n respName }}</span>\n </div>\n <button\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"openRadioResponsibility($event)\">\n <i class=\"icons vx-mr-1\" (click)=\"openRadioResponsibility($event)\"></i>\n EDIT\n </button>\n </div>\n <app-frequency-responsibility-list *ngIf=\"openRadio\" [feature]=\"feature\"\n [selectedResponsibilityDetails]=\"selectedResponsibilityListPrefill\"\n (backButton)=\"openRadioResponsibility($event)\"\n (selectedResponsibility)=\"onResponsibilitySelection($event)\"></app-frequency-responsibility-list>\n </ng-container>\n\n <div class=\"time-picker-group vx-d-flex\" *ngIf=\"!openRadio\">\n <div class=\"time-field\" appPopover (click)=\"timePicker.popover()\" placement=\"right\">\n <input class=\"input\" [placeholder]=\"onCompletionOfTime | uppercase\" readonly />\n <div class=\"clock-icon vx-d-flex vx-align-center vx-justify-center\">\n <i class=\"icons vx-fs-12 vx-paragraph-txt\"></i>\n </div>\n </div>\n <app-popover #timePicker [dontCloseonClick]=\"true\">\n <app-time-picker [time]=\"onCompletionOfTime\" (onTimeSelection)=\"\n timeSelection($event); timePicker.closePopover('top')\n \"></app-time-picker>\n </app-popover>\n </div>\n </div>\n </div>\n </div>\n <app-frequency-due-date [id]=\"3\" [pageName]=\"'onCompletion'\" [mode]=\"mode\" [isDeactivated]=\"false\"\n [completedValue]=\"onCompletionOfWindow\" [notCompletedValue]=\"onCompletionOfFailed\"\n (valueChange)=\"onValueChange($event)\"></app-frequency-due-date>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-completion-inner{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-completion-top input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem 0 0;outline:none}::ng-deep .frequency-completion-top input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-completion-top input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-completion-bottom{border-top:1px solid #f1f1f1}::ng-deep .frequency-completion-bottom .select-box{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2rem}::ng-deep .frequency-completion-bottom .select-box.disabled{pointer-events:none;opacity:.5}::ng-deep .frequency-completion-bottom .after-select-box{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;height:2rem}::ng-deep .frequency-completion-bottom .after-select-box .select-chip{background:#fff;border-radius:.125rem;box-shadow:0 2px 4px #1e5dd31a}::ng-deep .frequency-completion-bottom .after-select-box .select-chip .cross{cursor:pointer}::ng-deep .frequency-completion-bottom .after-select-box .select-chip span{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:30rem}::ng-deep .frequency-completion-bottom .after-select-box button.edit-btn{background:#fff;border-radius:.125rem;border:1px solid #f1f1f1;height:1.5rem}::ng-deep .frequency-completion-bottom cs-select{width:100%;margin-right:.75rem}::ng-deep .frequency-completion-bottom cs-select .selection-wrap .input-group input.value{height:2rem!important;font-size:11px!important}::ng-deep .frequency-completion-bottom .time-picker-group{background:#fff;border-radius:.25rem;display:flex;position:relative}::ng-deep .frequency-completion-bottom .time-picker-group input{background:transparent;border-radius:.25rem;border:1px solid #DBDBDB;color:#747576;font-size:13px;font-weight:400;width:6.25rem;padding:0 .75rem;margin:0;height:2rem;outline:none;position:relative;z-index:1;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group input::placeholder{color:#747576}::ng-deep .frequency-completion-bottom .time-picker-group .time-field{position:relative;cursor:pointer}::ng-deep .frequency-completion-bottom .time-picker-group .time-field.disable{background:#f1f1f1;border-radius:.25rem}::ng-deep .frequency-completion-bottom .time-picker-group .time-field .clock-icon{height:2rem;width:.75rem;position:absolute;right:.75rem;top:0}::ng-deep .selection-wrap .input-group i{top:12px!important}\n"] }]
|
|
151
215
|
}], ctorParameters: function () { return [{ type: i1.FrequencyService }]; }, propDecorators: { mode: [{
|
|
152
216
|
type: Input
|
|
153
217
|
}], feature: [{
|
|
@@ -163,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
163
227
|
}], radioForm: [{
|
|
164
228
|
type: Output
|
|
165
229
|
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxnQ0FBZ0M7SUEwQjNDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBekI3QyxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBR3hCLGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4Qix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLFlBQVksQ0FBQztRQUNsQyxpQ0FBNEIsR0FBZSxFQUFFLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUUz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QWYsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBYUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBlbGVtZW50QXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YnLFxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktb24tY29tcGxldGlvbi1vZi5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lPbkNvbXBsZXRpb25PZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG1vZGU6IGFueSA9ICcnO1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIEBJbnB1dCgpIG9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIERFRkFVTFRfVElNRTogc3RyaW5nID0gREVGQVVMVF9USU1FO1xuICBvbkNvbXBsZXRpb25PZklucHV0ID0gMTtcbiAgb25Db21wbGV0aW9uT2ZXaW5kb3cgPSAzO1xuICBvbkNvbXBsZXRpb25PZkZhaWxlZCA9IDU7XG4gIG9uQ29tcGxldGlvbk9mVGltZSA9IERFRkFVTFRfVElNRTtcbiAgb25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eTogQXJyYXk8YW55PiA9IFtdO1xuICBpc0xpZmVjeWNsZU1vZGlmaWVkID0gZmFsc2U7XG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHkgPSAwO1xuICBwbGFjZWhvbGRlciA9ICdMb2FkaW5nLi4uJztcbiAgZnJlcXVlbmN5SW5mbzogYW55O1xuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlsczogYW55ID0ge307XG5cbiAgQElucHV0KCkgc3RhcnREYXRlID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG4gIEBJbnB1dCgpIGZyZXF1ZW5jeURhdGE6IGFueTtcbiAgbGlmZWN5Y2xlRGV0YWlsczogYW55ID0gJzAwMDAtMDAtMDB+fjAnO1xuXG4gIEBPdXRwdXQoKSBmcmVxdWVuY3lEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByYWRpb0Zvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgb3BlblJhZGlvOiBib29sZWFuID0gZmFsc2U7XG4gIGJhY2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTZWxlY3RlZERhdGE6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvID0gT2JqZWN0LmFzc2lnbih0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJlcXVlbmN5SW5mbyk7XG4gICAgdGhpcy5nZXRDb21wbGV0aW9uUmVwb3J0cygpO1xuICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uRnJlcXVlbmN5KCk7XG4gICAgdGhpcy5pc1NlbGVjdGVkRGF0YSA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHNcbiAgICAgID8gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscyk/Lmxlbmd0aCA+IDBcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICBwb3B1bGF0ZUZyZXF1ZW5jeSgpIHtcbiAgICBjb25zdCBmcmVxdWVuY3lTZWxlY3RlZCA9IHRoaXMuZnJlcXVlbmN5RGF0YS5wYXR0ZXJuLnNwbGl0KCd+Jyk7XG4gICAgdGhpcy5vbkNvbXBsZXRpb25PZklucHV0ID0gcGFyc2VJbnQoZnJlcXVlbmN5U2VsZWN0ZWRbM10pO1xuICAgIHRoaXMub25Db21wbGV0aW9uT2ZGYWlsZWQgPSB0aGlzLmZyZXF1ZW5jeURhdGEuZmFpbGVkO1xuICAgIHRoaXMub25Db21wbGV0aW9uT2ZXaW5kb3cgPSB0aGlzLmZyZXF1ZW5jeURhdGEud2luZG93O1xuICAgIHRoaXMub25Db21wbGV0aW9uT2ZUaW1lID0gdGhpcy5mcmVxdWVuY3lEYXRhLmZhaWxlZFRpbWU7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5RGF0YS5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eTtcbiAgICB0aGlzLmdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpO1xuICAgIHRoaXMuaXNTZWxlY3RlZERhdGEgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzXG4gICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMpPy5sZW5ndGggPiAwXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgb25UaW1lQ2hhbmdlZChldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNvbXBsZXRpb25PZlRpbWUgPSBldmVudDtcbiAgICB0aGlzLmdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICB0aGlzLm9uQ29tcGxldGlvbk9mV2luZG93ID0gZXZlbnQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25Db21wbGV0aW9uT2ZGYWlsZWQgPSBldmVudC52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5nZXRPbkNvbXBsZXRpb25GcmVxdWVuY3koKTtcbiAgfVxuXG4gIG9uUmVzcG9uc2liaWxpdHlTZWxlY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMgPSBldmVudDtcbiAgICB0aGlzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0gZXZlbnQ/LnJlc3BvbnNpYmlsaXR5O1xuICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uRnJlcXVlbmN5KCk7XG4gIH1cblxuICBnZXRDb21wbGV0aW9uUmVwb3J0cygpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHkgPSAwO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnU2VsZWN0IGEgUmVzcG9uc2liaWxpdHknO1xuICAgIHRoaXMub25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YT8ub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscykge1xuICAgICAgdGhpcy5vbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5LnB1c2goXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8ub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmZyZXF1ZW5jeURhdGEucGF0dGVybiAhPSAnJyAmJlxuICAgICAgcGFyc2VJbnQodGhpcy5mcmVxdWVuY3lEYXRhLnBhdHRlcm4uc3BsaXQoJ34nKVswXSkgPT09IDZcbiAgICApIHtcbiAgICAgIHRoaXMucG9wdWxhdGVGcmVxdWVuY3koKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dFZhbHVlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mSW5wdXQgPSBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAodGhpcy5vbkNvbXBsZXRpb25PZklucHV0IDwgMSkge1xuICAgICAgdGhpcy5vbkNvbXBsZXRpb25PZklucHV0ID0gMTtcbiAgICB9XG4gICAgdGhpcy5nZXRPbkNvbXBsZXRpb25GcmVxdWVuY3koKTtcbiAgfVxuXG4gIGdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpIHtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGxhY2Vob2xkZXIgPVxuICAgICAgdGhpcy5vbkNvbXBsZXRpb25PZklucHV0ICtcbiAgICAgICcgJyArXG4gICAgICAodGhpcy5vbkNvbXBsZXRpb25PZklucHV0ID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXG4gICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArXG4gICAgICAodGhpcy5vbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5ICYmXG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eT8udGl0bGVcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eT8udGl0bGVcbiAgICAgICAgOiAnJyk7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBhdHRlcm4gPVxuICAgICAgNiArICd+JyArICcwJyArICd+JyArICcwJyArICd+JyArIHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dDtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICdvbl9jb21wbGV0ZSc7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZEFmdGVyID0gdGhpcy5vbkNvbXBsZXRpb25PZkZhaWxlZDtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy5vbkNvbXBsZXRpb25PZldpbmRvdztcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMTJociA9IHRoaXMub25Db21wbGV0aW9uT2ZUaW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgoXG4gICAgICB0aGlzLm9uQ29tcGxldGlvbk9mVGltZVxuICAgICk7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF90aW1lX3V0YyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgdGl0bGU6IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHM/LnJlc3BvbnNpYmlsaXR5Py50aXRsZSxcbiAgICAgIGlkOiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eT8uaWQsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ub25Db21wbGV0aW9uID0ge1xuICAgICAgZHVlQWZ0ZXI6IHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dCxcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eT8uaWQsXG4gICAgICBhc3NpZ25lZTogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscz8ucmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlRGV0YWlsc1swXT8uYXNzaWduZWUsXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscz8ucmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlRGV0YWlsc1swXT8ucmVzcG9uc2liaWxpdHlDZW50ZXJcbiAgICB9XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmVtaXQodGhpcy5mcmVxdWVuY3lJbmZvKTtcbiAgfVxuXG4gIG9wZW5SYWRpb1Jlc3BvbnNpYmlsaXR5KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdiYWNrVG9PbkNvbXBsZXRpb24nKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b24gPSB0cnVlO1xuICAgICAgdGhpcy5vcGVuUmFkaW8gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUmFkaW8gPSB0cnVlO1xuICAgICAgdGhpcy5iYWNrQnV0dG9uID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmFkaW9Gb3JtLmVtaXQodGhpcy5vcGVuUmFkaW8pO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMgPSB7fTtcbiAgICB0aGlzLmlzU2VsZWN0ZWREYXRhID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlsc1xuICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzKT8ubGVuZ3RoID4gMFxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucmVwb3J0SWQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5lbWl0KHRoaXMuZnJlcXVlbmN5SW5mbyk7XG4gIH1cblxuICB0aW1lU2VsZWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gZXZlbnQuc2VsZWN0ZWRWYWx1ZTtcbiAgICB0aGlzLm9uVGltZUNoYW5nZWQoc2VsZWN0ZWRWYWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY29tcGxldGlvblwiICpuZ0lmPVwibW9kZSAhPT0gJ3BvbGljeScgfHwgYmFja0J1dHRvblwiPlxuICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlxuICAgIERVRSBEQVRFIEZSRVFVRU5DWTpcbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY29tcGxldGlvbi1pbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY29tcGxldGlvbi10b3AgdngtcC0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImNvdW50TnVtXCIgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwib25Db21wbGV0aW9uT2ZJbnB1dFwiIChjaGFuZ2UpPVwiaW5wdXRWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiIG1pbj1cIjBcIiBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0XCI+ZGF5IGFmdGVyIGNvbXBsZXRpb24gb2Y8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNvbXBsZXRpb24tYm90dG9tIHZ4LXAtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cbiAgICAgICAgUkVTUE9OU0lCSUxJVFlcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5Py50aXRsZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJwbGFjZWhvbGRlciA9PT0gJ0xvYWRpbmcuLi4nXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbXItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC13LTEwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJhZGlvUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyID09PSBcIkxvYWRpbmcuLi5cIlxuICAgICAgICAgICAgPyBcIkxvYWRpbmcuLi5cIlxuICAgICAgICAgICAgOiBcIlNlbGVjdCBhIFJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEwXCI+JiN4ZTllODs8L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5Py50aXRsZSBhcyByZXNwTmFtZVwiXG4gICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtcC0xIHZ4LW1yLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY2hpcCB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXAtMSB2eC1wbC0yIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTE0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKClcIj4mI3hlOWFlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwicmVzcE5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj57e1xuICAgICAgICAgICAgICAgIHJlc3BOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdC1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMSB2eC1wci0xIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SYWRpb1Jlc3BvbnNpYmlsaXR5KCRldmVudClcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCIgKGNsaWNrKT1cIm9wZW5SYWRpb1Jlc3BvbnNpYmlsaXR5KCRldmVudClcIj4mI3hlOTBjOzwvaT5cbiAgICAgICAgICAgICAgRURJVFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdCAqbmdJZj1cIm9wZW5SYWRpb1wiIFtmZWF0dXJlXT1cImZlYXR1cmVcIiBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHNdPVwiXG4gICAgICAgICAgb25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHlcbiAgICAgICAgICAgIFwiIChiYWNrQnV0dG9uKT1cIm9wZW5SYWRpb1Jlc3BvbnNpYmlsaXR5KCRldmVudClcIlxuICAgICAgICAgICAgKHNlbGVjdGVkUmVzcG9uc2liaWxpdHkpPVwib25SZXNwb25zaWJpbGl0eVNlbGVjdGlvbigkZXZlbnQpXCI+PC9hcHAtZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3Q+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1ncm91cCB2eC1kLWZsZXhcIiAqbmdJZj1cIiFvcGVuUmFkaW9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1maWVsZFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInRpbWVQaWNrZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgW3BsYWNlaG9sZGVyXT1cIm9uQ29tcGxldGlvbk9mVGltZSB8IHVwcGVyY2FzZVwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvY2staWNvbiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPiYjeGU5NTU7PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICN0aW1lUGlja2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxhcHAtdGltZS1waWNrZXIgW3RpbWVdPVwib25Db21wbGV0aW9uT2ZUaW1lXCIgKG9uVGltZVNlbGVjdGlvbik9XCJcbiAgICAgICAgICAgICAgICB0aW1lU2VsZWN0aW9uKCRldmVudCk7IHRpbWVQaWNrZXIuY2xvc2VQb3BvdmVyKCd0b3AnKVxuICAgICAgICAgICAgICBcIj48L2FwcC10aW1lLXBpY2tlcj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGFwcC1mcmVxdWVuY3ktZHVlLWRhdGUgW2lkXT1cIjNcIiBbcGFnZU5hbWVdPVwiJ29uQ29tcGxldGlvbidcIiBbbW9kZV09XCJtb2RlXCIgW2lzRGVhY3RpdmF0ZWRdPVwiZmFsc2VcIlxuICAgIFtjb21wbGV0ZWRWYWx1ZV09XCJvbkNvbXBsZXRpb25PZldpbmRvd1wiIFtub3RDb21wbGV0ZWRWYWx1ZV09XCJvbkNvbXBsZXRpb25PZkZhaWxlZFwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWZyZXF1ZW5jeS1kdWUtZGF0ZT5cbjwvZGl2PiJdfQ==
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YvZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxnQ0FBZ0M7SUEyQjNDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBMUI3QyxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBR3hCLGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4Qix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLFlBQVksQ0FBQztRQUNsQyxpQ0FBNEIsR0FBZSxFQUFFLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUUz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QUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDO1lBQzdELENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDaEMsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUM1QixJQUFJLENBQUMsbUJBQW1CO2dCQUN4QixHQUFHO2dCQUNILENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQy9DLHVCQUF1QixDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FyT1UsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsaVRDWDdDLG92SEFpRU07OzRGRHRETyxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsZ0NBQWdDO3VHQUtqQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFjRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IGVsZW1lbnRBdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERFRkFVTFRfVElNRSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktb24tY29tcGxldGlvbi1vZicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktb24tY29tcGxldGlvbi1vZi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1vbi1jb21wbGV0aW9uLW9mLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeU9uQ29tcGxldGlvbk9mQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbW9kZTogYW55ID0gJyc7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgb25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHk6IGFueTtcbiAgREVGQVVMVF9USU1FOiBzdHJpbmcgPSBERUZBVUxUX1RJTUU7XG4gIG9uQ29tcGxldGlvbk9mSW5wdXQgPSAxO1xuICBvbkNvbXBsZXRpb25PZldpbmRvdyA9IDM7XG4gIG9uQ29tcGxldGlvbk9mRmFpbGVkID0gNTtcbiAgb25Db21wbGV0aW9uT2ZUaW1lID0gREVGQVVMVF9USU1FO1xuICBvbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5OiBBcnJheTxhbnk+ID0gW107XG4gIGlzTGlmZWN5Y2xlTW9kaWZpZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IDA7XG4gIHBsYWNlaG9sZGVyID0gJ0xvYWRpbmcuLi4nO1xuICBmcmVxdWVuY3lJbmZvOiBhbnk7XG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzOiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUxpc3RQcmVmaWxsOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKSBzdGFydERhdGUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgQElucHV0KCkgZnJlcXVlbmN5RGF0YTogYW55O1xuICBsaWZlY3ljbGVEZXRhaWxzOiBhbnkgPSAnMDAwMC0wMC0wMH5+MCc7XG5cbiAgQE91dHB1dCgpIGZyZXF1ZW5jeURldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJhZGlvRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBvcGVuUmFkaW86IGJvb2xlYW4gPSBmYWxzZTtcbiAgYmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NlbGVjdGVkRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8gPSBPYmplY3QuYXNzaWduKHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmVxdWVuY3lJbmZvKTtcblxuICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIHNpbXBsZSBvbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSAoZnJvbSBlZGl0KSxcbiAgICAvLyBoeWRyYXRlIHN0cnVjdHVyZXMgc28gdGhlIGNoaXAgKyBsaXN0IGNhbiB1c2UgaXQuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eT8udGl0bGUgJiZcbiAgICAgICF0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eVxuICAgICkge1xuICAgICAgLy8gRm9yIGNoaXAgKyBmcmVxdWVuY3kgY2FsY3VsYXRpb25zIHdlIG9ubHkgbmVlZCB0aXRsZS9pZFxuICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscyA9IHtcbiAgICAgICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgICAgICB0aXRsZTogdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eS50aXRsZSxcbiAgICAgICAgICBpZDogdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eS5pZCxcbiAgICAgICAgICBhc3NpZ25lZURldGFpbHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXNzaWduZWU6IG51bGwsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBlYWNoQXNzaWduZWU6IHtcbiAgICAgICAgICBhc3NpZ25lZTogbnVsbCxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIC8vIEZvciBsaXN0IGNvbXBvbmVudCBwcmUtc2VsZWN0aW9uIHdlIG11c3QgbWF0Y2ggaXRzIGV4cGVjdGVkIHNoYXBlXG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlMaXN0UHJlZmlsbCA9IHtcbiAgICAgICAgYXNzaWduZWU6IG51bGwsXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBudWxsLFxuICAgICAgICB0aXRsZTogdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eS50aXRsZSxcbiAgICAgICAgaWQ6IHRoaXMub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHkuaWQsXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmdldENvbXBsZXRpb25SZXBvcnRzKCk7XG4gICAgLy8gUHJlLXBvcHVsYXRlIHNlbGVjdGVkIHJlc3BvbnNpYmlsaXR5IHdoZW4gZWRpdGluZyBhbiBleGlzdGluZyBmcmVxdWVuY3lcbiAgICBpZiAoXG4gICAgICAhdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eT8udGl0bGUgJiZcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8ub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xuICAgICkge1xuICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5RGF0YS5vbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xuICAgICAgaWYgKGRldGFpbHMgJiYgT2JqZWN0LmtleXMoZGV0YWlscykubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgICAgIHRpdGxlOiBkZXRhaWxzLnJlcG9ydF9uYW1lLFxuICAgICAgICAgIGlkOiBkZXRhaWxzLlJlcG9ydElkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpO1xuICAgIHRoaXMuaXNTZWxlY3RlZERhdGEgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzXG4gICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMpPy5sZW5ndGggPiAwXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgcG9wdWxhdGVGcmVxdWVuY3koKSB7XG4gICAgY29uc3QgZnJlcXVlbmN5U2VsZWN0ZWQgPSB0aGlzLmZyZXF1ZW5jeURhdGEucGF0dGVybi5zcGxpdCgnficpO1xuICAgIHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dCA9IHBhcnNlSW50KGZyZXF1ZW5jeVNlbGVjdGVkWzNdKTtcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mRmFpbGVkID0gdGhpcy5mcmVxdWVuY3lEYXRhLmZhaWxlZDtcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mV2luZG93ID0gdGhpcy5mcmVxdWVuY3lEYXRhLndpbmRvdztcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mVGltZSA9IHRoaXMuZnJlcXVlbmN5RGF0YS5mYWlsZWRUaW1lO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMgPVxuICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5O1xuICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uRnJlcXVlbmN5KCk7XG4gICAgdGhpcy5pc1NlbGVjdGVkRGF0YSA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHNcbiAgICAgID8gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscyk/Lmxlbmd0aCA+IDBcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICBvblRpbWVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mVGltZSA9IGV2ZW50O1xuICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uRnJlcXVlbmN5KCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgIHRoaXMub25Db21wbGV0aW9uT2ZXaW5kb3cgPSBldmVudC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkNvbXBsZXRpb25PZkZhaWxlZCA9IGV2ZW50LnZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpO1xuICB9XG5cbiAgb25SZXNwb25zaWJpbGl0eVNlbGVjdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscyA9IGV2ZW50O1xuICAgIC8vIEJ1aWxkIGZsYXQgcHJlZmlsbCBvYmplY3QgZm9yIGxpc3Qgb24gc3Vic2VxdWVudCBlZGl0c1xuICAgIGlmIChldmVudD8uZWFjaEFzc2lnbmVlICYmIGV2ZW50Py5yZXNwb25zaWJpbGl0eSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5TGlzdFByZWZpbGwgPSB7XG4gICAgICAgIGFzc2lnbmVlOiBldmVudC5lYWNoQXNzaWduZWUuYXNzaWduZWUsXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBldmVudC5lYWNoQXNzaWduZWUucmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgIHRpdGxlOiBldmVudC5yZXNwb25zaWJpbGl0eS50aXRsZSxcbiAgICAgICAgaWQ6IGV2ZW50LnJlc3BvbnNpYmlsaXR5LmlkLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSA9IGV2ZW50Py5yZXNwb25zaWJpbGl0eTtcbiAgICB0aGlzLmdldE9uQ29tcGxldGlvbkZyZXF1ZW5jeSgpO1xuICB9XG5cbiAgZ2V0Q29tcGxldGlvblJlcG9ydHMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5ID0gMDtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJ1NlbGVjdCBhIFJlc3BvbnNpYmlsaXR5JztcbiAgICB0aGlzLm9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHkgPSBbXTtcblxuICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGE/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMpIHtcbiAgICAgIHRoaXMub25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eS5wdXNoKFxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGE/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLnBhdHRlcm4gIT0gJycgJiZcbiAgICAgIHBhcnNlSW50KHRoaXMuZnJlcXVlbmN5RGF0YS5wYXR0ZXJuLnNwbGl0KCd+JylbMF0pID09PSA2XG4gICAgKSB7XG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRWYWx1ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5vbkNvbXBsZXRpb25PZklucHV0ID0gTnVtYmVyKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgaWYgKHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dCA8IDEpIHtcbiAgICAgIHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dCA9IDE7XG4gICAgfVxuICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uRnJlcXVlbmN5KCk7XG4gIH1cblxuICBnZXRPbkNvbXBsZXRpb25GcmVxdWVuY3koKSB7XG4gICAgY29uc3QgcmVzcG9uc2liaWxpdHlUaXRsZSA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzPy5yZXNwb25zaWJpbGl0eT8udGl0bGUgfHxcbiAgICAgIHRoaXMub25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHk/LnRpdGxlIHx8XG4gICAgICAnJztcblxuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5SWQgPVxuICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscz8ucmVzcG9uc2liaWxpdHk/LmlkIHx8XG4gICAgICB0aGlzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5Py5pZCB8fFxuICAgICAgbnVsbDtcblxuICAgIGNvbnN0IGZpcnN0QXNzaWduZWVEZXRhaWwgPVxuICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscz8ucmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlRGV0YWlscz8uWzBdIHx8XG4gICAgICB7fTtcblxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wbGFjZWhvbGRlciA9XG4gICAgICB0aGlzLm9uQ29tcGxldGlvbk9mSW5wdXQgK1xuICAgICAgJyAnICtcbiAgICAgICh0aGlzLm9uQ29tcGxldGlvbk9mSW5wdXQgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnICtcbiAgICAgIHJlc3BvbnNpYmlsaXR5VGl0bGU7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBhdHRlcm4gPVxuICAgICAgNiArICd+JyArICcwJyArICd+JyArICcwJyArICd+JyArIHRoaXMub25Db21wbGV0aW9uT2ZJbnB1dDtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICdvbl9jb21wbGV0ZSc7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZEFmdGVyID0gdGhpcy5vbkNvbXBsZXRpb25PZkZhaWxlZDtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy5vbkNvbXBsZXRpb25PZldpbmRvdztcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMTJociA9IHRoaXMub25Db21wbGV0aW9uT2ZUaW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgoXG4gICAgICB0aGlzLm9uQ29tcGxldGlvbk9mVGltZVxuICAgICk7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF90aW1lX3V0YyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgdGl0bGU6IHJlc3BvbnNpYmlsaXR5VGl0bGUsXG4gICAgICBpZDogcmVzcG9uc2liaWxpdHlJZCxcbiAgICB9O1xuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5vbkNvbXBsZXRpb24gPSB7XG4gICAgICBkdWVBZnRlcjogdGhpcy5vbkNvbXBsZXRpb25PZklucHV0LFxuICAgICAgcmVzcG9uc2liaWxpdHk6IHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICBhc3NpZ25lZTogZmlyc3RBc3NpZ25lZURldGFpbC5hc3NpZ25lZSA/PyBudWxsLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IGZpcnN0QXNzaWduZWVEZXRhaWwucmVzcG9uc2liaWxpdHlDZW50ZXIgPz8gbnVsbCxcbiAgICB9O1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5lbWl0KHRoaXMuZnJlcXVlbmN5SW5mbyk7XG4gIH1cblxuICBvcGVuUmFkaW9SZXNwb25zaWJpbGl0eShldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50ID09PSAnYmFja1RvT25Db21wbGV0aW9uJykge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlblJhZGlvID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblJhZGlvID0gdHJ1ZTtcbiAgICAgIHRoaXMuYmFja0J1dHRvbiA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnJhZGlvRm9ybS5lbWl0KHRoaXMub3BlblJhZGlvKTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzID0ge307XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5TGlzdFByZWZpbGwgPSB7fTtcbiAgICB0aGlzLm9uQ29tcGxldGlvblJlc3BvbnNpYmlsaXR5ID0gbnVsbDtcbiAgICB0aGlzLmlzU2VsZWN0ZWREYXRhID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlsc1xuICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzKT8ubGVuZ3RoID4gMFxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucmVwb3J0SWQgPSAwO1xuICAgIC8vIFJlc2V0IHBsYWNlaG9sZGVyIHRleHQgc2luY2Ugbm8gcmVzcG9uc2liaWxpdHkgaXMgc2VsZWN0ZWRcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGxhY2Vob2xkZXIgPVxuICAgICAgdGhpcy5vbkNvbXBsZXRpb25PZklucHV0ICtcbiAgICAgICcgJyArXG4gICAgICAodGhpcy5vbkNvbXBsZXRpb25PZklucHV0ID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXG4gICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZW1pdCh0aGlzLmZyZXF1ZW5jeUluZm8pO1xuICB9XG5cbiAgdGltZVNlbGVjdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LnNlbGVjdGVkVmFsdWU7XG4gICAgdGhpcy5vblRpbWVDaGFuZ2VkKHNlbGVjdGVkVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNvbXBsZXRpb25cIiAqbmdJZj1cIm1vZGUgIT09ICdwb2xpY3knIHx8IGJhY2tCdXR0b25cIj5cbiAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cbiAgICBEVUUgREFURSBGUkVRVUVOQ1k6XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNvbXBsZXRpb24taW5uZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNvbXBsZXRpb24tdG9wIHZ4LXAtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJjb3VudE51bVwiIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cIm9uQ29tcGxldGlvbk9mSW5wdXRcIiAoY2hhbmdlKT1cImlucHV0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIiBtaW49XCIwXCIgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPmRheSBhZnRlciBjb21wbGV0aW9uIG9mPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1jb21wbGV0aW9uLWJvdHRvbSB2eC1wLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XG4gICAgICAgIFJFU1BPTlNJQklMSVRZXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFvbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eT8udGl0bGVcIiBbY2xhc3MuZGlzYWJsZWRdPVwicGxhY2Vob2xkZXIgPT09ICdMb2FkaW5nLi4uJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1ib3ggdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTIgdngtcGwtMyB2eC1wci0zIHZ4LW1yLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtdy0xMDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SYWRpb1Jlc3BvbnNpYmlsaXR5KCRldmVudClcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9PT0gXCJMb2FkaW5nLi4uXCJcbiAgICAgICAgICAgID8gXCJMb2FkaW5nLi4uXCJcbiAgICAgICAgICAgIDogXCJTZWxlY3QgYSBSZXNwb25zaWJpbGl0eVwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMFwiPiYjeGU5ZTg7PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eT8udGl0bGUgYXMgcmVzcE5hbWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZnRlci1zZWxlY3QtYm94IHZ4LXAtMSB2eC1tci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXctMTAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWNoaXAgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTEgdngtcGwtMiB2eC1wci0yIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xNCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+JiN4ZTlhZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIFthcHBUb29sdGlwXT1cInJlc3BOYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3tcbiAgICAgICAgICAgICAgICByZXNwTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXQtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBsLTEgdngtcHItMSB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmFkaW9SZXNwb25zaWJpbGl0eSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiIChjbGljayk9XCJvcGVuUmFkaW9SZXNwb25zaWJpbGl0eSgkZXZlbnQpXCI+JiN4ZTkwYzs8L2k+XG4gICAgICAgICAgICAgIEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QgKm5nSWY9XCJvcGVuUmFkaW9cIiBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlsc109XCJzZWxlY3RlZFJlc3BvbnNpYmlsaXR5TGlzdFByZWZpbGxcIlxuICAgICAgICAgICAgKGJhY2tCdXR0b24pPVwib3BlblJhZGlvUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSk9XCJvblJlc3BvbnNpYmlsaXR5U2VsZWN0aW9uKCRldmVudClcIj48L2FwcC1mcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWdyb3VwIHZ4LWQtZmxleFwiICpuZ0lmPVwiIW9wZW5SYWRpb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWZpZWxkXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidGltZVBpY2tlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwib25Db21wbGV0aW9uT2ZUaW1lIHwgdXBwZXJjYXNlXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9jay1pY29uIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0XCI+JiN4ZTk1NTs8L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI3RpbWVQaWNrZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGFwcC10aW1lLXBpY2tlciBbdGltZV09XCJvbkNvbXBsZXRpb25PZlRpbWVcIiAob25UaW1lU2VsZWN0aW9uKT1cIlxuICAgICAgICAgICAgICAgIHRpbWVTZWxlY3Rpb24oJGV2ZW50KTsgdGltZVBpY2tlci5jbG9zZVBvcG92ZXIoJ3RvcCcpXG4gICAgICAgICAgICAgIFwiPjwvYXBwLXRpbWUtcGlja2VyPlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YXBwLWZyZXF1ZW5jeS1kdWUtZGF0ZSBbaWRdPVwiM1wiIFtwYWdlTmFtZV09XCInb25Db21wbGV0aW9uJ1wiIFttb2RlXT1cIm1vZGVcIiBbaXNEZWFjdGl2YXRlZF09XCJmYWxzZVwiXG4gICAgW2NvbXBsZXRlZFZhbHVlXT1cIm9uQ29tcGxldGlvbk9mV2luZG93XCIgW25vdENvbXBsZXRlZFZhbHVlXT1cIm9uQ29tcGxldGlvbk9mRmFpbGVkXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+PC9hcHAtZnJlcXVlbmN5LWR1ZS1kYXRlPlxuPC9kaXY+Il19
|