@cqa-lib/cqa-ui 1.1.472 → 1.1.474
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/esm2020/lib/simulator/simulator.component.mjs +15 -3
- package/esm2020/lib/step-builder/step-builder-group/step-builder-group.component.mjs +39 -2
- package/fesm2015/cqa-lib-cqa-ui.mjs +52 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +52 -3
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/simulator/simulator.component.d.ts +3 -0
- package/lib/step-builder/step-builder-group/step-builder-group.component.d.ts +8 -0
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -34,6 +34,10 @@ export class StepBuilderGroupComponent {
|
|
|
34
34
|
this.searchStepGroups = new EventEmitter();
|
|
35
35
|
this.selectedStepGroup = null;
|
|
36
36
|
this.runtimeVariableValues = {};
|
|
37
|
+
/** Tracks initial state for edit mode to detect changes */
|
|
38
|
+
this.initialStepGroupIdSnapshot = null;
|
|
39
|
+
this.initialRuntimeValuesSnapshot = '{}';
|
|
40
|
+
this.snapshotReady = false;
|
|
37
41
|
this.stepGroupForm = this.fb.group({
|
|
38
42
|
stepGroupId: [null, Validators.required]
|
|
39
43
|
});
|
|
@@ -93,6 +97,10 @@ export class StepBuilderGroupComponent {
|
|
|
93
97
|
if (foundGroup) {
|
|
94
98
|
this.stepGroupForm.patchValue({ stepGroupId: this.initialStepGroupId });
|
|
95
99
|
this.selectedStepGroup = foundGroup;
|
|
100
|
+
// Capture snapshot for change detection (will be recaptured if runtime variables load later)
|
|
101
|
+
if (this.editMode) {
|
|
102
|
+
this.captureInitialSnapshot();
|
|
103
|
+
}
|
|
96
104
|
}
|
|
97
105
|
}
|
|
98
106
|
}
|
|
@@ -144,6 +152,10 @@ export class StepBuilderGroupComponent {
|
|
|
144
152
|
}
|
|
145
153
|
});
|
|
146
154
|
}
|
|
155
|
+
// Capture snapshot after runtime values are initialized (for edit mode change detection)
|
|
156
|
+
if (this.editMode) {
|
|
157
|
+
this.captureInitialSnapshot();
|
|
158
|
+
}
|
|
147
159
|
}
|
|
148
160
|
onRuntimeVariableChange(groupId, paramName, value) {
|
|
149
161
|
if (!this.runtimeVariableValues[groupId]) {
|
|
@@ -172,8 +184,33 @@ export class StepBuilderGroupComponent {
|
|
|
172
184
|
onCancel() {
|
|
173
185
|
this.cancelled.emit();
|
|
174
186
|
}
|
|
187
|
+
/** Returns true if the form has changed from its initial state (edit mode only) */
|
|
188
|
+
hasChanges() {
|
|
189
|
+
if (!this.editMode) {
|
|
190
|
+
return true; // In create mode, always allow submission
|
|
191
|
+
}
|
|
192
|
+
// Until the snapshot is ready, treat as no changes (disable button)
|
|
193
|
+
if (!this.snapshotReady) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
const currentStepGroupId = this.stepGroupForm.value.stepGroupId;
|
|
197
|
+
if (currentStepGroupId !== this.initialStepGroupIdSnapshot) {
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
return JSON.stringify(this.runtimeVariableValues) !== this.initialRuntimeValuesSnapshot;
|
|
201
|
+
}
|
|
202
|
+
/** Captures the current state as the baseline for change detection */
|
|
203
|
+
captureInitialSnapshot() {
|
|
204
|
+
// Only capture when a valid step group is selected
|
|
205
|
+
if (!this.selectedStepGroup) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
this.initialStepGroupIdSnapshot = this.stepGroupForm.value.stepGroupId || null;
|
|
209
|
+
this.initialRuntimeValuesSnapshot = JSON.stringify(this.runtimeVariableValues);
|
|
210
|
+
this.snapshotReady = true;
|
|
211
|
+
}
|
|
175
212
|
isFormValid() {
|
|
176
|
-
return this.stepGroupForm.valid && !!this.selectedStepGroup;
|
|
213
|
+
return this.stepGroupForm.valid && !!this.selectedStepGroup && this.hasChanges();
|
|
177
214
|
}
|
|
178
215
|
}
|
|
179
216
|
StepBuilderGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StepBuilderGroupComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -210,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
210
247
|
}], searchStepGroups: [{
|
|
211
248
|
type: Output
|
|
212
249
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1ncm91cC9zdGVwLWJ1aWxkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWdyb3VwL3N0ZXAtYnVpbGRlci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQXVDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQTJCakYsTUFBTSxPQUFPLHlCQUF5QjtJQWdEcEMsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUEvQ25DLHNDQUFzQztRQUM3QixxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDO1FBRWxELDhEQUE4RDtRQUNyRCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzNCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUs5QywyQkFBMkI7UUFDbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUtuQywwQ0FBMEM7UUFDakMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBS3BELHlHQUF5RztRQUNoRyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6QyxnQ0FBZ0M7UUFDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRTdELGtFQUFrRTtRQUN4RCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXpELDBCQUEwQjtRQUNoQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxtREFBbUQ7UUFDekMsdUJBQWtC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LElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzlELENBQUM7O3NIQTVNVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix5cUJDNUJ0Qyx1MUxBaUhBOzJGRHJGYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usd0JBQXdCLFFBRzVCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FJckIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBHcm91cFZhcmlhYmxlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB2YXJpYWJsZXM/OiBBcnJheTx7IG5hbWU6IHN0cmluZzsgcGFyYW1ldGVyVmFsdWU/OiBzdHJpbmcgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEdyb3VwRm9ybURhdGEge1xuICBzdGVwR3JvdXBJZDogbnVtYmVyO1xuICBzdGVwR3JvdXA/OiBhbnk7IC8vIFRlc3RDYXNlIG9iamVjdFxuICBydW50aW1lVmFyaWFibGVzPzogeyBbZ3JvdXBJZDogc3RyaW5nXTogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9OyAvLyBSdW50aW1lIHZhcmlhYmxlIHZhbHVlc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBHcm91cE9wdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zdGVwLWJ1aWxkZXItZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBCdWlsZGVyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKiBPcHRpb25zIGZvciBzdGVwIGdyb3VwIGRyb3Bkb3duICovXG4gIEBJbnB1dCgpIHN0ZXBHcm91cE9wdGlvbnM6IFN0ZXBHcm91cE9wdGlvbltdID0gW107XG5cbiAgLyoqIEluZGljYXRlcyBpZiBtb3JlIHN0ZXAgZ3JvdXBzIGFyZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcgKi9cbiAgQElucHV0KCkgaGFzTW9yZVN0ZXBHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTG9hZGluZyBzdGF0ZSBmb3Igc3RlcCBncm91cHMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nU3RlcEdyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJbml0aWFsIHN0ZXAgZ3JvdXAgSUQgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsU3RlcEdyb3VwSWQ/OiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgaW4gZWRpdCBtb2RlICovXG4gIEBJbnB1dCgpIGVkaXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFJ1bnRpbWUgdmFyaWFibGVzIGZvciB0aGUgc2VsZWN0ZWQgc3RlcCBncm91cCAqL1xuICBASW5wdXQoKSBydW50aW1lVmFyaWFibGVzPzogU3RlcEdyb3VwVmFyaWFibGVbXTtcblxuICAvKiogTG9hZGluZyBzdGF0ZSBmb3IgcnVudGltZSB2YXJpYWJsZXMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nUnVudGltZVZhcmlhYmxlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFeGlzdGluZyBydW50aW1lIHZhcmlhYmxlIHZhbHVlcyAoZnJvbSB0ZXN0U3RlcC50ZXN0RGF0YUZ1bmN0aW9uQXJncykgKi9cbiAgQElucHV0KCkgZXhpc3RpbmdSdW50aW1lVmFsdWVzPzogeyBbZ3JvdXBJZDogc3RyaW5nXTogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xuXG4gIC8qKiBUcnVlIHdoaWxlIHBhcmVudCBpcyBjcmVhdGluZyB0aGUgc3RlcCAoQVBJIGluIHByb2dyZXNzKTsgc2hvdyBsb2FkZXIgb24gQ3JlYXRlL1VwZGF0ZSBTdGVwIGJ1dHRvbiAqL1xuICBASW5wdXQoKSBpc0NyZWF0aW5nU3RlcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0IHdoZW4gc3RlcCBpcyBjcmVhdGVkICovXG4gIEBPdXRwdXQoKSBjcmVhdGVTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwR3JvdXBGb3JtRGF0YT4oKTtcblxuICAvKiogRW1pdCB3aGVuIHN0ZXAgZ3JvdXAgaXMgc2VsZWN0ZWQgdG8gZmV0Y2ggcnVudGltZSB2YXJpYWJsZXMgKi9cbiAgQE91dHB1dCgpIHN0ZXBHcm91cFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEVtaXQgd2hlbiBjYW5jZWxsZWQgKi9cbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdCB3aGVuIG1vcmUgc3RlcCBncm91cHMgbmVlZCB0byBiZSBsb2FkZWQgKi9cbiAgQE91dHB1dCgpIGxvYWRNb3JlU3RlcEdyb3VwcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gc3RlcCBncm91cCBzZWFyY2ggcXVlcnkgY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgc2VhcmNoU3RlcEdyb3VwcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHN0ZXBHcm91cEZvcm06IEZvcm1Hcm91cDtcbiAgc3RlcEdyb3VwQ29uZmlnOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG4gIHNlbGVjdGVkU3RlcEdyb3VwOiBTdGVwR3JvdXBPcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcnVudGltZVZhcmlhYmxlVmFsdWVzOiB7IFtncm91cElkOiBzdHJpbmddOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuc3RlcEdyb3VwRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc3RlcEdyb3VwSWQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwR3JvdXBDb25maWcgPSB7XG4gICAgICBrZXk6ICdzdGVwR3JvdXBJZCcsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBTdGVwIEdyb3VwJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICBzZXJ2ZXJTZWFyY2g6IHRydWUsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVTdGVwR3JvdXBzLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1N0ZXBHcm91cHMsXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RlcEdyb3VwQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdGVwR3JvdXBzLmVtaXQocXVlcnkpO1xuICAgICAgfSxcbiAgICAgIG9uTG9hZE1vcmU6IChxdWVyeT86IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRNb3JlU3RlcEdyb3Vwcy5lbWl0KHF1ZXJ5IHx8ICcnKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGVwR3JvdXBDb25maWcoKTtcbiAgICBpZiAodGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFN0ZXBHcm91cFZhbHVlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBHcm91cE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQXV0by1zZWxlY3QgZmlyc3Qgb3B0aW9uIGlmIGF2YWlsYWJsZVxuICAgICAgY29uc3QgZmlyc3RPcHRpb24gPSB0aGlzLnN0ZXBHcm91cE9wdGlvbnNbMF07XG4gICAgICB0aGlzLnN0ZXBHcm91cEZvcm0ucGF0Y2hWYWx1ZSh7IHN0ZXBHcm91cElkOiBmaXJzdE9wdGlvbi5pZCB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmaXJzdE9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3N0ZXBHcm91cE9wdGlvbnMnXSB8fCBjaGFuZ2VzWydoYXNNb3JlU3RlcEdyb3VwcyddIHx8IGNoYW5nZXNbJ2lzTG9hZGluZ1N0ZXBHcm91cHMnXSkge1xuICAgICAgdGhpcy51cGRhdGVTdGVwR3JvdXBDb25maWcoKTtcbiAgICAgIC8vIFdoZW4gc3RlcEdyb3VwT3B0aW9ucyBjaGFuZ2UsIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIHZhbHVlXG4gICAgICBpZiAodGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpIHtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsU3RlcEdyb3VwVmFsdWUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxTdGVwR3JvdXBJZCddICYmIHRoaXMuaW5pdGlhbFN0ZXBHcm91cElkKSB7XG4gICAgICB0aGlzLnNldEluaXRpYWxTdGVwR3JvdXBWYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncnVudGltZVZhcmlhYmxlcyddICYmIHRoaXMucnVudGltZVZhcmlhYmxlcykge1xuICAgICAgdGhpcy5pbml0aWFsaXplUnVudGltZVZhcmlhYmxlVmFsdWVzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydleGlzdGluZ1J1bnRpbWVWYWx1ZXMnXSAmJiB0aGlzLmV4aXN0aW5nUnVudGltZVZhbHVlcykge1xuICAgICAgdGhpcy5pbml0aWFsaXplUnVudGltZVZhcmlhYmxlVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsU3RlcEdyb3VwVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFN0ZXBHcm91cElkKSB7XG4gICAgICBjb25zdCBmb3VuZEdyb3VwID0gdGhpcy5zdGVwR3JvdXBPcHRpb25zLmZpbmQob3B0ID0+IG9wdC5pZCA9PT0gdGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpO1xuICAgICAgaWYgKGZvdW5kR3JvdXApIHtcbiAgICAgICAgdGhpcy5zdGVwR3JvdXBGb3JtLnBhdGNoVmFsdWUoeyBzdGVwR3JvdXBJZDogdGhpcy5pbml0aWFsU3RlcEdyb3VwSWQgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmb3VuZEdyb3VwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RlcEdyb3VwQ29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gdGhpcy5zdGVwR3JvdXBPcHRpb25zLm1hcChncm91cCA9PiAoe1xuICAgICAgaWQ6IGdyb3VwLmlkLFxuICAgICAgdmFsdWU6IGdyb3VwLmlkLFxuICAgICAgbmFtZTogZ3JvdXAubmFtZSxcbiAgICAgIGxhYmVsOiBncm91cC5uYW1lXG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGVwR3JvdXBDb25maWcgPSB7XG4gICAgICAuLi50aGlzLnN0ZXBHcm91cENvbmZpZyxcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVTdGVwR3JvdXBzLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1N0ZXBHcm91cHNcbiAgICB9O1xuICB9XG5cbiAgb25TdGVwR3JvdXBDaGFuZ2Uoc3RlcEdyb3VwSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZvdW5kR3JvdXAgPSB0aGlzLnN0ZXBHcm91cE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmlkID09PSBzdGVwR3JvdXBJZCk7XG4gICAgaWYgKGZvdW5kR3JvdXApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmb3VuZEdyb3VwO1xuICAgICAgLy8gQ2xlYXIgcnVudGltZSB2YXJpYWJsZXMgd2hlbiBzdGVwIGdyb3VwIGNoYW5nZXNcbiAgICAgIHRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzID0ge307XG4gICAgICAvLyBFbWl0IGV2ZW50IHRvIGZldGNoIHJ1bnRpbWUgdmFyaWFibGVzIGZvciB0aGUgc2VsZWN0ZWQgc3RlcCBncm91cFxuICAgICAgdGhpcy5zdGVwR3JvdXBTZWxlY3RlZC5lbWl0KHN0ZXBHcm91cElkKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGVwR3JvdXBEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RlcEdyb3VwPy5kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgdGVtcERlc2NFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0ZW1wRGVzY0VsZW0uaW5uZXJIVE1MID0gdGhpcy5zZWxlY3RlZFN0ZXBHcm91cC5kZXNjcmlwdGlvbjtcbiAgICAgIHJldHVybiB0ZW1wRGVzY0VsZW0udGV4dENvbnRlbnQgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlJztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJ1bnRpbWVWYXJpYWJsZVZhbHVlcygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsaXplIHJ1bnRpbWUgdmFyaWFibGUgdmFsdWVzIGZyb20gZXhpc3RpbmcgdmFsdWVzIG9yIGVtcHR5XG4gICAgdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXMgPSB7fTtcbiAgICBcbiAgICBpZiAodGhpcy5ydW50aW1lVmFyaWFibGVzKSB7XG4gICAgICB0aGlzLnJ1bnRpbWVWYXJpYWJsZXMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGlmIChncm91cC52YXJpYWJsZXMgJiYgZ3JvdXAudmFyaWFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBncm91cFZhbHVlczogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgICAgIGdyb3VwLnZhcmlhYmxlcy5mb3JFYWNoKHZhcmlhYmxlID0+IHtcbiAgICAgICAgICAgIC8vIFVzZSBleGlzdGluZyB2YWx1ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgY3VycmVudCBwYXJhbWV0ZXJWYWx1ZSBvciBlbXB0eSBzdHJpbmdcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSB0aGlzLmV4aXN0aW5nUnVudGltZVZhbHVlcz8uW2dyb3VwLmlkXT8uW3ZhcmlhYmxlLm5hbWVdO1xuICAgICAgICAgICAgZ3JvdXBWYWx1ZXNbdmFyaWFibGUubmFtZV0gPSBleGlzdGluZ1ZhbHVlIHx8IHZhcmlhYmxlLnBhcmFtZXRlclZhbHVlIHx8ICcnO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzW2dyb3VwLmlkXSA9IGdyb3VwVmFsdWVzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblJ1bnRpbWVWYXJpYWJsZUNoYW5nZShncm91cElkOiBudW1iZXIsIHBhcmFtTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVWYXJpYWJsZVZhbHVlc1tncm91cElkXSkge1xuICAgICAgdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXNbZ3JvdXBJZF0gPSB7fTtcbiAgICB9XG4gICAgdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXNbZ3JvdXBJZF1bcGFyYW1OYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0UnVudGltZVZhcmlhYmxlVmFsdWUoZ3JvdXBJZDogbnVtYmVyLCBwYXJhbU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzW2dyb3VwSWRdPy5bcGFyYW1OYW1lXSB8fCAnJztcbiAgfVxuXG4gIGhhc1J1bnRpbWVWYXJpYWJsZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5ydW50aW1lVmFyaWFibGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAgdGhpcy5ydW50aW1lVmFyaWFibGVzLnNvbWUoZ3JvdXAgPT4gISFncm91cC52YXJpYWJsZXM/Lmxlbmd0aCk7XG4gIH1cblxuICBvbkNyZWF0ZVN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcEdyb3VwRm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5zdGVwR3JvdXBGb3JtLnZhbHVlO1xuICAgICAgY29uc3Qgc3RlcERhdGE6IFN0ZXBHcm91cEZvcm1EYXRhID0ge1xuICAgICAgICBzdGVwR3JvdXBJZDogZm9ybVZhbHVlLnN0ZXBHcm91cElkLFxuICAgICAgICBzdGVwR3JvdXA6IHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAsXG4gICAgICAgIHJ1bnRpbWVWYXJpYWJsZXM6IHRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVTdGVwLmVtaXQoc3RlcERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgfVxuXG4gIGlzRm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBHcm91cEZvcm0udmFsaWQgJiYgISF0aGlzLnNlbGVjdGVkU3RlcEdyb3VwO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWJnLXdoaXRlIGNxYS1weC00IGNxYS1weS0yIGNxYS1oLWZ1bGxcIj5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxoMiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1ibGFjay0xMDAgY3FhLW1iLTRcIj5cbiAgICB7eyBlZGl0TW9kZSA/ICdFZGl0IFN0ZXAgR3JvdXAgVGVzdCBTdGVwJyA6ICdDcmVhdGUgU3RlcCBHcm91cCBUZXN0IFN0ZXAnIH19XG4gIDwvaDI+XG5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZmxleC0xIGNxYS1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICA8IS0tIFN0ZXAgR3JvdXAgU2VsZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItNlwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLWxlYWRpbmctWzEwMCVdIGNxYS1ibG9jayBjcWEtdGV4dC1bMTRweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMTYxNjE3XSBjcWEtbWItMVwiPlxuICAgICAgICBTZWxlY3QgU3RlcCBHcm91cDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyNFRjQ0NDRdIGNxYS1tbC0wLjVcIj4qPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3RcbiAgICAgICAgW2Zvcm1dPVwic3RlcEdyb3VwRm9ybVwiXG4gICAgICAgIFtjb25maWddPVwic3RlcEdyb3VwQ29uZmlnXCI+XG4gICAgICA8L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBHcm91cCBEZXNjcmlwdGlvbiAtLT5cbiAgICA8IS0tIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLW1iLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItMlwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM0YjU1NjNdXCI+RGVzY3JpcHRpb246PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXAtMyBjcWEtYmctWyNmOWZhZmJdIGNxYS1yb3VuZGVkIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI2U1ZTdlYl1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtdGV4dC1bIzM3NDE1MV1cIiBbaW5uZXJIVE1MXT1cImdldFN0ZXBHcm91cERlc2NyaXB0aW9uKClcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8IS0tIFJ1bnRpbWUgVmFyaWFibGVzIFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtbXQtNiBjcWEtbWItNFwiPlxuICAgICAgPGgzIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTYxNjE3XSBjcWEtbWItM1wiPlxuICAgICAgICBTZXQgUGFyYW1ldGVycyBEZWZhdWx0IFZhbHVlXG4gICAgICA8L2gzPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1ib3JkZXItdCBjcWEtYm9yZGVyLWdyYXktMjAwIGNxYS1wdC00XCI+XG4gICAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1J1bnRpbWVWYXJpYWJsZXNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weS04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtdGV4dC1bIzZiNzI4MF1cIj5Mb2FkaW5nIHJ1bnRpbWUgdmFyaWFibGVzLi4uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gUnVudGltZSBWYXJpYWJsZXMgVGFibGVzIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZ1J1bnRpbWVWYXJpYWJsZXMgJiYgcnVudGltZVZhcmlhYmxlc1wiIGNsYXNzPVwiY3FhLXNwYWNlLXktNlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkR3JvdXAgb2YgcnVudGltZVZhcmlhYmxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY3FhLW1iLTZcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTNcIj5cbiAgICAgICAgICAgICAgKCB7e2kgKyAxfX0gKSB7eyBjaGlsZEdyb3VwLm5hbWUgfX1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRHcm91cC52YXJpYWJsZXMgJiYgY2hpbGRHcm91cC52YXJpYWJsZXMubGVuZ3RoID4gMDsgZWxzZSBub1ZhcmlhYmxlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJvcmRlciBjcWEtYm9yZGVyLWdyYXktMjAwIGNxYS1yb3VuZGVkLWxnIGNxYS1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS10ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImNxYS1iZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjcWEtcHgtNCBjcWEtcHktMiBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxNjE2MTddIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXIgTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB4LTQgY3FhLXB5LTIgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTYxNjE3XSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyIFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdmFyaWFibGUgb2YgY2hpbGRHcm91cC52YXJpYWJsZXM7IGxldCBqID0gaW5kZXhcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0xMDAgbGFzdDpjcWEtYm9yZGVyLWItMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS1weC00IGNxYS1weS0yIGNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzE2MTYxN11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhcmlhYmxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS1weC00IGNxYS1weS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y3FhLWN1c3RvbS1pbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidFbnRlciB2YWx1ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0UnVudGltZVZhcmlhYmxlVmFsdWUoY2hpbGRHcm91cC5pZCwgdmFyaWFibGUubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SdW50aW1lVmFyaWFibGVDaGFuZ2UoY2hpbGRHcm91cC5pZCwgdmFyaWFibGUubmFtZSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVmFyaWFibGVzPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bI0VGNDQ0NF0gY3FhLXB5LTJcIj5SdW50aW1lIHZhcmlhYmxlIG5vdCBhdmFpbGFibGU8L3A+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gTG9hZGluZyBTdGF0ZTogb25seSBzaG93IHdoZW4gaW5pdGlhbGx5IGxvYWRpbmcgKG5vIG9wdGlvbnMgeWV0KS4gTG9hZC1tb3JlIGxvYWRpbmcgaXMgc2hvd24gaW5zaWRlIHRoZSBkcm9wZG93bi4gLS0+XG4gICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1N0ZXBHcm91cHMgJiYgc3RlcEdyb3VwT3B0aW9ucy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weS04XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS10ZXh0LVsjNmI3MjgwXVwiPkxvYWRpbmcgc3RlcCBncm91cHMuLi48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdTdGVwR3JvdXBzICYmIHN0ZXBHcm91cE9wdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJjcWEtdGV4dC1jZW50ZXIgY3FhLXB5LTggY3FhLXRleHQtWyM5Y2EzYWZdIGNxYS10ZXh0LVsxNHB4XVwiPlxuICAgICAgTm8gc3RlcCBncm91cHMgYXZhaWxhYmxlXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtdy1mdWxsIGNxYS1nYXAtMiBjcWEtbXQtYXV0byBjcWEtcHQtNCBjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxjcWEtYnV0dG9uIGNsYXNzPVwiY3FhLXctMS8yIGNxYS1yb3VuZGVkLVsxMHB4XVwiIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIHRleHQ9XCJDYW5jZWxcIiBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS1mbGV4LTEgY3FhLXctZnVsbCdcIlxuICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8Y3FhLWJ1dHRvbiAqbmdJZj1cIiFpc0NyZWF0aW5nU3RlcFwiIGNsYXNzPVwiY3FhLWJvcmRlci1zb2xpZCBjcWEtcm91bmRlZC1bOXB4XSBjcWEtdy0xLzIgY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjM0Y0M0VFXVwiIHZhcmlhbnQ9XCJmaWxsZWRcIiBbdGV4dF09XCJlZGl0TW9kZSA/ICdVcGRhdGUgU3RlcCcgOiAnSW5zZXJ0IFN0ZXAgR3JvdXAnXCIgW2N1c3RvbUNsYXNzXT1cIidjcWEtZmxleC0xIGNxYS13LWZ1bGwnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNGb3JtVmFsaWQoKVwiXG4gICAgICAoY2xpY2tlZCk9XCJvbkNyZWF0ZVN0ZXAoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDcmVhdGluZ1N0ZXBcIiBjbGFzcz1cImNxYS13LTEvMiBjcWEtZmxleC0xIGNxYS1taW4taC1bMzhweF0gY3FhLXJvdW5kZWQtWzhweF1cIj5cbiAgICAgIDxjcWEtYmFkZ2UgbGFiZWw9XCJDcmVhdGluZ+KAplwiIGljb249XCJhdXRvcmVuZXdcIiBbaXNMb2FkaW5nXT1cInRydWVcIiBbZnVsbFdpZHRoXT1cInRydWVcIiBbY2VudGVyQ29udGVudF09XCJ0cnVlXCJcbiAgICAgICAgW2lubGluZVN0eWxlc109XCInbWluLWhlaWdodDogMzhweDsgaGVpZ2h0OiAzOHB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnXCJcbiAgICAgICAgdmFyaWFudD1cImluZm9cIiBzaXplPVwibWVkaXVtXCI+PC9jcWEtYmFkZ2U+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1ncm91cC9zdGVwLWJ1aWxkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWdyb3VwL3N0ZXAtYnVpbGRlci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQXVDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQTJCakYsTUFBTSxPQUFPLHlCQUF5QjtJQXFEcEMsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFwRG5DLHNDQUFzQztRQUM3QixxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDO1FBRWxELDhEQUE4RDtRQUNyRCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzNCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUs5QywyQkFBMkI7UUFDbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUtuQywwQ0FBMEM7UUFDakMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBS3BELHlHQUF5RztRQUNoRyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6QyxnQ0FBZ0M7UUFDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRTdELGtFQUFrRTtRQUN4RCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXpELDBCQUEwQjtRQUNoQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxtREFBbUQ7UUFDekMsdUJBQWtC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QUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25GLENBQUM7O3NIQXJQVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix5cUJDNUJ0Qyx1MUxBaUhBOzJGRHJGYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usd0JBQXdCLFFBRzVCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FJckIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBHcm91cFZhcmlhYmxlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB2YXJpYWJsZXM/OiBBcnJheTx7IG5hbWU6IHN0cmluZzsgcGFyYW1ldGVyVmFsdWU/OiBzdHJpbmcgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEdyb3VwRm9ybURhdGEge1xuICBzdGVwR3JvdXBJZDogbnVtYmVyO1xuICBzdGVwR3JvdXA/OiBhbnk7IC8vIFRlc3RDYXNlIG9iamVjdFxuICBydW50aW1lVmFyaWFibGVzPzogeyBbZ3JvdXBJZDogc3RyaW5nXTogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9OyAvLyBSdW50aW1lIHZhcmlhYmxlIHZhbHVlc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBHcm91cE9wdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zdGVwLWJ1aWxkZXItZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBCdWlsZGVyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKiBPcHRpb25zIGZvciBzdGVwIGdyb3VwIGRyb3Bkb3duICovXG4gIEBJbnB1dCgpIHN0ZXBHcm91cE9wdGlvbnM6IFN0ZXBHcm91cE9wdGlvbltdID0gW107XG5cbiAgLyoqIEluZGljYXRlcyBpZiBtb3JlIHN0ZXAgZ3JvdXBzIGFyZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcgKi9cbiAgQElucHV0KCkgaGFzTW9yZVN0ZXBHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTG9hZGluZyBzdGF0ZSBmb3Igc3RlcCBncm91cHMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nU3RlcEdyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJbml0aWFsIHN0ZXAgZ3JvdXAgSUQgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsU3RlcEdyb3VwSWQ/OiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgaW4gZWRpdCBtb2RlICovXG4gIEBJbnB1dCgpIGVkaXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFJ1bnRpbWUgdmFyaWFibGVzIGZvciB0aGUgc2VsZWN0ZWQgc3RlcCBncm91cCAqL1xuICBASW5wdXQoKSBydW50aW1lVmFyaWFibGVzPzogU3RlcEdyb3VwVmFyaWFibGVbXTtcblxuICAvKiogTG9hZGluZyBzdGF0ZSBmb3IgcnVudGltZSB2YXJpYWJsZXMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nUnVudGltZVZhcmlhYmxlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFeGlzdGluZyBydW50aW1lIHZhcmlhYmxlIHZhbHVlcyAoZnJvbSB0ZXN0U3RlcC50ZXN0RGF0YUZ1bmN0aW9uQXJncykgKi9cbiAgQElucHV0KCkgZXhpc3RpbmdSdW50aW1lVmFsdWVzPzogeyBbZ3JvdXBJZDogc3RyaW5nXTogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xuXG4gIC8qKiBUcnVlIHdoaWxlIHBhcmVudCBpcyBjcmVhdGluZyB0aGUgc3RlcCAoQVBJIGluIHByb2dyZXNzKTsgc2hvdyBsb2FkZXIgb24gQ3JlYXRlL1VwZGF0ZSBTdGVwIGJ1dHRvbiAqL1xuICBASW5wdXQoKSBpc0NyZWF0aW5nU3RlcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0IHdoZW4gc3RlcCBpcyBjcmVhdGVkICovXG4gIEBPdXRwdXQoKSBjcmVhdGVTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwR3JvdXBGb3JtRGF0YT4oKTtcblxuICAvKiogRW1pdCB3aGVuIHN0ZXAgZ3JvdXAgaXMgc2VsZWN0ZWQgdG8gZmV0Y2ggcnVudGltZSB2YXJpYWJsZXMgKi9cbiAgQE91dHB1dCgpIHN0ZXBHcm91cFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEVtaXQgd2hlbiBjYW5jZWxsZWQgKi9cbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdCB3aGVuIG1vcmUgc3RlcCBncm91cHMgbmVlZCB0byBiZSBsb2FkZWQgKi9cbiAgQE91dHB1dCgpIGxvYWRNb3JlU3RlcEdyb3VwcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gc3RlcCBncm91cCBzZWFyY2ggcXVlcnkgY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgc2VhcmNoU3RlcEdyb3VwcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHN0ZXBHcm91cEZvcm06IEZvcm1Hcm91cDtcbiAgc3RlcEdyb3VwQ29uZmlnOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG4gIHNlbGVjdGVkU3RlcEdyb3VwOiBTdGVwR3JvdXBPcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcnVudGltZVZhcmlhYmxlVmFsdWVzOiB7IFtncm91cElkOiBzdHJpbmddOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7fTtcblxuICAvKiogVHJhY2tzIGluaXRpYWwgc3RhdGUgZm9yIGVkaXQgbW9kZSB0byBkZXRlY3QgY2hhbmdlcyAqL1xuICBwcml2YXRlIGluaXRpYWxTdGVwR3JvdXBJZFNuYXBzaG90OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0aWFsUnVudGltZVZhbHVlc1NuYXBzaG90OiBzdHJpbmcgPSAne30nO1xuICBwcml2YXRlIHNuYXBzaG90UmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuc3RlcEdyb3VwRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc3RlcEdyb3VwSWQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwR3JvdXBDb25maWcgPSB7XG4gICAgICBrZXk6ICdzdGVwR3JvdXBJZCcsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBTdGVwIEdyb3VwJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICBzZXJ2ZXJTZWFyY2g6IHRydWUsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVTdGVwR3JvdXBzLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1N0ZXBHcm91cHMsXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RlcEdyb3VwQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdGVwR3JvdXBzLmVtaXQocXVlcnkpO1xuICAgICAgfSxcbiAgICAgIG9uTG9hZE1vcmU6IChxdWVyeT86IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRNb3JlU3RlcEdyb3Vwcy5lbWl0KHF1ZXJ5IHx8ICcnKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGVwR3JvdXBDb25maWcoKTtcbiAgICBpZiAodGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFN0ZXBHcm91cFZhbHVlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBHcm91cE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQXV0by1zZWxlY3QgZmlyc3Qgb3B0aW9uIGlmIGF2YWlsYWJsZVxuICAgICAgY29uc3QgZmlyc3RPcHRpb24gPSB0aGlzLnN0ZXBHcm91cE9wdGlvbnNbMF07XG4gICAgICB0aGlzLnN0ZXBHcm91cEZvcm0ucGF0Y2hWYWx1ZSh7IHN0ZXBHcm91cElkOiBmaXJzdE9wdGlvbi5pZCB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmaXJzdE9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3N0ZXBHcm91cE9wdGlvbnMnXSB8fCBjaGFuZ2VzWydoYXNNb3JlU3RlcEdyb3VwcyddIHx8IGNoYW5nZXNbJ2lzTG9hZGluZ1N0ZXBHcm91cHMnXSkge1xuICAgICAgdGhpcy51cGRhdGVTdGVwR3JvdXBDb25maWcoKTtcbiAgICAgIC8vIFdoZW4gc3RlcEdyb3VwT3B0aW9ucyBjaGFuZ2UsIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIHZhbHVlXG4gICAgICBpZiAodGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpIHtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsU3RlcEdyb3VwVmFsdWUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxTdGVwR3JvdXBJZCddICYmIHRoaXMuaW5pdGlhbFN0ZXBHcm91cElkKSB7XG4gICAgICB0aGlzLnNldEluaXRpYWxTdGVwR3JvdXBWYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncnVudGltZVZhcmlhYmxlcyddICYmIHRoaXMucnVudGltZVZhcmlhYmxlcykge1xuICAgICAgdGhpcy5pbml0aWFsaXplUnVudGltZVZhcmlhYmxlVmFsdWVzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydleGlzdGluZ1J1bnRpbWVWYWx1ZXMnXSAmJiB0aGlzLmV4aXN0aW5nUnVudGltZVZhbHVlcykge1xuICAgICAgdGhpcy5pbml0aWFsaXplUnVudGltZVZhcmlhYmxlVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsU3RlcEdyb3VwVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFN0ZXBHcm91cElkKSB7XG4gICAgICBjb25zdCBmb3VuZEdyb3VwID0gdGhpcy5zdGVwR3JvdXBPcHRpb25zLmZpbmQob3B0ID0+IG9wdC5pZCA9PT0gdGhpcy5pbml0aWFsU3RlcEdyb3VwSWQpO1xuICAgICAgaWYgKGZvdW5kR3JvdXApIHtcbiAgICAgICAgdGhpcy5zdGVwR3JvdXBGb3JtLnBhdGNoVmFsdWUoeyBzdGVwR3JvdXBJZDogdGhpcy5pbml0aWFsU3RlcEdyb3VwSWQgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmb3VuZEdyb3VwO1xuICAgICAgICAvLyBDYXB0dXJlIHNuYXBzaG90IGZvciBjaGFuZ2UgZGV0ZWN0aW9uICh3aWxsIGJlIHJlY2FwdHVyZWQgaWYgcnVudGltZSB2YXJpYWJsZXMgbG9hZCBsYXRlcilcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGUpIHtcbiAgICAgICAgICB0aGlzLmNhcHR1cmVJbml0aWFsU25hcHNob3QoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RlcEdyb3VwQ29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gdGhpcy5zdGVwR3JvdXBPcHRpb25zLm1hcChncm91cCA9PiAoe1xuICAgICAgaWQ6IGdyb3VwLmlkLFxuICAgICAgdmFsdWU6IGdyb3VwLmlkLFxuICAgICAgbmFtZTogZ3JvdXAubmFtZSxcbiAgICAgIGxhYmVsOiBncm91cC5uYW1lXG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGVwR3JvdXBDb25maWcgPSB7XG4gICAgICAuLi50aGlzLnN0ZXBHcm91cENvbmZpZyxcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVTdGVwR3JvdXBzLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1N0ZXBHcm91cHNcbiAgICB9O1xuICB9XG5cbiAgb25TdGVwR3JvdXBDaGFuZ2Uoc3RlcEdyb3VwSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZvdW5kR3JvdXAgPSB0aGlzLnN0ZXBHcm91cE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmlkID09PSBzdGVwR3JvdXBJZCk7XG4gICAgaWYgKGZvdW5kR3JvdXApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwR3JvdXAgPSBmb3VuZEdyb3VwO1xuICAgICAgLy8gQ2xlYXIgcnVudGltZSB2YXJpYWJsZXMgd2hlbiBzdGVwIGdyb3VwIGNoYW5nZXNcbiAgICAgIHRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzID0ge307XG4gICAgICAvLyBFbWl0IGV2ZW50IHRvIGZldGNoIHJ1bnRpbWUgdmFyaWFibGVzIGZvciB0aGUgc2VsZWN0ZWQgc3RlcCBncm91cFxuICAgICAgdGhpcy5zdGVwR3JvdXBTZWxlY3RlZC5lbWl0KHN0ZXBHcm91cElkKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGVwR3JvdXBEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RlcEdyb3VwPy5kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgdGVtcERlc2NFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0ZW1wRGVzY0VsZW0uaW5uZXJIVE1MID0gdGhpcy5zZWxlY3RlZFN0ZXBHcm91cC5kZXNjcmlwdGlvbjtcbiAgICAgIHJldHVybiB0ZW1wRGVzY0VsZW0udGV4dENvbnRlbnQgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlJztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJ1bnRpbWVWYXJpYWJsZVZhbHVlcygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsaXplIHJ1bnRpbWUgdmFyaWFibGUgdmFsdWVzIGZyb20gZXhpc3RpbmcgdmFsdWVzIG9yIGVtcHR5XG4gICAgdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXMgPSB7fTtcblxuICAgIGlmICh0aGlzLnJ1bnRpbWVWYXJpYWJsZXMpIHtcbiAgICAgIHRoaXMucnVudGltZVZhcmlhYmxlcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgaWYgKGdyb3VwLnZhcmlhYmxlcyAmJiBncm91cC52YXJpYWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGdyb3VwVmFsdWVzOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICAgICAgZ3JvdXAudmFyaWFibGVzLmZvckVhY2godmFyaWFibGUgPT4ge1xuICAgICAgICAgICAgLy8gVXNlIGV4aXN0aW5nIHZhbHVlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHVzZSBjdXJyZW50IHBhcmFtZXRlclZhbHVlIG9yIGVtcHR5IHN0cmluZ1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdWYWx1ZSA9IHRoaXMuZXhpc3RpbmdSdW50aW1lVmFsdWVzPy5bZ3JvdXAuaWRdPy5bdmFyaWFibGUubmFtZV07XG4gICAgICAgICAgICBncm91cFZhbHVlc1t2YXJpYWJsZS5uYW1lXSA9IGV4aXN0aW5nVmFsdWUgfHwgdmFyaWFibGUucGFyYW1ldGVyVmFsdWUgfHwgJyc7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXNbZ3JvdXAuaWRdID0gZ3JvdXBWYWx1ZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENhcHR1cmUgc25hcHNob3QgYWZ0ZXIgcnVudGltZSB2YWx1ZXMgYXJlIGluaXRpYWxpemVkIChmb3IgZWRpdCBtb2RlIGNoYW5nZSBkZXRlY3Rpb24pXG4gICAgaWYgKHRoaXMuZWRpdE1vZGUpIHtcbiAgICAgIHRoaXMuY2FwdHVyZUluaXRpYWxTbmFwc2hvdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUnVudGltZVZhcmlhYmxlQ2hhbmdlKGdyb3VwSWQ6IG51bWJlciwgcGFyYW1OYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucnVudGltZVZhcmlhYmxlVmFsdWVzW2dyb3VwSWRdKSB7XG4gICAgICB0aGlzLnJ1bnRpbWVWYXJpYWJsZVZhbHVlc1tncm91cElkXSA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnJ1bnRpbWVWYXJpYWJsZVZhbHVlc1tncm91cElkXVtwYXJhbU5hbWVdID0gdmFsdWU7XG4gIH1cblxuICBnZXRSdW50aW1lVmFyaWFibGVWYWx1ZShncm91cElkOiBudW1iZXIsIHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXNbZ3JvdXBJZF0/LltwYXJhbU5hbWVdIHx8ICcnO1xuICB9XG5cbiAgaGFzUnVudGltZVZhcmlhYmxlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJ1bnRpbWVWYXJpYWJsZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICB0aGlzLnJ1bnRpbWVWYXJpYWJsZXMuc29tZShncm91cCA9PiAhIWdyb3VwLnZhcmlhYmxlcz8ubGVuZ3RoKTtcbiAgfVxuXG4gIG9uQ3JlYXRlU3RlcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGVwR3JvdXBGb3JtLnZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnN0ZXBHcm91cEZvcm0udmFsdWU7XG4gICAgICBjb25zdCBzdGVwRGF0YTogU3RlcEdyb3VwRm9ybURhdGEgPSB7XG4gICAgICAgIHN0ZXBHcm91cElkOiBmb3JtVmFsdWUuc3RlcEdyb3VwSWQsXG4gICAgICAgIHN0ZXBHcm91cDogdGhpcy5zZWxlY3RlZFN0ZXBHcm91cCxcbiAgICAgICAgcnVudGltZVZhcmlhYmxlczogdGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXNcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZVN0ZXAuZW1pdChzdGVwRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZm9ybSBoYXMgY2hhbmdlZCBmcm9tIGl0cyBpbml0aWFsIHN0YXRlIChlZGl0IG1vZGUgb25seSkgKi9cbiAgaGFzQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZWRpdE1vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBJbiBjcmVhdGUgbW9kZSwgYWx3YXlzIGFsbG93IHN1Ym1pc3Npb25cbiAgICB9XG4gICAgLy8gVW50aWwgdGhlIHNuYXBzaG90IGlzIHJlYWR5LCB0cmVhdCBhcyBubyBjaGFuZ2VzIChkaXNhYmxlIGJ1dHRvbilcbiAgICBpZiAoIXRoaXMuc25hcHNob3RSZWFkeSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50U3RlcEdyb3VwSWQgPSB0aGlzLnN0ZXBHcm91cEZvcm0udmFsdWUuc3RlcEdyb3VwSWQ7XG4gICAgaWYgKGN1cnJlbnRTdGVwR3JvdXBJZCAhPT0gdGhpcy5pbml0aWFsU3RlcEdyb3VwSWRTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnJ1bnRpbWVWYXJpYWJsZVZhbHVlcykgIT09IHRoaXMuaW5pdGlhbFJ1bnRpbWVWYWx1ZXNTbmFwc2hvdDtcbiAgfVxuXG4gIC8qKiBDYXB0dXJlcyB0aGUgY3VycmVudCBzdGF0ZSBhcyB0aGUgYmFzZWxpbmUgZm9yIGNoYW5nZSBkZXRlY3Rpb24gKi9cbiAgcHJpdmF0ZSBjYXB0dXJlSW5pdGlhbFNuYXBzaG90KCk6IHZvaWQge1xuICAgIC8vIE9ubHkgY2FwdHVyZSB3aGVuIGEgdmFsaWQgc3RlcCBncm91cCBpcyBzZWxlY3RlZFxuICAgIGlmICghdGhpcy5zZWxlY3RlZFN0ZXBHcm91cCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxTdGVwR3JvdXBJZFNuYXBzaG90ID0gdGhpcy5zdGVwR3JvdXBGb3JtLnZhbHVlLnN0ZXBHcm91cElkIHx8IG51bGw7XG4gICAgdGhpcy5pbml0aWFsUnVudGltZVZhbHVlc1NuYXBzaG90ID0gSlNPTi5zdHJpbmdpZnkodGhpcy5ydW50aW1lVmFyaWFibGVWYWx1ZXMpO1xuICAgIHRoaXMuc25hcHNob3RSZWFkeSA9IHRydWU7XG4gIH1cblxuICBpc0Zvcm1WYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwR3JvdXBGb3JtLnZhbGlkICYmICEhdGhpcy5zZWxlY3RlZFN0ZXBHcm91cCAmJiB0aGlzLmhhc0NoYW5nZXMoKTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1iZy13aGl0ZSBjcWEtcHgtNCBjcWEtcHktMiBjcWEtaC1mdWxsXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtYmxhY2stMTAwIGNxYS1tYi00XCI+XG4gICAge3sgZWRpdE1vZGUgPyAnRWRpdCBTdGVwIEdyb3VwIFRlc3QgU3RlcCcgOiAnQ3JlYXRlIFN0ZXAgR3JvdXAgVGVzdCBTdGVwJyB9fVxuICA8L2gyPlxuXG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgPCEtLSBTdGVwIEdyb3VwIFNlbGVjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTZcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtYmxvY2sgY3FhLXRleHQtWzE0cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTFcIj5cbiAgICAgICAgU2VsZWN0IFN0ZXAgR3JvdXA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjRUY0NDQ0XSBjcWEtbWwtMC41XCI+Kjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICAgIFtmb3JtXT1cInN0ZXBHcm91cEZvcm1cIlxuICAgICAgICBbY29uZmlnXT1cInN0ZXBHcm91cENvbmZpZ1wiPlxuICAgICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFN0ZXAgR3JvdXAgRGVzY3JpcHRpb24gLS0+XG4gICAgPCEtLSA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTdGVwR3JvdXBcIiBjbGFzcz1cImNxYS1tYi02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNGI1NTYzXVwiPkRlc2NyaXB0aW9uOjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLTMgY3FhLWJnLVsjZjlmYWZiXSBjcWEtcm91bmRlZCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNlNWU3ZWJdXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLXRleHQtWyMzNzQxNTFdXCIgW2lubmVySFRNTF09XCJnZXRTdGVwR3JvdXBEZXNjcmlwdGlvbigpXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgPCEtLSBSdW50aW1lIFZhcmlhYmxlcyBTZWN0aW9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLW10LTYgY3FhLW1iLTRcIj5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTNcIj5cbiAgICAgICAgU2V0IFBhcmFtZXRlcnMgRGVmYXVsdCBWYWx1ZVxuICAgICAgPC9oMz5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1ncmF5LTIwMCBjcWEtcHQtNFwiPlxuICAgICAgICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdSdW50aW1lVmFyaWFibGVzXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLXRleHQtWyM2YjcyODBdXCI+TG9hZGluZyBydW50aW1lIHZhcmlhYmxlcy4uLjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFJ1bnRpbWUgVmFyaWFibGVzIFRhYmxlcyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdSdW50aW1lVmFyaWFibGVzICYmIHJ1bnRpbWVWYXJpYWJsZXNcIiBjbGFzcz1cImNxYS1zcGFjZS15LTZcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZEdyb3VwIG9mIHJ1bnRpbWVWYXJpYWJsZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImNxYS1tYi02XCI+XG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxNjE2MTddIGNxYS1tYi0zXCI+XG4gICAgICAgICAgICAgICgge3tpICsgMX19ICkge3sgY2hpbGRHcm91cC5uYW1lIH19XG4gICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkR3JvdXAudmFyaWFibGVzICYmIGNoaWxkR3JvdXAudmFyaWFibGVzLmxlbmd0aCA+IDA7IGVsc2Ugbm9WYXJpYWJsZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ib3JkZXIgY3FhLWJvcmRlci1ncmF5LTIwMCBjcWEtcm91bmRlZC1sZyBjcWEtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJjcWEtYmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB4LTQgY3FhLXB5LTIgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTYxNjE3XSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyIE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS1weC00IGNxYS1weS0yIGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlciBWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHZhcmlhYmxlIG9mIGNoaWxkR3JvdXAudmFyaWFibGVzOyBsZXQgaiA9IGluZGV4XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMTAwIGxhc3Q6Y3FhLWJvcmRlci1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtNCBjcWEtcHktMiBjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyMxNjE2MTddXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB2YXJpYWJsZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtNCBjcWEtcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgdmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldFJ1bnRpbWVWYXJpYWJsZVZhbHVlKGNoaWxkR3JvdXAuaWQsIHZhcmlhYmxlLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUnVudGltZVZhcmlhYmxlQ2hhbmdlKGNoaWxkR3JvdXAuaWQsIHZhcmlhYmxlLm5hbWUsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZhcmlhYmxlcz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyNFRjQ0NDRdIGNxYS1weS0yXCI+UnVudGltZSB2YXJpYWJsZSBub3QgYXZhaWxhYmxlPC9wPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIExvYWRpbmcgU3RhdGU6IG9ubHkgc2hvdyB3aGVuIGluaXRpYWxseSBsb2FkaW5nIChubyBvcHRpb25zIHlldCkuIExvYWQtbW9yZSBsb2FkaW5nIGlzIHNob3duIGluc2lkZSB0aGUgZHJvcGRvd24uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdTdGVwR3JvdXBzICYmIHN0ZXBHcm91cE9wdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktOFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtdGV4dC1bIzZiNzI4MF1cIj5Mb2FkaW5nIHN0ZXAgZ3JvdXBzLi4uPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nU3RlcEdyb3VwcyAmJiBzdGVwR3JvdXBPcHRpb25zLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiY3FhLXRleHQtY2VudGVyIGNxYS1weS04IGNxYS10ZXh0LVsjOWNhM2FmXSBjcWEtdGV4dC1bMTRweF1cIj5cbiAgICAgIE5vIHN0ZXAgZ3JvdXBzIGF2YWlsYWJsZVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLXctZnVsbCBjcWEtZ2FwLTIgY3FhLW10LWF1dG8gY3FhLXB0LTQgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICA8Y3FhLWJ1dHRvbiBjbGFzcz1cImNxYS13LTEvMiBjcWEtcm91bmRlZC1bMTBweF1cIiB2YXJpYW50PVwib3V0bGluZWRcIiB0ZXh0PVwiQ2FuY2VsXCIgW2N1c3RvbUNsYXNzXT1cIidjcWEtZmxleC0xIGNxYS13LWZ1bGwnXCJcbiAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICA8L2NxYS1idXR0b24+XG4gICAgPGNxYS1idXR0b24gKm5nSWY9XCIhaXNDcmVhdGluZ1N0ZXBcIiBjbGFzcz1cImNxYS1ib3JkZXItc29saWQgY3FhLXJvdW5kZWQtWzlweF0gY3FhLXctMS8yIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bIzNGNDNFRV1cIiB2YXJpYW50PVwiZmlsbGVkXCIgW3RleHRdPVwiZWRpdE1vZGUgPyAnVXBkYXRlIFN0ZXAnIDogJ0luc2VydCBTdGVwIEdyb3VwJ1wiIFtjdXN0b21DbGFzc109XCInY3FhLWZsZXgtMSBjcWEtdy1mdWxsJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkKClcIlxuICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVTdGVwKClcIj5cbiAgICA8L2NxYS1idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cImlzQ3JlYXRpbmdTdGVwXCIgY2xhc3M9XCJjcWEtdy0xLzIgY3FhLWZsZXgtMSBjcWEtbWluLWgtWzM4cHhdIGNxYS1yb3VuZGVkLVs4cHhdXCI+XG4gICAgICA8Y3FhLWJhZGdlIGxhYmVsPVwiQ3JlYXRpbmfigKZcIiBpY29uPVwiYXV0b3JlbmV3XCIgW2lzTG9hZGluZ109XCJ0cnVlXCIgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgW2NlbnRlckNvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtpbmxpbmVTdHlsZXNdPVwiJ21pbi1oZWlnaHQ6IDM4cHg7IGhlaWdodDogMzhweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7J1wiXG4gICAgICAgIHZhcmlhbnQ9XCJpbmZvXCIgc2l6ZT1cIm1lZGl1bVwiPjwvY3FhLWJhZGdlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|