@energycap/components 0.39.21-ECAP-25650-file-upload-validation-support.20240805-1706 → 0.39.21-ECAP-25650-file-upload-validation-support.20240806-1029
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/controls/file-upload/file-upload.component.mjs +12 -7
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +5 -1
- package/fesm2015/energycap-components.mjs +18 -8
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +15 -6
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/package.json +1 -1
@@ -19,8 +19,8 @@ export class FileUploadComponent extends FormControlBase {
|
|
19
19
|
// static class to create the form group from a parent component
|
20
20
|
static getFormModel(validators, disabled = false, fileValidators) {
|
21
21
|
let formGroup = new FormGroup({
|
22
|
-
file: new FormControl({ value: null, disabled: disabled }, validators),
|
23
|
-
name: new FormControl({ value: null, disabled: disabled },
|
22
|
+
file: new FormControl({ value: null, disabled: disabled }, { validators: validators, asyncValidators: fileValidators }),
|
23
|
+
name: new FormControl({ value: null, disabled: disabled }, validators),
|
24
24
|
base64FileString: new FormControl(null),
|
25
25
|
uploadResult: new FormControl(null),
|
26
26
|
});
|
@@ -30,10 +30,10 @@ export class FileUploadComponent extends FormControlBase {
|
|
30
30
|
return formGroup;
|
31
31
|
}
|
32
32
|
static getFileValidator(callback) {
|
33
|
-
return async (
|
34
|
-
if (
|
35
|
-
let file =
|
36
|
-
let base64 =
|
33
|
+
return async (control) => {
|
34
|
+
if (control.value && control.parent) {
|
35
|
+
let file = control.value;
|
36
|
+
let base64 = control.parent.get('base64FileString')?.value;
|
37
37
|
return await callback(file, base64);
|
38
38
|
}
|
39
39
|
return null;
|
@@ -84,6 +84,11 @@ export class FileUploadComponent extends FormControlBase {
|
|
84
84
|
});
|
85
85
|
}
|
86
86
|
});
|
87
|
+
// Sync errors from the file control to the name control whenever the file control status changes
|
88
|
+
this.formModel.get('file')?.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(() => {
|
89
|
+
const errors = this.formModel.get('file')?.errors ?? null;
|
90
|
+
this.formModel.get('name')?.setErrors(errors);
|
91
|
+
});
|
87
92
|
}
|
88
93
|
async fileChange(files) {
|
89
94
|
if (this.multiSelect) {
|
@@ -227,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
227
232
|
type: ViewChild,
|
228
233
|
args: ["fileInput", { read: ElementRef, static: true }]
|
229
234
|
}] } });
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQXFDLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFLdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUN6QixDQUFDO0FBb0JGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBRXRELGdFQUFnRTtJQUN6RCxNQUFNLENBQUMsWUFBWSxDQUN4QixVQUF5QixFQUN6QixXQUFvQixLQUFLLEVBQ3pCLGNBQXNEO1FBRXRELElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFzQjtZQUNqRCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUM7WUFDdEUsSUFBSSxFQUFFLElBQUks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QUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBIZWxwZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybS1ncm91cC5oZWxwZXInO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbEJhc2UgfSBmcm9tICcuLi9mb3JtLWNvbnRyb2wtYmFzZSc7XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9ICd6aXAnIHwgJ2V4Y2VsJyB8ICdjdXN0b20nO1xyXG5leHBvcnQgdHlwZSBGaWxlT3V0cHV0ID0gJ3JhdycgfCAnYmFzZTY0JztcclxuXHJcbmV4cG9ydCBjb25zdCBGaWxlVHlwZUV4dGVuc2lvbnMgPSB7XHJcbiAgemlwOiBbJy56aXAnXSxcclxuICBleGNlbDogWycueGxzJywgJy54bHN4J11cclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVVcGxvYWRGb3JtR3JvdXAgPSB7XHJcbiAgZmlsZTogRm9ybUNvbnRyb2w8RmlsZSB8IG51bGw+O1xyXG4gIG5hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIGJhc2U2NEZpbGVTdHJpbmc6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHVwbG9hZFJlc3VsdDogRm9ybUNvbnRyb2w8YW55PjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEludmFsaWRGaWxlRXJyb3IgPSB7XHJcbiAgaW52YWxpZEZpbGU6IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlVmFsaWRhdG9yQ2FsbGJhY2sgPSAoZmlsZTogRmlsZSB8IG51bGwgfCB1bmRlZmluZWQsIGJhc2U2NDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTxJbnZhbGlkRmlsZUVycm9yIHwgbnVsbD47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlYy1maWxlLXVwbG9hZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8vIHN0YXRpYyBjbGFzcyB0byBjcmVhdGUgdGhlIGZvcm0gZ3JvdXAgZnJvbSBhIHBhcmVudCBjb21wb25lbnRcclxuICBwdWJsaWMgc3RhdGljIGdldEZvcm1Nb2RlbChcclxuICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgZmlsZVZhbGlkYXRvcnM/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdXHJcbiAgKTogRm9ybUdyb3VwPEZpbGVVcGxvYWRGb3JtR3JvdXA+IHtcclxuICAgIGxldCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwPEZpbGVVcGxvYWRGb3JtR3JvdXA+KHtcclxuICAgICAgZmlsZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCB2YWxpZGF0b3JzKSxcclxuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCB7dmFsaWRhdG9yczogdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzOiBmaWxlVmFsaWRhdG9yc30pLFxyXG4gICAgICBiYXNlNjRGaWxlU3RyaW5nOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIHVwbG9hZFJlc3VsdDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgZm9ybUdyb3VwLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEZpbGVWYWxpZGF0b3IoY2FsbGJhY2s6IEZpbGVWYWxpZGF0b3JDYWxsYmFjayk6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIGFzeW5jIChuYW1lQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGlmIChuYW1lQ29udHJvbC52YWx1ZSAmJiBuYW1lQ29udHJvbC5wYXJlbnQgJiYgbmFtZUNvbnRyb2wucGFyZW50LmdldCgnZmlsZScpPy52YWx1ZSkge1xyXG4gICAgICAgIGxldCBmaWxlID0gbmFtZUNvbnRyb2wucGFyZW50LmdldCgnZmlsZScpPy52YWx1ZSBhcyBGaWxlO1xyXG4gICAgICAgIGxldCBiYXNlNjQgPSBuYW1lQ29udHJvbC5wYXJlbnQuZ2V0KCdiYXNlNjRGaWxlU3RyaW5nJyk/LnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2soZmlsZSwgYmFzZTY0KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWwhOiBGb3JtR3JvdXA8RmlsZVVwbG9hZEZvcm1Hcm91cD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dGJveCBpbnB1dCdzIHBsYWNlaG9sZGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gXCJDaG9vc2UgZmlsZS4uLlwiO1xyXG5cclxuICAvKiogQ29tbW9uIGV4dGVuc2lvbnMgZm9yIGEgZmlsZSBicm93c2luZyBkaWFsb2dcclxuICAgKiAgTm90ZTogRWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhY2NlcHQgYXR0cmlidXRlIG9uIGZpbGUgaW5wdXRzLCB0aGVyZWZvciBhbGwgZmlsZSB0eXBlc1xyXG4gICAqICAgICAgICB3aWxsIGJlIHNob3duLiAgRmlyZWZveCBhbmQgQ2hyb21lIGJvdGggc3VwcG9ydCB0aGlzIGZlYXR1cmUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZpbGVUeXBlPzogRmlsZVR5cGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGUgb3V0cHV0LCBkZXRlcm1pbmVzIHdoaWNoIHByb3BlcnRpZXMgYXJlIHN1cHBsaWVkIG9uIHRoZSBmb3JtTW9kZWxcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZmlsZU91dHB1dD86IEZpbGVPdXRwdXQgPSAnYmFzZTY0JztcclxuXHJcbiAgLyoqIElmIGZpbGVUeXBlIGlzIHNldCB0byBjdXN0b20gc2V0IHRoZSBhY2NlcHRhYmxlIGZpbGUgdHlwZXMgYmFzZWQgb24gdGhlIGN1c3RvbSBhcnJheSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21FeHRlbnNpb25zPzogQXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgY2FsbGJhY2sgc3VwcG9ydGVkIGlmIHRoZSBob3N0aW5nIHBhZ2UgbmVlZHMgdG8gcHJvY2VzcyB0aGUgZmlsZSBiZWZvcmVcclxuICAgKiBzZXR0aW5nIHRoZSBmb3JtTW9kZWwgd2l0aCB0aGUgZmlsZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHByb21pc2UgcmVzb2x2ZXMgaXQgd2lsbCBjb250aW51ZVxyXG4gICAqIGFuZCBzZXQgdGhlIGZpbGUgbmFtZSBhbmQgY29udGVudHMgdG8gdGhlIGZvcm1Nb2RlbCwgb3RoZXJ3aXNlIG9uIGZhaWx1cmUgaXQnbGwgZG8gbm90aGluZy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgb25GaWxlU2VsZWN0ZWQ/OiAoZmlsZTogRmlsZSkgPT4gUHJvbWlzZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBjYWxsYmFjayBzdXBwb3J0ZWQgZm9yIHdoZW4gdGhlIGhvc3RpbmcgcGFnZSBuZWVkcyB0byBwcm9jZXNzIG11bHRpcGxlIGZpbGVzXHJcbiAgICogV2Ugc2ltcGx5IG1hcCB0aGUgRmlsZUxpc3QgdG8gYW4gYXJyYXkgb2YgRmlsZSBvYmplY3RzIGFuZCBwYXNzIHRoYXQgYXJyYXkgdG8gdGhlIFxyXG4gICAqIGNhbGxiYWNrIGFuZCBsZXQgdGhlIGhvc3RpbmcgcGFnZSBoYW5kbGUgdGhlIHByb2Nlc3NpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgb25NdWx0aXBsZUZpbGVzU2VsZWN0ZWQ/OiAoZmlsZXM6IEZpbGVbXSkgPT4gUHJvbWlzZTxhbnk+O1xyXG5cclxuICAvKiogXHJcbiAgICogT3B0aW9uYWwgZGlzcGxheSB0eXBlIHRoYXQgY29udHJvbHMgd2hldGhlciB0aGUgZmlsZSBpbnB1dCB0ZXh0Ym94IGlzIGRpc3BsYXllZCBvclxyXG4gICAqIHNpbXBseSBhIGJ1dHRvbiB0aGUgdXNlciBjbGlja3MgdG8gbGF1bmNoIHRoZSBPUyBmaWxlIHN0b3JhZ2UgZGlhbG9nLlxyXG4gICAqIERlZmF1bHQ6IGZpbGVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheVR5cGU/OiAnZmlsZScgfCAnYnV0dG9uJyA9ICdmaWxlJztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFdoZW4gZGlzcGxheSB0eXBlIGlzIHNldCB0byBidXR0b24gdGhpcyBwcm9wZXJ0eSB3aWxsIGNvbnRyb2wgdGhlIGJ1dHRvbiBsYWJlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBidXR0b25MYWJlbD86IHN0cmluZztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFdoZW4gZGlzcGxheSB0eXBlIGlzIHNldCB0byBidXR0b24gdGhpcyBwcm9wZXJ0eSB3aWxsIGNvbnRyb2wgdGhlIGJ1dHRvbiB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGJ1dHRvblR5cGU/OiBzdHJpbmcgPSAncHJpbWFyeSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIHByb3BlcnR5IHRvIGNvbnRyb2wgd2hldGhlciB0aGUgdXNlciBjYW4gc2VsZWN0IG11bHRpcGxlIGZpbGVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG11bHRpU2VsZWN0PzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBmaWxlSW5wdXQ/OiBFbGVtZW50UmVmO1xyXG5cclxuICAvKiogUHJvcGVydHkgYm91bmQgdG8gdGhlIGZpbGUgaW5wdXQgdG8gZmlsdGVyIHdoYXQgZmlsZSB0eXBlcyBhcmUgc2hvd24gaW4gdGhlIGRpYWxvZyAqL1xyXG4gIHB1YmxpYyBmaWxlVHlwZUFjY2VwdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlcixcclxuICApIHtcclxuICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUZpbGVUeXBlQWNjZXB0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIC8vIFdhdGNoIGZvciBuYW1lIHRvIGNoYW5nZSwgaWYgdGhlIHZhbHVlIGlzIGNsZWFyZWQgd2Ugd2lsbCBjbGVhciB0aGUgb3RoZXJcclxuICAgIC8vIHN1cHBvcnRpbmcgbW9kZWwgcHJvcGVydGllcy4gVGhlIG5hbWUgY2FuIGJlIGNsZWFyZWQgYnkgdGhlIHVzZXIgbWFudWFsbHkgb3IgdmlhXHJcbiAgICAvLyB0aGUgY2xlYXIgYnV0dG9uXHJcbiAgICB0aGlzLmZvcm1Nb2RlbD8uZ2V0KCduYW1lJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBiYXNlNjRGaWxlU3RyaW5nOiBudWxsLFxyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0OiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGZpbGVDaGFuZ2UoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlRmlsZXMoZmlsZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSB8IG51bGwgPSBmaWxlcy5pdGVtKDApO1xyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVhZEZpbGUoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDbGVhciB0aGUgZmlsZSBpbnB1dHMgdmFsdWUsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBwaWNrIHRoZSBzYW1lIGZpbGVuYW1lcyBhZ2FpblxyXG4gICAgLy8gYW5kIGNhdXNlIGZpbGVDaGFuZ2UgdG8gcmUtdHJpZ2dlci5cclxuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdGhlIGZpbGUgdHlwZSBhbmQgdXBkYXRlcyB0aGUgZmlsZSB0eXBlIGFjY2VwdCBwcm9wZXJ0eS4gVGhpcyBpcyB3aGF0IGRldGVybWluZXMgdGhlIGZpbGVcclxuICAgKiB0eXBlIGNob2ljZXMgdGhhdCB0aGUgdXNlciB3aWxsIGJlIGxpbWl0ZWQgdG8gaW4gdGhlIGZpbGUgYnJvd3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlRmlsZVR5cGVBY2NlcHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWxlVHlwZSkge1xyXG4gICAgICBpZiAodGhpcy5maWxlVHlwZSAhPT0gXCJjdXN0b21cIikge1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGVBY2NlcHQgPSBGaWxlVHlwZUV4dGVuc2lvbnNbdGhpcy5maWxlVHlwZV0uam9pbihcIixcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRXh0ZW5zaW9ucykge1xyXG4gICAgICAgICAgdGhpcy5maWxlVHlwZUFjY2VwdCA9IHRoaXMuY3VzdG9tRXh0ZW5zaW9ucy5qb2luKFwiLFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRha2UgYSBmaWxlIHRoYXQgd2FzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGFuZCBwcm9jZXNzL3BhdGNoIG91ciBmb3JtIG1vZGVsXHJcbiAgICogSWYgdGhlIGhvc3QgY29tcG9uZW50IHJlcXVpcmVzIGFuIGFjdGlvbiB0byBvY2N1ciB3aXRoIHRoZSBmaWxlIHByaW9yIHRvIHRoZSBwYXRjaCBpdCB3aWxsIGNhbGxcclxuICAgKiBhbmQgd2FpdCBmb3IgaXQgdG8gcmV0dXJuLlxyXG4gICAqIEBwYXJhbSBmaWxlIFxyXG4gICAqIEBwYXJhbSBiYXNlNjRGaWxlU3RyaW5nIE9wdGlvbmFsOiBXaWxsIGhhdmUgYSB2YWx1ZSBwcm92aWRlZCBpZiB0aGUgZmlsZU91dHB1dCBpcyBzZXQgdG8gYmFzZTY0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzRmlsZShmaWxlOiBGaWxlLCBiYXNlNjRGaWxlU3RyaW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBQYXRjaCB0aGUgZmlsZSBmaXJzdCB0byB0cmlnZ2VyIGFueSBmaWxlIHZhbGlkYXRvcnNcclxuICAgIHRoaXMucGF0Y2hQcm9jZXNzZWRGaWxlKGZpbGUsIGJhc2U2NEZpbGVTdHJpbmcpO1xyXG5cclxuICAgIC8vIElmIHdlIGhhdmUgYW55IGFzeW5jIHZhbGlkYXRvcnMgcGVuZGluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZW0gdG8gY29tcGxldGUgYmVmb3JlIHdlIGtub3cgaWYgdGhlIGZvcm0gaXMgdmFsaWRcclxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5wZW5kaW5nKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuZm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ1BFTkRJTkcnKSxcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZClcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXJrIHRoZSBuYW1lIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IGFueSB2YWxpZGF0aW9uIGVycm9ycyB3aWxsIHNob3dcclxuICAgIHRoaXMuZm9ybU1vZGVsLmNvbnRyb2xzLm5hbWUubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgIC8vIE9ubHkgY2FsbCB0aGUgb25GaWxlU2VsZWN0ZWQgY2FsbGJhY2sgdG8gdXBsb2FkIHRoZSBmaWxlIGlmIHRoZSBmb3JtIGlzIHZhbGlkXHJcbiAgICBpZiAodGhpcy5vbkZpbGVTZWxlY3RlZCAmJiB0aGlzLmZvcm1Nb2RlbC52YWxpZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uRmlsZVNlbGVjdGVkKGZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoeyB1cGxvYWRSZXN1bHQ6IHJlc3VsdCA/PyBudWxsIH0pO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gQnVtbWVyLCB3ZSdyZSBub3QgZ29pbmcgdG8gZG8gYW55dGhpbmcgYWJvdXQgaXQgdGhvdWdoLlxyXG4gICAgICAgIC8vIFdlIGFyZSBub3QgcGF0Y2hpbmcgYW55IG9mIHRoZSByZXN1bHQgc28gYW55IGV4aXN0aW5nIGluZm9ybWF0aW9uIHJlbWFpbnNcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gdGhlIGZpbGVPdXRwdXQgcmV0dXJuIHdoZXRoZXIgdGhpcyBjb21wb25lbnQgaXMgZXhwZWN0ZWQgdG8gZGVsaXZlciBhIGJhc2U2NCBvdXRwdXRcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIGlzQmFzZTY0RmlsZU91dHB1dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVPdXRwdXQgPT09ICdiYXNlNjQnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiB0aGUgZmlsZSB3YXMgc2VsZWN0ZWQgYW5kIHByb2Nlc3NlZCBwYXRjaCB0aGUgZmlsZSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBob3N0aW5nIGZvcm0gd2lsbFxyXG4gICAqIGJlIGxvb2tpbmcgZm9yLiBcclxuICAgKiBAcGFyYW0gZmlsZSBcclxuICAgKiBAcGFyYW0gYmFzZTY0RmlsZVN0cmluZyBcclxuICAgKiBAcGFyYW0gb25GaWxlU2VsZWN0ZWRSZXN1bHQgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXRjaFByb2Nlc3NlZEZpbGUoZmlsZTogRmlsZSB8IG51bGwsIGJhc2U2NEZpbGVTdHJpbmc/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybU1vZGVsPy5wYXRjaFZhbHVlKHsgXHJcbiAgICAgIGZpbGU6IGZpbGUsIFxyXG4gICAgICBuYW1lOiBmaWxlPy5uYW1lLCBcclxuICAgICAgYmFzZTY0RmlsZVN0cmluZzogYmFzZTY0RmlsZVN0cmluZyA/PyBudWxsLFxyXG4gICAgICB1cGxvYWRSZXN1bHQ6IG51bGxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1hcHMgdGhlIGZpbGVzIHRvIGFuIGFycmF5IG9mIEZpbGUgb2JqZWN0cyBhbmQgc2VuZHMgdGhlbSBhbG9uZ1xyXG4gICAqIHRvIHRoZSBkZXJpdmVkIG9uTXVsdGlwbGVGaWxlU2VsZWN0ZWQgbWV0aG9kIGluIHRoZSBob3N0aW5nIGNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlTXVsdGlwbGVGaWxlcyhmaWxlczogRmlsZUxpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVzKTtcclxuXHJcbiAgICBpZiAodGhpcy5vbk11bHRpcGxlRmlsZXNTZWxlY3RlZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uTXVsdGlwbGVGaWxlc1NlbGVjdGVkKGZpbGVzQXJyYXkpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yOiAnLCBlKTtcclxuICAgICAgfSAgXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZWFkRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyBlID0+IHtcclxuICAgICAgbGV0IGJhc2U2NEZpbGVTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHJlYWRlcj8ucmVzdWx0Py50b1N0cmluZygpLnNwbGl0KFwiLFwiKVsxXTtcclxuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzRmlsZShmaWxlLCBiYXNlNjRGaWxlU3RyaW5nKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNCYXNlNjRGaWxlT3V0cHV0KCkpIHtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3NGaWxlKGZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZWMtZm9ybS1ncm91cCBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Nb2RlbFwiXHJcbiAgICAgICAgICAgICAgIFtoZWxwUG9wb3Zlcl09XCJoZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgIFtoZWxwUG9wb3ZlclBvc2l0aW9uXT1cImhlbHBQb3BvdmVyUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cIm1iLTBcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbnRyb2wtZ3JvdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgIDxpbnB1dCAjZmlsZUlucHV0XHJcbiAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2lucHV0XCJcclxuICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgW2F0dHIuYWNjZXB0XT1cImZpbGVUeXBlQWNjZXB0XCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuaGFzLXZhbHVlXT1cImRpc3BsYXlUeXBlID09PSAnZmlsZScgPyBmb3JtTW9kZWw/LmdldCgnbmFtZScpLnZhbHVlIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpU2VsZWN0ID8gJ211bHRpcGxlJyA6IHVuZGVmaW5lZFwiPlxyXG4gICAgICA8ZWMtZm9ybS1jb250cm9sICpuZ0lmPVwiZGlzcGxheVR5cGUgPT09ICdmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2lucHV0SWR9fV9mb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmcgfHwgZm9ybU1vZGVsPy5wZW5kaW5nXCI+XHJcbiAgICAgICAgPGlucHV0IGlkPVwie3tpbnB1dElkfX1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWw/LmdldCgnbmFtZScpXCJcclxuICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIj5cclxuICAgICAgPC9lYy1mb3JtLWNvbnRyb2w+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlYy1idXR0b24gKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ2ZpbGUnXCJcclxuICAgICAgICAgICAgICAgI2Jyb3dzZUJ0blxyXG4gICAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2Jyb3dzZUJ0blwiXHJcbiAgICAgICAgICAgICAgIChjbGlja2VkKT1cImZpbGVJbnB1dC5jbGljaygpXCJcclxuICAgICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtTW9kZWw/LmdldCgnbmFtZScpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgbGFiZWw9XCJCcm93c2VcIlxyXG4gICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxyXG4gICAgPC9lYy1idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGVjLWJ1dHRvbiAqbmdJZj1cImRpc3BsYXlUeXBlID09PSAnYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2J0blwiXHJcbiAgICAgICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvblR5cGVcIlxyXG4gICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbkxhYmVsID8/ICdCcm93c2VfVEMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgIChjbGlja2VkKT1cImZpbGVJbnB1dC5jbGljaygpXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgPC9lYy1idXR0b24+XHJcbjwvZWMtZm9ybS1ncm91cD4iXX0=
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQXFDLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFLdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUN6QixDQUFDO0FBb0JGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBRXRELGdFQUFnRTtJQUN6RCxNQUFNLENBQUMsWUFBWSxDQUN4QixVQUF5QixFQUN6QixXQUFvQixLQUFLLEVBQ3pCLGNBQXNEO1FBRXRELElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFzQjtZQUNqRCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBQyxDQUFDO1lBQ3JILElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQztZQUN0RSxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDdkMsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFDSCxJQUFJLFFBQVEsRUFBRTtZQUNaLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNyQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBK0I7UUFDNUQsT0FBTyxLQUFLLEVBQUUsT0FBd0IsRUFBRSxFQUFFO1lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsS0FBYSxDQUFDO2dCQUNqQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQWUsQ0FBQztnQkFDckUsT0FBTyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDckM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQTtJQUNILENBQUM7SUFnRUQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBOUQ1Qzs7V0FFRztRQUNhLGdCQUFXLEdBQVksZ0JBQWdCLENBQUM7UUFReEQ7O1dBRUc7UUFDYSxlQUFVLEdBQWdCLFFBQVEsQ0FBQztRQW1CbkQ7Ozs7V0FJRztRQUNhLGdCQUFXLEdBQXVCLE1BQU0sQ0FBQztRQU96RDs7V0FFRztRQUNhLGVBQVUsR0FBWSxTQUFTLENBQUM7UUFFaEQ7O1dBRUc7UUFDYSxnQkFBVyxHQUFhLEtBQUssQ0FBQztJQVk5QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsNEVBQTRFO1FBQzVFLG1GQUFtRjtRQUNuRixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUNuQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO29CQUN4QixJQUFJLEVBQUUsSUFBSTtvQkFDVixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixZQUFZLEVBQUUsSUFBSTtpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGlHQUFpRztRQUNqRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQ25DLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7WUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBZTtRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxNQUFNLElBQUksR0FBZ0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLElBQUksRUFBRTtnQkFDUixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7U0FDRjtRQUVELHlGQUF5RjtRQUN6RixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO2dCQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbkU7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdkQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBVSxFQUFFLGdCQUFxQztRQUN6RSxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWhELG1IQUFtSDtRQUNuSCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQ3RDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQ25DLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDZjtRQUVELDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFN0MsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUMvQyxJQUFJO2dCQUNGLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7YUFDN0Q7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDViwwREFBMEQ7Z0JBQzFELDRFQUE0RTthQUM3RTtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxrQkFBa0IsQ0FBQyxJQUFpQixFQUFFLGdCQUF5QjtRQUNyRSxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztZQUN6QixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJO1lBQzFDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFlO1FBQy9DLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDaEMsSUFBSTtnQkFDRixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3RDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBQUEsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBVTtRQUMvQixNQUFNLE1BQU0sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFO1lBQzNCLElBQUksZ0JBQWdCLEdBQXVCLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7O2dIQTdQVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixtZUF3RkUsVUFBVSx1RkN6SDVDLGlpRUE4Q2dCOzJGRGJILG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7NklBbUNWLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFNVSxRQUFRO3NCQUF2QixLQUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBR1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQU9VLGNBQWM7c0JBQTdCLEtBQUs7Z0JBT1UsdUJBQXVCO3NCQUF0QyxLQUFLO2dCQU9VLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBRTZELFNBQVM7c0JBQTNFLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1iYXNlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVUeXBlID0gJ3ppcCcgfCAnZXhjZWwnIHwgJ2N1c3RvbSc7XHJcbmV4cG9ydCB0eXBlIEZpbGVPdXRwdXQgPSAncmF3JyB8ICdiYXNlNjQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZpbGVUeXBlRXh0ZW5zaW9ucyA9IHtcclxuICB6aXA6IFsnLnppcCddLFxyXG4gIGV4Y2VsOiBbJy54bHMnLCAnLnhsc3gnXVxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsZVVwbG9hZEZvcm1Hcm91cCA9IHtcclxuICBmaWxlOiBGb3JtQ29udHJvbDxGaWxlIHwgbnVsbD47XHJcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgYmFzZTY0RmlsZVN0cmluZzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgdXBsb2FkUmVzdWx0OiBGb3JtQ29udHJvbDxhbnk+O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgSW52YWxpZEZpbGVFcnJvciA9IHtcclxuICBpbnZhbGlkRmlsZTogdHJ1ZTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVWYWxpZGF0b3JDYWxsYmFjayA9IChmaWxlOiBGaWxlIHwgbnVsbCB8IHVuZGVmaW5lZCwgYmFzZTY0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiBQcm9taXNlPEludmFsaWRGaWxlRXJyb3IgfCBudWxsPjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVjLWZpbGUtdXBsb2FkXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgLy8gc3RhdGljIGNsYXNzIHRvIGNyZWF0ZSB0aGUgZm9ybSBncm91cCBmcm9tIGEgcGFyZW50IGNvbXBvbmVudFxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybU1vZGVsKFxyXG4gICAgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSxcclxuICAgIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBmaWxlVmFsaWRhdG9ycz86IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW11cclxuICApOiBGb3JtR3JvdXA8RmlsZVVwbG9hZEZvcm1Hcm91cD4ge1xyXG4gICAgbGV0IGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXA8RmlsZVVwbG9hZEZvcm1Hcm91cD4oe1xyXG4gICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIHt2YWxpZGF0b3JzOiB2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnM6IGZpbGVWYWxpZGF0b3JzfSksXHJcbiAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZGlzYWJsZWQgfSwgdmFsaWRhdG9ycyksXHJcbiAgICAgIGJhc2U2NEZpbGVTdHJpbmc6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgdXBsb2FkUmVzdWx0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICB9KTtcclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICBmb3JtR3JvdXAuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmlsZVZhbGlkYXRvcihjYWxsYmFjazogRmlsZVZhbGlkYXRvckNhbGxiYWNrKTogQXN5bmNWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gYXN5bmMgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIGxldCBmaWxlID0gY29udHJvbC52YWx1ZSBhcyBGaWxlO1xyXG4gICAgICAgIGxldCBiYXNlNjQgPSBjb250cm9sLnBhcmVudC5nZXQoJ2Jhc2U2NEZpbGVTdHJpbmcnKT8udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjayhmaWxlLCBiYXNlNjQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1Nb2RlbCE6IEZvcm1Hcm91cDxGaWxlVXBsb2FkRm9ybUdyb3VwPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHZhbHVlIG9mIHRoZSB0ZXh0Ym94IGlucHV0J3MgcGxhY2Vob2xkZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSBcIkNob29zZSBmaWxlLi4uXCI7XHJcblxyXG4gIC8qKiBDb21tb24gZXh0ZW5zaW9ucyBmb3IgYSBmaWxlIGJyb3dzaW5nIGRpYWxvZ1xyXG4gICAqICBOb3RlOiBFZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgb24gZmlsZSBpbnB1dHMsIHRoZXJlZm9yIGFsbCBmaWxlIHR5cGVzXHJcbiAgICogICAgICAgIHdpbGwgYmUgc2hvd24uICBGaXJlZm94IGFuZCBDaHJvbWUgYm90aCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZmlsZVR5cGU/OiBGaWxlVHlwZSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsZSBvdXRwdXQsIGRldGVybWluZXMgd2hpY2ggcHJvcGVydGllcyBhcmUgc3VwcGxpZWQgb24gdGhlIGZvcm1Nb2RlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlT3V0cHV0PzogRmlsZU91dHB1dCA9ICdiYXNlNjQnO1xyXG5cclxuICAvKiogSWYgZmlsZVR5cGUgaXMgc2V0IHRvIGN1c3RvbSBzZXQgdGhlIGFjY2VwdGFibGUgZmlsZSB0eXBlcyBiYXNlZCBvbiB0aGUgY3VzdG9tIGFycmF5ICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUV4dGVuc2lvbnM/OiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBjYWxsYmFjayBzdXBwb3J0ZWQgaWYgdGhlIGhvc3RpbmcgcGFnZSBuZWVkcyB0byBwcm9jZXNzIHRoZSBmaWxlIGJlZm9yZVxyXG4gICAqIHNldHRpbmcgdGhlIGZvcm1Nb2RlbCB3aXRoIHRoZSBmaWxlIGluZm9ybWF0aW9uLiBJZiB0aGUgcHJvbWlzZSByZXNvbHZlcyBpdCB3aWxsIGNvbnRpbnVlXHJcbiAgICogYW5kIHNldCB0aGUgZmlsZSBuYW1lIGFuZCBjb250ZW50cyB0byB0aGUgZm9ybU1vZGVsLCBvdGhlcndpc2Ugb24gZmFpbHVyZSBpdCdsbCBkbyBub3RoaW5nLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvbkZpbGVTZWxlY3RlZD86IChmaWxlOiBGaWxlKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIHN1cHBvcnRlZCBmb3Igd2hlbiB0aGUgaG9zdGluZyBwYWdlIG5lZWRzIHRvIHByb2Nlc3MgbXVsdGlwbGUgZmlsZXNcclxuICAgKiBXZSBzaW1wbHkgbWFwIHRoZSBGaWxlTGlzdCB0byBhbiBhcnJheSBvZiBGaWxlIG9iamVjdHMgYW5kIHBhc3MgdGhhdCBhcnJheSB0byB0aGUgXHJcbiAgICogY2FsbGJhY2sgYW5kIGxldCB0aGUgaG9zdGluZyBwYWdlIGhhbmRsZSB0aGUgcHJvY2Vzc2luZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvbk11bHRpcGxlRmlsZXNTZWxlY3RlZD86IChmaWxlczogRmlsZVtdKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKiBcclxuICAgKiBPcHRpb25hbCBkaXNwbGF5IHR5cGUgdGhhdCBjb250cm9scyB3aGV0aGVyIHRoZSBmaWxlIGlucHV0IHRleHRib3ggaXMgZGlzcGxheWVkIG9yXHJcbiAgICogc2ltcGx5IGEgYnV0dG9uIHRoZSB1c2VyIGNsaWNrcyB0byBsYXVuY2ggdGhlIE9TIGZpbGUgc3RvcmFnZSBkaWFsb2cuXHJcbiAgICogRGVmYXVsdDogZmlsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5VHlwZT86ICdmaWxlJyB8ICdidXR0b24nID0gJ2ZpbGUnO1xyXG5cclxuICAvKiogXHJcbiAgICogV2hlbiBkaXNwbGF5IHR5cGUgaXMgc2V0IHRvIGJ1dHRvbiB0aGlzIHByb3BlcnR5IHdpbGwgY29udHJvbCB0aGUgYnV0dG9uIGxhYmVsXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGJ1dHRvbkxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKiogXHJcbiAgICogV2hlbiBkaXNwbGF5IHR5cGUgaXMgc2V0IHRvIGJ1dHRvbiB0aGlzIHByb3BlcnR5IHdpbGwgY29udHJvbCB0aGUgYnV0dG9uIHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVHlwZT86IHN0cmluZyA9ICdwcmltYXJ5JztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgcHJvcGVydHkgdG8gY29udHJvbCB3aGV0aGVyIHRoZSB1c2VyIGNhbiBzZWxlY3QgbXVsdGlwbGUgZmlsZXNcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlTZWxlY3Q/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJmaWxlSW5wdXRcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGZpbGVJbnB1dD86IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKiBQcm9wZXJ0eSBib3VuZCB0byB0aGUgZmlsZSBpbnB1dCB0byBmaWx0ZXIgd2hhdCBmaWxlIHR5cGVzIGFyZSBzaG93biBpbiB0aGUgZGlhbG9nICovXHJcbiAgcHVibGljIGZpbGVUeXBlQWNjZXB0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Hcm91cEhlbHBlcjogRm9ybUdyb3VwSGVscGVyLFxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRmlsZVR5cGVBY2NlcHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIG5hbWUgdG8gY2hhbmdlLCBpZiB0aGUgdmFsdWUgaXMgY2xlYXJlZCB3ZSB3aWxsIGNsZWFyIHRoZSBvdGhlclxyXG4gICAgLy8gc3VwcG9ydGluZyBtb2RlbCBwcm9wZXJ0aWVzLiBUaGUgbmFtZSBjYW4gYmUgY2xlYXJlZCBieSB0aGUgdXNlciBtYW51YWxseSBvciB2aWFcclxuICAgIC8vIHRoZSBjbGVhciBidXR0b25cclxuICAgIHRoaXMuZm9ybU1vZGVsPy5nZXQoJ25hbWUnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgIGJhc2U2NEZpbGVTdHJpbmc6IG51bGwsXHJcbiAgICAgICAgICB1cGxvYWRSZXN1bHQ6IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3luYyBlcnJvcnMgZnJvbSB0aGUgZmlsZSBjb250cm9sIHRvIHRoZSBuYW1lIGNvbnRyb2wgd2hlbmV2ZXIgdGhlIGZpbGUgY29udHJvbCBzdGF0dXMgY2hhbmdlc1xyXG4gICAgdGhpcy5mb3JtTW9kZWwuZ2V0KCdmaWxlJyk/LnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmZvcm1Nb2RlbC5nZXQoJ2ZpbGUnKT8uZXJyb3JzID8/IG51bGw7XHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLmdldCgnbmFtZScpPy5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGZpbGVDaGFuZ2UoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlRmlsZXMoZmlsZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSB8IG51bGwgPSBmaWxlcy5pdGVtKDApO1xyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVhZEZpbGUoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDbGVhciB0aGUgZmlsZSBpbnB1dHMgdmFsdWUsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBwaWNrIHRoZSBzYW1lIGZpbGVuYW1lcyBhZ2FpblxyXG4gICAgLy8gYW5kIGNhdXNlIGZpbGVDaGFuZ2UgdG8gcmUtdHJpZ2dlci5cclxuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdGhlIGZpbGUgdHlwZSBhbmQgdXBkYXRlcyB0aGUgZmlsZSB0eXBlIGFjY2VwdCBwcm9wZXJ0eS4gVGhpcyBpcyB3aGF0IGRldGVybWluZXMgdGhlIGZpbGVcclxuICAgKiB0eXBlIGNob2ljZXMgdGhhdCB0aGUgdXNlciB3aWxsIGJlIGxpbWl0ZWQgdG8gaW4gdGhlIGZpbGUgYnJvd3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlRmlsZVR5cGVBY2NlcHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWxlVHlwZSkge1xyXG4gICAgICBpZiAodGhpcy5maWxlVHlwZSAhPT0gXCJjdXN0b21cIikge1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGVBY2NlcHQgPSBGaWxlVHlwZUV4dGVuc2lvbnNbdGhpcy5maWxlVHlwZV0uam9pbihcIixcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRXh0ZW5zaW9ucykge1xyXG4gICAgICAgICAgdGhpcy5maWxlVHlwZUFjY2VwdCA9IHRoaXMuY3VzdG9tRXh0ZW5zaW9ucy5qb2luKFwiLFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRha2UgYSBmaWxlIHRoYXQgd2FzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGFuZCBwcm9jZXNzL3BhdGNoIG91ciBmb3JtIG1vZGVsXHJcbiAgICogSWYgdGhlIGhvc3QgY29tcG9uZW50IHJlcXVpcmVzIGFuIGFjdGlvbiB0byBvY2N1ciB3aXRoIHRoZSBmaWxlIHByaW9yIHRvIHRoZSBwYXRjaCBpdCB3aWxsIGNhbGxcclxuICAgKiBhbmQgd2FpdCBmb3IgaXQgdG8gcmV0dXJuLlxyXG4gICAqIEBwYXJhbSBmaWxlIFxyXG4gICAqIEBwYXJhbSBiYXNlNjRGaWxlU3RyaW5nIE9wdGlvbmFsOiBXaWxsIGhhdmUgYSB2YWx1ZSBwcm92aWRlZCBpZiB0aGUgZmlsZU91dHB1dCBpcyBzZXQgdG8gYmFzZTY0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzRmlsZShmaWxlOiBGaWxlLCBiYXNlNjRGaWxlU3RyaW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBQYXRjaCB0aGUgZmlsZSBmaXJzdCB0byB0cmlnZ2VyIGFueSBmaWxlIHZhbGlkYXRvcnNcclxuICAgIHRoaXMucGF0Y2hQcm9jZXNzZWRGaWxlKGZpbGUsIGJhc2U2NEZpbGVTdHJpbmcpO1xyXG5cclxuICAgIC8vIElmIHdlIGhhdmUgYW55IGFzeW5jIHZhbGlkYXRvcnMgcGVuZGluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZW0gdG8gY29tcGxldGUgYmVmb3JlIHdlIGtub3cgaWYgdGhlIGZvcm0gaXMgdmFsaWRcclxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5wZW5kaW5nKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuZm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ1BFTkRJTkcnKSxcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZClcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXJrIHRoZSBuYW1lIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IGFueSB2YWxpZGF0aW9uIGVycm9ycyB3aWxsIHNob3dcclxuICAgIHRoaXMuZm9ybU1vZGVsLmNvbnRyb2xzLm5hbWUubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgIC8vIE9ubHkgY2FsbCB0aGUgb25GaWxlU2VsZWN0ZWQgY2FsbGJhY2sgdG8gdXBsb2FkIHRoZSBmaWxlIGlmIHRoZSBmb3JtIGlzIHZhbGlkXHJcbiAgICBpZiAodGhpcy5vbkZpbGVTZWxlY3RlZCAmJiB0aGlzLmZvcm1Nb2RlbC52YWxpZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uRmlsZVNlbGVjdGVkKGZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoeyB1cGxvYWRSZXN1bHQ6IHJlc3VsdCA/PyBudWxsIH0pO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gQnVtbWVyLCB3ZSdyZSBub3QgZ29pbmcgdG8gZG8gYW55dGhpbmcgYWJvdXQgaXQgdGhvdWdoLlxyXG4gICAgICAgIC8vIFdlIGFyZSBub3QgcGF0Y2hpbmcgYW55IG9mIHRoZSByZXN1bHQgc28gYW55IGV4aXN0aW5nIGluZm9ybWF0aW9uIHJlbWFpbnNcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gdGhlIGZpbGVPdXRwdXQgcmV0dXJuIHdoZXRoZXIgdGhpcyBjb21wb25lbnQgaXMgZXhwZWN0ZWQgdG8gZGVsaXZlciBhIGJhc2U2NCBvdXRwdXRcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIGlzQmFzZTY0RmlsZU91dHB1dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVPdXRwdXQgPT09ICdiYXNlNjQnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiB0aGUgZmlsZSB3YXMgc2VsZWN0ZWQgYW5kIHByb2Nlc3NlZCBwYXRjaCB0aGUgZmlsZSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBob3N0aW5nIGZvcm0gd2lsbFxyXG4gICAqIGJlIGxvb2tpbmcgZm9yLiBcclxuICAgKiBAcGFyYW0gZmlsZSBcclxuICAgKiBAcGFyYW0gYmFzZTY0RmlsZVN0cmluZyBcclxuICAgKiBAcGFyYW0gb25GaWxlU2VsZWN0ZWRSZXN1bHQgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXRjaFByb2Nlc3NlZEZpbGUoZmlsZTogRmlsZSB8IG51bGwsIGJhc2U2NEZpbGVTdHJpbmc/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybU1vZGVsPy5wYXRjaFZhbHVlKHsgXHJcbiAgICAgIGZpbGU6IGZpbGUsIFxyXG4gICAgICBuYW1lOiBmaWxlPy5uYW1lLCBcclxuICAgICAgYmFzZTY0RmlsZVN0cmluZzogYmFzZTY0RmlsZVN0cmluZyA/PyBudWxsLFxyXG4gICAgICB1cGxvYWRSZXN1bHQ6IG51bGxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1hcHMgdGhlIGZpbGVzIHRvIGFuIGFycmF5IG9mIEZpbGUgb2JqZWN0cyBhbmQgc2VuZHMgdGhlbSBhbG9uZ1xyXG4gICAqIHRvIHRoZSBkZXJpdmVkIG9uTXVsdGlwbGVGaWxlU2VsZWN0ZWQgbWV0aG9kIGluIHRoZSBob3N0aW5nIGNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlTXVsdGlwbGVGaWxlcyhmaWxlczogRmlsZUxpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVzKTtcclxuXHJcbiAgICBpZiAodGhpcy5vbk11bHRpcGxlRmlsZXNTZWxlY3RlZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uTXVsdGlwbGVGaWxlc1NlbGVjdGVkKGZpbGVzQXJyYXkpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yOiAnLCBlKTtcclxuICAgICAgfSAgXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZWFkRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyBlID0+IHtcclxuICAgICAgbGV0IGJhc2U2NEZpbGVTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHJlYWRlcj8ucmVzdWx0Py50b1N0cmluZygpLnNwbGl0KFwiLFwiKVsxXTtcclxuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzRmlsZShmaWxlLCBiYXNlNjRGaWxlU3RyaW5nKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNCYXNlNjRGaWxlT3V0cHV0KCkpIHtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3NGaWxlKGZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZWMtZm9ybS1ncm91cCBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Nb2RlbFwiXHJcbiAgICAgICAgICAgICAgIFtoZWxwUG9wb3Zlcl09XCJoZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgIFtoZWxwUG9wb3ZlclBvc2l0aW9uXT1cImhlbHBQb3BvdmVyUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cIm1iLTBcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbnRyb2wtZ3JvdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgIDxpbnB1dCAjZmlsZUlucHV0XHJcbiAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2lucHV0XCJcclxuICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgW2F0dHIuYWNjZXB0XT1cImZpbGVUeXBlQWNjZXB0XCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuaGFzLXZhbHVlXT1cImRpc3BsYXlUeXBlID09PSAnZmlsZScgPyBmb3JtTW9kZWw/LmdldCgnbmFtZScpLnZhbHVlIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpU2VsZWN0ID8gJ211bHRpcGxlJyA6IHVuZGVmaW5lZFwiPlxyXG4gICAgICA8ZWMtZm9ybS1jb250cm9sICpuZ0lmPVwiZGlzcGxheVR5cGUgPT09ICdmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2lucHV0SWR9fV9mb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmcgfHwgZm9ybU1vZGVsPy5wZW5kaW5nXCI+XHJcbiAgICAgICAgPGlucHV0IGlkPVwie3tpbnB1dElkfX1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWw/LmdldCgnbmFtZScpXCJcclxuICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIj5cclxuICAgICAgPC9lYy1mb3JtLWNvbnRyb2w+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlYy1idXR0b24gKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ2ZpbGUnXCJcclxuICAgICAgICAgICAgICAgI2Jyb3dzZUJ0blxyXG4gICAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2Jyb3dzZUJ0blwiXHJcbiAgICAgICAgICAgICAgIChjbGlja2VkKT1cImZpbGVJbnB1dC5jbGljaygpXCJcclxuICAgICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtTW9kZWw/LmdldCgnbmFtZScpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgbGFiZWw9XCJCcm93c2VcIlxyXG4gICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxyXG4gICAgPC9lYy1idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGVjLWJ1dHRvbiAqbmdJZj1cImRpc3BsYXlUeXBlID09PSAnYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19X2J0blwiXHJcbiAgICAgICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvblR5cGVcIlxyXG4gICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbkxhYmVsID8/ICdCcm93c2VfVEMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgIChjbGlja2VkKT1cImZpbGVJbnB1dC5jbGljaygpXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgPC9lYy1idXR0b24+XHJcbjwvZWMtZm9ybS1ncm91cD4iXX0=
|
@@ -192,6 +192,8 @@ export class PageBaseComponent {
|
|
192
192
|
* @param event
|
193
193
|
*/
|
194
194
|
async onSave(event) {
|
195
|
+
// Show the saving overlay in case we have async validators in play
|
196
|
+
this.showStatus(PageStatus.Saving);
|
195
197
|
this.formGroup.markAllAsTouched();
|
196
198
|
// If the form has pending async validators, wait for it them to complete before proceeding
|
197
199
|
if (this.formGroup.pending) {
|
@@ -201,6 +203,8 @@ export class PageBaseComponent {
|
|
201
203
|
await this.save();
|
202
204
|
}
|
203
205
|
else {
|
206
|
+
// Remove the saving overlay to display any errors
|
207
|
+
this.showStatus(PageStatus.Loaded);
|
204
208
|
// Only show the banner with the generic message if the parent component hasn't already set one
|
205
209
|
// by implementing onSave for additional validation
|
206
210
|
if (this.errors === '') {
|
@@ -380,4 +384,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
380
384
|
type: HostBinding,
|
381
385
|
args: ['class']
|
382
386
|
}] } });
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLWJhc2UvcGFnZS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxXQUFXLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUU1RCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNFLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFZLEVBQUUsQ0FB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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQyxDQUN4QyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxJQUFJO29CQUNGLElBQUksVUFBVSxHQUEyQixDQUFFLENBQUMsR0FBRyxDQUFDO29CQUVoRCxJQUFJLElBQUksQ0FBQyxtQ0FBbUMsRUFBRTt3QkFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUMvRCxJQUFJLENBQUMsb0JBQW9CLENBQWlCLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDbkQ7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTs0QkFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFpQixDQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ25EO3FCQUNGO2lCQUNGO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxHQUFXO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs4R0EvYm1CLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRHRDLFNBQVM7K0ZBR3dCLFNBQVM7c0JBQXhDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVySGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9yb3V0ZXItaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zY3JvbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2hlbHAvaGVscC10eXBlcyc7XHJcbmltcG9ydCB7IFNwbGFzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L3NwbGFzaC9zcGxhc2guc2VydmljZSc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZVN0YXR1cywgUGFnZVN0YXR1c2VzIH0gZnJvbSAnLi4vcGFnZS1zdGF0dXNlcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnZUluaXRSZXN1bHQge1xyXG4gIHRpdGxlPzogc3RyaW5nID0gJyc7XHJcbiAgc3ViVGl0bGU/OiBzdHJpbmcgPSAnJztcclxuICBzdWJUaXRsZVVybD86IHN0cmluZyA9ICcnO1xyXG4gIGJyZWFkY3J1bWJzPzogTmF2SXRlbVtdO1xyXG4gIGhlbHA/OiBIZWxwO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBhZ2VCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBEZWZhdWx0IGNzcyBjbGFzc2VzIGFwcGxpZWQgdG8gaG9zdCBlbGVtZW50ICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHByb3RlY3RlZCBjbGFzc0xpc3QgPSAnZC1mbGV4IGZsZXgtZ3Jvdyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpdGxlIGZvciB0aGUgcGFnZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlclxyXG4gICAqL1xyXG4gIHB1YmxpYyB0aXRsZT86IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTdWIgdGl0bGUgZm9yIHRoZSBwYWdlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIHN1YlRpdGxlPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YiB0aXRsZSB1cmwgZm9yIHRoZSBwYWdlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIHN1YlRpdGxlVXJsPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXR1cyBvdmVybGF5IGZvciB0aGUgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0dXM6IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgncGVuZGluZycsICdMb2FkaW5nJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJyZWFkY3J1bWJzIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIGJyZWFkY3J1bWJzPzogTmF2SXRlbVtdO1xyXG5cclxuICAvKipcclxuICAgKiBSZXN1bHQgcmV0dXJuZWQgZnJvbSB0aGUgb25Jbml0IGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRSZXN1bHQhOiBQYWdlSW5pdFJlc3VsdDtcclxuXHJcbiAgLyoqXHJcbiAgICogSGVscCBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbXBvbmVudCwgd2hpY2ggY2FuIG9ubHkgYmUgc2V0IHRocm91Z2ggb25Jbml0XHJcbiAgICovXHJcbiAgcHVibGljIGhlbHA6IEhlbHAgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm0gZ3JvdXAgdG8gYmUgdXNlZCBpZiBuZWVkZWQgYnkgdGhlIHBhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGludmFsaWQgZm9ybSBtZXNzYWdlLCBvdmVycmlkZSBpZiBhIG1vcmUgc3BlY2lmaWMgbWVzc2FnZSBpcyBuZWVkZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVmYXVsdEludmFsaWRGb3JtTWVzc2FnZTogc3RyaW5nID0gJ1BsZWFzZUNvcnJlY3RGb3JtX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCB1bmtub3duIHNhdmUgZXJyb3IgbWVzc2FnZSwgb3ZlcnJpZGUgaWYgYSBtb3JlIHNwZWNpZmljIG1lc3NhZ2UgaXMgbmVlZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGRlZmF1bHRVbmtub3duU2F2ZUVycm9yOiBzdHJpbmcgPSAnUGFnZUJhc2VVbmtub3duU2F2ZUVycm9yX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBvcHQgb3V0IG9mIGhpZGluZyB0aGUgc3BsYXNoIHNjcmVlbiB3aGVuIHRoZSBwYWdlIGlzIGxvYWRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBza2lwSGlkZVNwbGFzaE9uQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbnkgbmF2aWdhdGlvbiBlbmQgZXZlbnRzIHRoYXQgYXJlIHN0cmljdGx5IHF1ZXJ5IHBhcmFtIGNoYW5nZXMgd2lsbFxyXG4gICAqIG5vdCBjYWxsIHRoZSBvbk5hdmlnYXRpb25FbmQgZnVuY3Rpb24uIFRoaXMgYWxsb3dzIHBhZ2VzIHRvIGNoYW5nZSB0aGUgdmlldyB3aXRoIHF1ZXJ5XHJcbiAgICogcGFyYW1zIGFuZCBub3QgdHJpZ2dlciBhIGZ1bGwgcmVmcmVzaC5cclxuICAgKi9cclxuICBwdWJsaWMgaWdub3JlUXVlcnlQYXJhbXNPbk5hdmlnYXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBwcmV2aW91c1VybDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byB1bnN1YnNjcmliZSBmcm9tIG9ic2VydmFibGVzXHJcbiAgICovXHJcbiAgcHVibGljIGRlc3Ryb3llZDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGtub3cgd2hlbiB0aGUgcGFnZSBoYXMgYmVlbiBsb2FkZWQsIHRoaXMgd2lsbCBiZSBjb21wbGV0ZWRcclxuICAgKiBhZnRlciBvbkFmdGVyVmlld0luaXRcclxuICAgKi9cclxuICBwcml2YXRlIF9hZnRlclZpZXdJbml0Q29tcGxldGU6IFJlcGxheVN1YmplY3Q8dm9pZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xyXG4gIHB1YmxpYyBhZnRlclZpZXdJbml0Q29tcGxldGU6IE9ic2VydmFibGU8dm9pZD4gPSB0aGlzLl9hZnRlclZpZXdJbml0Q29tcGxldGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIGRlZmluZWQgdGhlIGZvcm0gd2lsbCBhdXRvbWF0aWNhbGx5IHNjcm9sbCB0byB0aGUgZmlyc3QgaW52YWxpZCBmb3JtIGNvbnRyb2xcclxuICAgKiBpZiBpdCdzIG91dHNpZGUgb2YgdGhlIHZpZXdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSByb3V0ZXIgZXZlbnRzIE5hdmlnYXRpb25FbmRcclxuICAgKiBVc2VkIHRvIGtub3cgaWYgYWxyZWFkeSBzdWJzY3JpYmVkIHRvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBDb21tb24gc2VydmljZXMgdXNlZCBieSBwYWdlLWJhc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNjcm9sbFNlcnZpY2U6IFNjcm9sbFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xyXG4gIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNwbGFzaFNlcnZpY2U6IFNwbGFzaFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlckhlbHBlcjogUm91dGVySGVscGVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMuZXJyb3JTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEVycm9yU2VydmljZSk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICB0aGlzLnNjcm9sbFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU2Nyb2xsU2VydmljZSk7XHJcbiAgICB0aGlzLnJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoRGlhbG9nU2VydmljZSk7XHJcbiAgICB0aGlzLnNwbGFzaFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU3BsYXNoU2VydmljZSk7XHJcbiAgICB0aGlzLnJvdXRlckhlbHBlciA9IGluamVjdG9yLmdldChSb3V0ZXJIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXJyb3JzIHRvIGJlIHNob3duIGZvciB0aGUgY29tcG9uZW50LlxyXG4gICAqIEF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIG9uIHByb21pc2UgcmVqZWN0aW9uIGZyb20gc2F2ZSBhbmQgc2hhcmVkIHdpdGggdGhlIFVJLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2Vycm9yczogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIGdldCBlcnJvcnMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9lcnJvcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBsaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBBbmd1bGFyIG5nT25Jbml0IGxpZmVjeWNsZSBob29rLlxyXG4gICAqIENhbGxlZCBiZWZvcmUgb25Jbml0IGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuIEFkZCBzZXR1cCBsb2dpYyBoZXJlIHRoYXQgZG9lc1xyXG4gICAqIG5vdCBuZWVkIHRvIGJlIHJ1biBvbiBldmVyeSByZWxvYWQuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uRmlyc3RJbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBpbiB0aGUgZGVyaXZlZCBjbGFzcyBhcyBwYXJ0IG9mIHRoZSBBbmd1bGFyIG5nT25Jbml0XHJcbiAgICogbGlmZWN5Y2xlIGhvb2suIEl0IG11c3QgcHJvdmlkZSBhIFBhZ2VJbml0UmVzdWx0IGJhY2sgdG8gdGhlIGJhc2UgY2xhc3MgdG8gcHJvcGVybHlcclxuICAgKiBzZXQgdXAgdGhlIHBhZ2UuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uSW5pdCgpOiBQcm9taXNlPFBhZ2VJbml0UmVzdWx0PjtcclxuICBwcm90ZWN0ZWQgaW5pdFByb21pc2UhOiBQcm9taXNlPFBhZ2VJbml0UmVzdWx0PjtcclxuXHJcbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGluZyk7XHJcbiAgICAgIHRoaXMuc2V0VXBSb3V0ZXJTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgIHRoaXMub25GaXJzdEluaXQoKTtcclxuICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMub25Jbml0KCk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQganVzdCBhZnRlciB0aGUgQW5ndWxhciBMaWZlY3ljbGUgZXZlbnQgbmdPbkFmdGVyVmlld0luaXQuXHJcbiAgICogSXQgZmlyZXMgYWZ0ZXIgYWxsIHN1Yi1jb21wb25lbnRzIGhhdmUgZ29uZSB0aHJvdWdoIHRoZWlyIGluaXRpYWxpemF0aW9uIHBoYXNlLlxyXG4gICAqIEl0IGlzIGluIHRoaXMgcGhhc2UgdGhhdCB0aGUgdmlldyBjb21wb25lbnRzIHNob3VsZCBhbHJlYWR5IGV4aXN0LCBzbyBhIGRlcml2ZWQgY2xhc3Mgc2hvdWxkXHJcbiAgICogbG9hZCBkYXRhIGZyb20gdGhlIEFQSSB0byBwb3B1bGF0ZSBhbnkgdmlldyBjb21wb25lbnRzLiBUaGUgcHJvbWlzZSB0aGF0XHJcbiAgICogaXMgcmV0dXJuZWQgbXVzdCBub3QgcmVzb2x2ZSB1bnRpbCBhbGwgcmVxdWlyZWQgZGF0YSBoYXMgY29tcGxldGVseSBsb2FkZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgb25BZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4geyB9O1xyXG4gIHB1YmxpYyBhc3luYyBuZ0FmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBpbml0UmVzdWx0ID0gYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcclxuICAgICAgdGhpcy5wYXJzZUluaXRSZXN1bHQoaW5pdFJlc3VsdCk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlLm5leHQoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLm9uRm9ybUxvYWRDb21wbGV0ZSgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc3RhdHVzLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnNraXBIaWRlU3BsYXNoT25Db21wbGV0ZSkge1xyXG4gICAgICAgIHRoaXMuc3BsYXNoU2VydmljZS5oaWRlU3BsYXNoKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLnNwbGFzaFNlcnZpY2UuaGlkZVNwbGFzaCgpO1xyXG4gICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBsaWZlY3ljbGUgbWV0aG9kIHRoYXQgZXhlY3V0ZXMgb25jZSBhbGwgZGF0YSBoYXMgYmVlbiBsb2FkZWRcclxuICAgKiB0aHJvdWdoIG5nQWZ0ZXJWaWV3SW5pdCBhbmQgZnJvbSBsb2NhbCBzdG9yYWdlIGlmIHJlcXVpcmVkLlxyXG4gICAqIEl0IGlzIGF0IHRoaXMgcG9pbnQgdGhhdCB5b3UgY2FuIHN1YnNjcmliZSB0byBjaGFuZ2VzIG9uIHRoZSBmb3JtXHJcbiAgICogcmVsaWFibHlcclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKiBAbWVtYmVyb2YgUGFnZUJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgb25Gb3JtTG9hZENvbXBsZXRlKCk6IFByb21pc2U8YW55PiB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBsaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBldmVyeSBOYXZpZ2F0aW9uRW5kIGV2ZW50LlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvbk5hdmlnYXRpb25FbmQoKTogdm9pZCB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVsb2FkIHRoZSBjb21wb25lbnQga2lja2luZyBvZmYgdGhlIG5nT25Jbml0IGFuZCBuZ0FmdGVyVmlld0luaXQgbGlmZWN5Y2xlIGhvb2tzLlxyXG4gICAqIEFueSBzdGF0ZSB0aGF0IG5lZWRzIHRvIGJlIHJlc2V0IHNob3VsZCBiZSBkb25lIHNvIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hZnRlclZpZXdJbml0Q29tcGxldGUgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xyXG5cclxuICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRpbmcpO1xyXG4gICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMub25Jbml0KCk7XHJcbiAgICB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBvdmVycmlkZGVuIGluIGEgZGVyaXZlZCBjbGFzcyB0aGlzIG1ldGhvZCB3aWxsIHN5bmMgdGhlIGZvcm0gc3RhdGVcclxuICAgKiBpbnRvIHRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgQVBJLiBUaGUgdmFsdWUgc2hvdWxkIG5vdFxyXG4gICAqIGFjdHVhbGx5IGJlIHNlbnQgdG8gdGhlIEFQSSB5ZXQuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGFwcGx5TW9kZWxVcGRhdGVzKCk6IFByb21pc2U8dm9pZD4geyB9O1xyXG5cclxuICAvKipcclxuICAgKiBTYXZlIHRoZSBtb2RlbCBzdGF0ZSB0byB0aGUgQVBJIGFuZCByZXR1cm4gYSBwcm9taXNlIHRoYXRcclxuICAgKiBjb250YWlucyB0aGUgdXBkYXRlZCBlbnRpdHlJRC4gVGhlIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkXHJcbiAgICogaWYgdGhlIHNhdmUgZmFpbHMgYW5kIGVycm9ycyBhbmQgdGhlIG92ZXJsYXkgc3RhdHVzIHdpbGwgYmUgdXBkYXRlZFxyXG4gICAqIGFjY29yZGluZ2x5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVUb0FwaSgpOiBQcm9taXNlPG51bWJlciB8IHZvaWQ+IHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIGFmdGVyIHRoZSBzYXZlIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LlxyXG4gICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZGVyaXZlZCBjbGFzcyB0byBuYXZpZ2F0ZVxyXG4gICAqIHRvIGEgcHJvcGVydGllcy9zdGF0dXMgcGFnZSBvciBlbWl0IGFwcHJvcHJpYXRlbHkgaWYgd2l0aGluIGEgZGlhbG9nXHJcbiAgICogQHBhcmFtIGVudGl0eUlkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uU2F2ZUNvbXBsZXRlKGVudGl0eUlkPzogbnVtYmVyKTogdm9pZCB7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzYXZlLiAgV2Ugd2lsbCBmaXJzdCB0b3VjaCBhbGwgY29udHJvbHMgdG8gc2hvdyB2YWxpZGF0aW9uIG1lc3NhZ2VzXHJcbiAgICogaWYgdGhlIGZvcm0gaXMgaW52YWxpZC4gIElmIHRoZSBmb3JtIGlzIHZhbGlkIHdlIHdpbGwgYXR0ZW1wdCB0byBzYXZlIGFuZCBhbnkgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWRcclxuICAgKiBiYWNrIHRvIHRoZSB1c2VyXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIG9uU2F2ZShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgZm9ybSBoYXMgcGVuZGluZyBhc3luYyB2YWxpZGF0b3JzLCB3YWl0IGZvciBpdCB0aGVtIHRvIGNvbXBsZXRlIGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAucGVuZGluZykge1xyXG4gICAgICBhd2FpdCB0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgIT09ICdQRU5ESU5HJyksXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT25seSBzaG93IHRoZSBiYW5uZXIgd2l0aCB0aGUgZ2VuZXJpYyBtZXNzYWdlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGhhc24ndCBhbHJlYWR5IHNldCBvbmVcclxuICAgICAgLy8gYnkgaW1wbGVtZW50aW5nIG9uU2F2ZSBmb3IgYWRkaXRpb25hbCB2YWxpZGF0aW9uXHJcbiAgICAgIGlmICh0aGlzLmVycm9ycyA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLnNob3dFcnJvckJhbm5lcih0aGlzLmRlZmF1bHRJbnZhbGlkRm9ybU1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zY3JvbGxDb250YWluZXJTZWxlY3Rvcikge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxTZXJ2aWNlLnNjcm9sbFRvSXRlbSh0aGlzLnNjcm9sbENvbnRhaW5lclNlbGVjdG9yISwgXCIubmctaW52YWxpZFwiKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gYXZhaWxhYmxlIHRvIHRyaWdnZXIgYSBzYXZlIGFuZCBieXBhc3MgdGhlIGZvcm0gdmFsaWRhdGlvbiBjaGVja3MuXHJcbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgdGhlIHVzZXIgY2hvb3NlcyBhIHJlbW92ZSBhY3Rpb24gZnJvbSB3aXRoaW4gYW4gZWRpdCBkaWFsb2cuIElmIHRoZSBkaWFsb2cgZm9ybSBpcyBpbnZhbGlkXHJcbiAgICogdGhhdCBpcyBubyBjb25jZXJuIHRvIHRoZSB1c2VyIGlmIHRoZXkgd2lzaCB0byByZW1vdmUgdGhlIGl0ZW0gdGhleSBhcmUgZWRpdGluZy5cclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgb25TYXZlV2l0aG91dFZhbGlkYXRlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0aGF0IHdpbGwgbG9nIGFuIGVycm9yIHRoYXQgaXMgcGFzc2VkIGluIHRvIHRoZSBjb25zb2xlXHJcbiAgICogQHBhcmFtIGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25FcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JTZXJ2aWNlLmxvZ0NvbnNvbGVFcnJvcihlcnJvcik7XHJcbiAgICB0aGlzLnNob3dFcnJvck92ZXJsYXkoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhbiBlcnJvciBtZXNzYWdlIGluIGEgd2hvbGUtcGFnZSBvdmVybGF5LiBUaGlzIHdpbGwgcHJldmVudCBhbnkgbW9yZVxyXG4gICAqIGludGVyYWN0aW9ucyB3aXRoIHRoZSBwYWdlLiBJdCBjYW4gdGFrZSBhIHN0cmluZyBlcnJvciBtZXNzYWdlIG9yIGEgcmF3IEFQSVxyXG4gICAqIGVycm9yIHRoYXQgbmVlZHMgdG8gYmUgcGFyc2VkLiBJZiB0aGUgQVBJIGVycm9yIGlzbid0IHNvbWV0aGluZyB3ZSBjYW4gaGFuZGxlXHJcbiAgICogYSBnZW5lcmljIG1lc3NhZ2UgaXMgc2hvd24gaW5zdGVhZFxyXG4gICAqIEBwYXJhbSB7KEVycm9yIHwgc3RyaW5nKX0gZXJyb3JcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd0Vycm9yT3ZlcmxheShlcnJvcjogRXJyb3IgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKS5zdWJzY3JpYmUoKHRyYW5zbGF0ZWRNZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdlcnJvcicsIHRyYW5zbGF0ZWRNZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhbiBlcnJvciBpbiB0aGUgYmFubmVyIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gIFRoaXMgd2lsbCBub3QgcHJvZHVjZSBhXHJcbiAgICogd2hvbGUtcGFnZSBvdmVybGF5IGxpa2UgdGhlIGZ1bmN0aW9uIHNob3dFcnJvciB3aWxsLiAgSXQgY2FuIHRha2UgYSBzdHJpbmcgZXJyb3IgbWVzc2FnZVxyXG4gICAqIG9yIHJhdyBBUEkgZXJyb3IgdGhhdCBuZWVkcyB0byBiZSBwYXJzZWQuICBJZiB0aGUgQVBJIGVycm9yIGlzbid0IHNvbWV0aGluZyB3ZSBjYW4gaGFuZGxlLFxyXG4gICAqIGEgZ2VuZXJpYyBtZXNzYWdlIChjdXN0b21pemFibGUgdmlhIHVua25vd25FcnJvckRlZmF1bHQpIGlzIHNob3duIGluc3RlYWQuXHJcbiAgICogQHBhcmFtIGVycm9yXHJcbiAgICogQHBhcmFtIHVua25vd25FcnJvckRlZmF1bHRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd0Vycm9yQmFubmVyKGVycm9yOiBFcnJvciB8IHN0cmluZywgdW5rbm93bkVycm9yRGVmYXVsdD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IsIHVua25vd25FcnJvckRlZmF1bHQpLnN1YnNjcmliZSgodHJhbnNsYXRlZE1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLl9lcnJvcnMgPSB0cmFuc2xhdGVkTWVzc2FnZTtcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIGFuZCB0cmFuc2xhdGVzIGFuIEFQSSBlcnJvciBvciBlcnJvciBzdHJpbmcuXHJcbiAgICogQHBhcmFtIGVcclxuICAgKiBAcGFyYW0gdW5rbm93bkVycm9yRGVmYXVsdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRFcnJvck1lc3NhZ2UoZTogRXJyb3IgfCBzdHJpbmcsIHVua25vd25FcnJvckRlZmF1bHQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IGV4dHJhY3RlZE1lc3NhZ2UgPSB0aGlzLmVycm9yU2VydmljZS5wYXJzZUFwaUVycm9yKGUsIHVua25vd25FcnJvckRlZmF1bHQpO1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoZXh0cmFjdGVkTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgZXJyb3JzIHRvIGhpZGUgdGhlIGVycm9ycyBiYW5uZXIuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGhpZGVFcnJvckJhbm5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Vycm9ycyA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIHRoZSBkaXNwbGF5IHN0YXR1cyB0byBvdmVybGF5IHRoZSB3aG9sZSBwYWdlIHdoaWxlIGxvYWRpbmcgb3Igc2F2aW5nXHJcbiAgICogYW5kIGNsZWFyIGl0IHdoZW4gdGhlIGZvcm0gaXMgcmVhZHlcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQHBhcmFtIHtQYWdlU3RhdHVzfSBzdGF0dXNcclxuICAgKiBAbWVtYmVyb2YgRm9ybUJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd1N0YXR1cyhzdGF0dXM6IFBhZ2VTdGF0dXMpIHtcclxuICAgIGxldCBrbm93blN0YXR1cyA9IFBhZ2VTdGF0dXNlc1tzdGF0dXNdO1xyXG4gICAgaWYgKGtub3duU3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cyhrbm93blN0YXR1cy5zdGF0dXMsIGtub3duU3RhdHVzLm1lc3NhZ2UsIHVuZGVmaW5lZCwga25vd25TdGF0dXMubm9EYXRhVGVtcGxhdGUsIGtub3duU3RhdHVzLm92ZXJsYXlDbGFzc0xpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZW50ZXIgYSBwZW5kaW5nIHN0YXR1cyBhbmQgZXhlY3V0ZSBhIGZ1bmN0aW9uIHRoYXQgb24gY29tcGxldGlvbiB3aWxsIHJldHVybiB0aGUgc3RhdHVzXHJcbiAgICogdG8gaGFzRGF0YS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdpdGhpbiB0aGUgY2FsbGJhY2sgYW4gZXJyb3IgYmFubmVyIGNhbiBiZSBzaG93bi5cclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gcGVuZGluZ01lc3NhZ2UgLSBvcHRpb25hbCBjdXN0b20gcGVuZGluZyBtZXNzYWdlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuQmxvY2tpbmdBY3Rpb24oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PiwgcGVuZGluZ01lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgdGhpcy5oaWRlRXJyb3JCYW5uZXIoKTtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsIHBlbmRpbmdNZXNzYWdlKTtcclxuXHJcbiAgICByZXR1cm4gY2FsbGJhY2soKS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yQmFubmVyKGVycm9yKTtcclxuICAgICAgLy8gVGhyb3cgdGhlIGVycm9yIGZvciBhbnkgZG93bnN0cmVhbSBjb21wb25lbnRzIHRoYXQgbWF5IGJlIGxpc3RlbmluZyBhbmQgbmVlZCB0byByZWFjdFxyXG4gICAgICAvLyB0byBhbnkgZXJyb3JzIGhhcHBlbmluZyB3aXRoaW4gdGhpcyBjYWxsYmFja1xyXG4gICAgICB0aHJvdyAoZXJyb3IpO1xyXG4gICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRlZCk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBQYXJzZXMgdGhlIHBhZ2UgaW5pdCByZXN1bHQgYW5kIHNldHMgdGhlIG5lY2Vzc2FyeSBwcm9wZXJ0aWVzIG9uIHRoZSBwYWdlXHJcbiAgICogQHBhcmFtIHJlc3VsdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VJbml0UmVzdWx0KHJlc3VsdDogUGFnZUluaXRSZXN1bHQpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICB0aGlzLnN1YlRpdGxlID0gcmVzdWx0LnN1YlRpdGxlO1xyXG4gICAgdGhpcy5zdWJUaXRsZVVybCA9IHJlc3VsdC5zdWJUaXRsZVVybDtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSByZXN1bHQuYnJlYWRjcnVtYnM7XHJcbiAgICB0aGlzLmhlbHAgPSByZXN1bHQuaGVscDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHRoZSBwYWdlIHN0YXR1cywgdHJpZ2dlcnMgdGhlIHNhdmUgYWN0aW9uIGFuZCBoYW5kbGVzIGVycm9ycyB0aHJvd24uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuU2F2aW5nKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5TW9kZWxVcGRhdGVzKCk7XHJcbiAgICAgIGxldCBlbnRpdHlJZCA9IGF3YWl0IHRoaXMuc2F2ZVRvQXBpKCkgfHwgLTE7XHJcblxyXG4gICAgICB0aGlzLl9lcnJvcnMgPSAnJztcclxuXHJcbiAgICAgIHRoaXMub25TYXZlQ29tcGxldGUoZW50aXR5SWQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy9jbGVhciB0aGUgXCJzYXZpbmdcIiBvdmVybGF5IGFuZCBzaG93IHRoZSBtZXNzYWdlIGF0IHRoZSB0b3Agb2YgdGhlIHZpZXcgdGhyb3VnaCB0aGUgZXJyb3JzIHByb3BlcnR5XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yQmFubmVyKGVycm9yLCB0aGlzLmRlZmF1bHRVbmtub3duU2F2ZUVycm9yKTtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgdGhlIHJvdXRlciBldmVudCBzdWJzY3JpcHRpb25zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRVcFJvdXRlclN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiAmJiAhdGhpcy5kZXN0cm95ZWQuY2xvc2VkKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblxyXG4gICAgICAvLyBSZWFjdCB0byBuYXZpZ2F0aW9uIGV2ZW50c1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxyXG4gICAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBjdXJyZW50VXJsOiBzdHJpbmcgPSAoPE5hdmlnYXRpb25FbmQ+ZSkudXJsO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zT25OYXZpZ2F0aW9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzVXJsLnNwbGl0KCc/JylbMF0gIT09IGN1cnJlbnRVcmwuc3BsaXQoJz8nKVswXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkVuZEhhbmRsZXIoKDxOYXZpZ2F0aW9uRW5kPmUpLnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzVXJsICE9PSBjdXJyZW50VXJsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kSGFuZGxlcigoPE5hdmlnYXRpb25FbmQ+ZSkudXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRpb25FbmRIYW5kbGVyKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZXZpb3VzVXJsID0gdXJsO1xyXG4gICAgdGhpcy5vbk5hdmlnYXRpb25FbmQoKTtcclxuICB9XHJcbn1cclxuIl19
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLWJhc2UvcGFnZS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxXQUFXLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUU1RCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNFLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFZLEVBQUUsQ0FBQztJQUc1QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQWdCLGlCQUFpQjtJQXdHckMsWUFBWSxRQUFrQjtRQXZHOUIsa0RBQWtEO1FBQ2xCLGNBQVMsR0FBRyxrQkFBa0IsQ0FBQztRQUUvRDs7V0FFRztRQUNJLFVBQUssR0FBWSxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFDSSxhQUFRLEdBQVksRUFBRSxDQUFDO1FBRTlCOztXQUVHO1FBQ0ksZ0JBQVcsR0FBWSxFQUFFLENBQUM7UUFFakM7O1dBRUc7UUFDSSxXQUFNLEdBQVksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBaUIzRDs7V0FFRztRQUNJLGNBQVMsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RDs7V0FFRztRQUNJLDhCQUF5QixHQUFXLHNCQUFzQixDQUFDO1FBRWxFOztXQUVHO1FBQ0ksNEJBQXVCLEdBQVcsNkJBQTZCLENBQUM7UUFFdkU7O1dBRUc7UUFDSSw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFFakQ7Ozs7V0FJRztRQUNJLHdDQUFtQyxHQUFZLEtBQUssQ0FBQztRQUVwRCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUVqQzs7V0FFRztRQUNJLGNBQVMsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUVwRDs7O1dBR0c7UUFDSywyQkFBc0IsR0FBd0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNuRSwwQkFBcUIsR0FBcUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBcUM3RTs7O1dBR0c7UUFDSyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBZDNCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFPRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxXQUFXLEtBQVcsQ0FBQztJQVUxQixLQUFLLENBQUMsUUFBUTtRQUNuQixJQUFJO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRWpDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN4QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO1FBQUEsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxLQUFLLENBQUMsZUFBZSxLQUFvQixDQUFDO0lBQUEsQ0FBQztJQUM5QyxLQUFLLENBQUMsZUFBZTtRQUMxQixJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFakMsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUV2QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRWhDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDakM7U0FFRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sS0FBSyxDQUFDLGtCQUFrQixLQUFtQixDQUFDO0lBRXREOztPQUVHO0lBQ08sZUFBZSxLQUFXLENBQUM7SUFFckM7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLEtBQUssQ0FBQyxpQkFBaUIsS0FBb0IsQ0FBQztJQUFBLENBQUM7SUFFdkQ7Ozs7O09BS0c7SUFDTyxLQUFLLENBQUMsU0FBUyxLQUE2QixDQUFDO0lBQUEsQ0FBQztJQUV4RDs7Ozs7T0FLRztJQUNPLGNBQWMsQ0FBQyxRQUFpQixJQUFVLENBQUM7SUFBQSxDQUFDO0lBRXREOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFZO1FBQzlCLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFbEMsMkZBQTJGO1FBQzNGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDMUIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsRUFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkI7YUFBTTtZQUNMLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQywrRkFBK0Y7WUFDL0YsbURBQW1EO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDdEQ7WUFFRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtnQkFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsdUJBQXdCLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ2hGLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFZO1FBQzdDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDTyxPQUFPLENBQUMsS0FBWTtRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNPLGdCQUFnQixDQUFDLEtBQXFCO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsaUJBQXlCLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sZUFBZSxDQUFDLEtBQXFCLEVBQUUsbUJBQTRCO1FBQzNFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsaUJBQXlCLEVBQUUsRUFBRTtZQUN2RixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxlQUFlLENBQUMsQ0FBaUIsRUFBRSxtQkFBNEI7UUFDdkUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxlQUFlO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxVQUFVLENBQUMsTUFBa0I7UUFDckMsSUFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3JJO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUE0QixFQUFFLGNBQXVCO1FBQ3JGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFakQsT0FBTyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1Qix3RkFBd0Y7WUFDeEYsK0NBQStDO1lBQy9DLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQUVGOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxNQUFzQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxJQUFJO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBRWxCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0I7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLG9HQUFvRztZQUNwRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUM3RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBRW5DLDZCQUE2QjtZQUM3QixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksYUFBYSxDQUFDLENBQ3hDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNkLElBQUk7b0JBQ0YsSUFBSSxVQUFVLEdBQTJCLENBQUUsQ0FBQyxHQUFHLENBQUM7b0JBRWhELElBQUksSUFBSSxDQUFDLG1DQUFtQyxFQUFFO3dCQUM1QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBaUIsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUNuRDtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFOzRCQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQWlCLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDbkQ7cUJBQ0Y7aUJBQ0Y7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDckI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEdBQVc7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OzhHQXJjbUIsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUzsrRkFHd0IsU0FBUztzQkFBeEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0nO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3JvdXRlci1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjcm9sbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Njcm9sbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscCB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvaGVscC9oZWxwLXR5cGVzJztcclxuaW1wb3J0IHsgU3BsYXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdlU3RhdHVzLCBQYWdlU3RhdHVzZXMgfSBmcm9tICcuLi9wYWdlLXN0YXR1c2VzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlSW5pdFJlc3VsdCB7XHJcbiAgdGl0bGU/OiBzdHJpbmcgPSAnJztcclxuICBzdWJUaXRsZT86IHN0cmluZyA9ICcnO1xyXG4gIHN1YlRpdGxlVXJsPzogc3RyaW5nID0gJyc7XHJcbiAgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcbiAgaGVscD86IEhlbHA7XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIERlZmF1bHQgY3NzIGNsYXNzZXMgYXBwbGllZCB0byBob3N0IGVsZW1lbnQgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJvdGVjdGVkIGNsYXNzTGlzdCA9ICdkLWZsZXggZmxleC1ncm93JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0bGUgZm9yIHRoZSBwYWdlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIHRpdGxlPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YiB0aXRsZSBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGU/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViIHRpdGxlIHVybCBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGVVcmw/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdHVzIG92ZXJsYXkgZm9yIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQnJlYWRjcnVtYnMgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3VsdCByZXR1cm5lZCBmcm9tIHRoZSBvbkluaXQgZnVuY3Rpb25cclxuICAgKi9cclxuICBwdWJsaWMgaW5pdFJlc3VsdCE6IFBhZ2VJbml0UmVzdWx0O1xyXG5cclxuICAvKipcclxuICAgKiBIZWxwIGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LCB3aGljaCBjYW4gb25seSBiZSBzZXQgdGhyb3VnaCBvbkluaXRcclxuICAgKi9cclxuICBwdWJsaWMgaGVscDogSGVscCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybSBncm91cCB0byBiZSB1c2VkIGlmIG5lZWRlZCBieSB0aGUgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgaW52YWxpZCBmb3JtIG1lc3NhZ2UsIG92ZXJyaWRlIGlmIGEgbW9yZSBzcGVjaWZpYyBtZXNzYWdlIGlzIG5lZWRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWZhdWx0SW52YWxpZEZvcm1NZXNzYWdlOiBzdHJpbmcgPSAnUGxlYXNlQ29ycmVjdEZvcm1fU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IHVua25vd24gc2F2ZSBlcnJvciBtZXNzYWdlLCBvdmVycmlkZSBpZiBhIG1vcmUgc3BlY2lmaWMgbWVzc2FnZSBpcyBuZWVkZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVmYXVsdFVua25vd25TYXZlRXJyb3I6IHN0cmluZyA9ICdQYWdlQmFzZVVua25vd25TYXZlRXJyb3JfU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG9wdCBvdXQgb2YgaGlkaW5nIHRoZSBzcGxhc2ggc2NyZWVuIHdoZW4gdGhlIHBhZ2UgaXMgbG9hZGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNraXBIaWRlU3BsYXNoT25Db21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHNldCB0byB0cnVlIGFueSBuYXZpZ2F0aW9uIGVuZCBldmVudHMgdGhhdCBhcmUgc3RyaWN0bHkgcXVlcnkgcGFyYW0gY2hhbmdlcyB3aWxsXHJcbiAgICogbm90IGNhbGwgdGhlIG9uTmF2aWdhdGlvbkVuZCBmdW5jdGlvbi4gVGhpcyBhbGxvd3MgcGFnZXMgdG8gY2hhbmdlIHRoZSB2aWV3IHdpdGggcXVlcnlcclxuICAgKiBwYXJhbXMgYW5kIG5vdCB0cmlnZ2VyIGEgZnVsbCByZWZyZXNoLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpZ25vcmVRdWVyeVBhcmFtc09uTmF2aWdhdGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHByZXZpb3VzVXJsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIHVuc3Vic2NyaWJlIGZyb20gb2JzZXJ2YWJsZXNcclxuICAgKi9cclxuICBwdWJsaWMgZGVzdHJveWVkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8ga25vdyB3aGVuIHRoZSBwYWdlIGhhcyBiZWVuIGxvYWRlZCwgdGhpcyB3aWxsIGJlIGNvbXBsZXRlZFxyXG4gICAqIGFmdGVyIG9uQWZ0ZXJWaWV3SW5pdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2FmdGVyVmlld0luaXRDb21wbGV0ZTogUmVwbGF5U3ViamVjdDx2b2lkPiA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbiAgcHVibGljIGFmdGVyVmlld0luaXRDb21wbGV0ZTogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuX2FmdGVyVmlld0luaXRDb21wbGV0ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgZGVmaW5lZCB0aGUgZm9ybSB3aWxsIGF1dG9tYXRpY2FsbHkgc2Nyb2xsIHRvIHRoZSBmaXJzdCBpbnZhbGlkIGZvcm0gY29udHJvbFxyXG4gICAqIGlmIGl0J3Mgb3V0c2lkZSBvZiB0aGUgdmlld1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzY3JvbGxDb250YWluZXJTZWxlY3Rvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHJvdXRlciBldmVudHMgTmF2aWdhdGlvbkVuZFxyXG4gICAqIFVzZWQgdG8ga25vdyBpZiBhbHJlYWR5IHN1YnNjcmliZWQgdG9cclxuICAgKi9cclxuICBwcml2YXRlIG5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbW1vbiBzZXJ2aWNlcyB1c2VkIGJ5IHBhZ2UtYmFzZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBlcnJvclNlcnZpY2U6IEVycm9yU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgc2Nyb2xsU2VydmljZTogU2Nyb2xsU2VydmljZTtcclxuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XHJcbiAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcclxuICBwcm90ZWN0ZWQgc3BsYXNoU2VydmljZTogU3BsYXNoU2VydmljZTtcclxuICBwcm90ZWN0ZWQgcm91dGVySGVscGVyOiBSb3V0ZXJIZWxwZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5lcnJvclNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRXJyb3JTZXJ2aWNlKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICAgIHRoaXMuc2Nyb2xsU2VydmljZSA9IGluamVjdG9yLmdldChTY3JvbGxTZXJ2aWNlKTtcclxuICAgIHRoaXMucm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlID0gaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIHRoaXMuc3BsYXNoU2VydmljZSA9IGluamVjdG9yLmdldChTcGxhc2hTZXJ2aWNlKTtcclxuICAgIHRoaXMucm91dGVySGVscGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlckhlbHBlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFcnJvcnMgdG8gYmUgc2hvd24gZm9yIHRoZSBjb21wb25lbnQuXHJcbiAgICogQXV0b21hdGljYWxseSBwb3B1bGF0ZWQgb24gcHJvbWlzZSByZWplY3Rpb24gZnJvbSBzYXZlIGFuZCBzaGFyZWQgd2l0aCB0aGUgVUkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZXJyb3JzOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZ2V0IGVycm9ycygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Vycm9ycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGxpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIEFuZ3VsYXIgbmdPbkluaXQgbGlmZWN5Y2xlIGhvb2suXHJcbiAgICogQ2FsbGVkIGJlZm9yZSBvbkluaXQgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZS4gQWRkIHNldHVwIGxvZ2ljIGhlcmUgdGhhdCBkb2VzXHJcbiAgICogbm90IG5lZWQgdG8gYmUgcnVuIG9uIGV2ZXJ5IHJlbG9hZC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25GaXJzdEluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluIHRoZSBkZXJpdmVkIGNsYXNzIGFzIHBhcnQgb2YgdGhlIEFuZ3VsYXIgbmdPbkluaXRcclxuICAgKiBsaWZlY3ljbGUgaG9vay4gSXQgbXVzdCBwcm92aWRlIGEgUGFnZUluaXRSZXN1bHQgYmFjayB0byB0aGUgYmFzZSBjbGFzcyB0byBwcm9wZXJseVxyXG4gICAqIHNldCB1cCB0aGUgcGFnZS5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25Jbml0KCk6IFByb21pc2U8UGFnZUluaXRSZXN1bHQ+O1xyXG4gIHByb3RlY3RlZCBpbml0UHJvbWlzZSE6IFByb21pc2U8UGFnZUluaXRSZXN1bHQ+O1xyXG5cclxuICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkaW5nKTtcclxuICAgICAgdGhpcy5zZXRVcFJvdXRlclN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgdGhpcy5vbkZpcnN0SW5pdCgpO1xyXG4gICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5vbkluaXQoKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdFByb21pc2U7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLnNwbGFzaFNlcnZpY2UuaGlkZVNwbGFzaCgpO1xyXG4gICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBqdXN0IGFmdGVyIHRoZSBBbmd1bGFyIExpZmVjeWNsZSBldmVudCBuZ09uQWZ0ZXJWaWV3SW5pdC5cclxuICAgKiBJdCBmaXJlcyBhZnRlciBhbGwgc3ViLWNvbXBvbmVudHMgaGF2ZSBnb25lIHRocm91Z2ggdGhlaXIgaW5pdGlhbGl6YXRpb24gcGhhc2UuXHJcbiAgICogSXQgaXMgaW4gdGhpcyBwaGFzZSB0aGF0IHRoZSB2aWV3IGNvbXBvbmVudHMgc2hvdWxkIGFscmVhZHkgZXhpc3QsIHNvIGEgZGVyaXZlZCBjbGFzcyBzaG91bGRcclxuICAgKiBsb2FkIGRhdGEgZnJvbSB0aGUgQVBJIHRvIHBvcHVsYXRlIGFueSB2aWV3IGNvbXBvbmVudHMuIFRoZSBwcm9taXNlIHRoYXRcclxuICAgKiBpcyByZXR1cm5lZCBtdXN0IG5vdCByZXNvbHZlIHVudGlsIGFsbCByZXF1aXJlZCBkYXRhIGhhcyBjb21wbGV0ZWx5IGxvYWRlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBvbkFmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7IH07XHJcbiAgcHVibGljIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGluaXRSZXN1bHQgPSBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xyXG4gICAgICB0aGlzLnBhcnNlSW5pdFJlc3VsdChpbml0UmVzdWx0KTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMub25BZnRlclZpZXdJbml0KCk7XHJcblxyXG4gICAgICB0aGlzLl9hZnRlclZpZXdJbml0Q29tcGxldGUubmV4dCgpO1xyXG4gICAgICB0aGlzLl9hZnRlclZpZXdJbml0Q29tcGxldGUuY29tcGxldGUoKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMub25Gb3JtTG9hZENvbXBsZXRlKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zdGF0dXMuc3RhdHVzID09PSAncGVuZGluZycpIHtcclxuICAgICAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkZWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuc2tpcEhpZGVTcGxhc2hPbkNvbXBsZXRlKSB7XHJcbiAgICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRoaXMuc3BsYXNoU2VydmljZS5oaWRlU3BsYXNoKCk7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGxpZmVjeWNsZSBtZXRob2QgdGhhdCBleGVjdXRlcyBvbmNlIGFsbCBkYXRhIGhhcyBiZWVuIGxvYWRlZFxyXG4gICAqIHRocm91Z2ggbmdBZnRlclZpZXdJbml0IGFuZCBmcm9tIGxvY2FsIHN0b3JhZ2UgaWYgcmVxdWlyZWQuXHJcbiAgICogSXQgaXMgYXQgdGhpcyBwb2ludCB0aGF0IHlvdSBjYW4gc3Vic2NyaWJlIHRvIGNoYW5nZXMgb24gdGhlIGZvcm1cclxuICAgKiByZWxpYWJseVxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqIEBtZW1iZXJvZiBQYWdlQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBvbkZvcm1Mb2FkQ29tcGxldGUoKTogUHJvbWlzZTxhbnk+IHsgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGxpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGV2ZXJ5IE5hdmlnYXRpb25FbmQgZXZlbnQuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uTmF2aWdhdGlvbkVuZCgpOiB2b2lkIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWxvYWQgdGhlIGNvbXBvbmVudCBraWNraW5nIG9mZiB0aGUgbmdPbkluaXQgYW5kIG5nQWZ0ZXJWaWV3SW5pdCBsaWZlY3ljbGUgaG9va3MuXHJcbiAgICogQW55IHN0YXRlIHRoYXQgbmVlZHMgdG8gYmUgcmVzZXQgc2hvdWxkIGJlIGRvbmUgc28gYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuXHJcbiAgICovXHJcbiAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FmdGVyVmlld0luaXRDb21wbGV0ZSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcblxyXG4gICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGluZyk7XHJcbiAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5vbkluaXQoKTtcclxuICAgIHRoaXMubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNzIHRoaXMgbWV0aG9kIHdpbGwgc3luYyB0aGUgZm9ybSBzdGF0ZVxyXG4gICAqIGludG8gdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBBUEkuIFRoZSB2YWx1ZSBzaG91bGQgbm90XHJcbiAgICogYWN0dWFsbHkgYmUgc2VudCB0byB0aGUgQVBJIHlldC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgYXBwbHlNb2RlbFVwZGF0ZXMoKTogUHJvbWlzZTx2b2lkPiB7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgdGhlIG1vZGVsIHN0YXRlIHRvIHRoZSBBUEkgYW5kIHJldHVybiBhIHByb21pc2UgdGhhdFxyXG4gICAqIGNvbnRhaW5zIHRoZSB1cGRhdGVkIGVudGl0eUlELiBUaGUgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWRcclxuICAgKiBpZiB0aGUgc2F2ZSBmYWlscyBhbmQgZXJyb3JzIGFuZCB0aGUgb3ZlcmxheSBzdGF0dXMgd2lsbCBiZSB1cGRhdGVkXHJcbiAgICogYWNjb3JkaW5nbHlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgc2F2ZVRvQXBpKCk6IFByb21pc2U8bnVtYmVyIHwgdm9pZD4geyB9O1xyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgYWZ0ZXIgdGhlIHNhdmUgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXHJcbiAgICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBkZXJpdmVkIGNsYXNzIHRvIG5hdmlnYXRlXHJcbiAgICogdG8gYSBwcm9wZXJ0aWVzL3N0YXR1cyBwYWdlIG9yIGVtaXQgYXBwcm9wcmlhdGVseSBpZiB3aXRoaW4gYSBkaWFsb2dcclxuICAgKiBAcGFyYW0gZW50aXR5SWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25TYXZlQ29tcGxldGUoZW50aXR5SWQ/OiBudW1iZXIpOiB2b2lkIHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHNhdmUuICBXZSB3aWxsIGZpcnN0IHRvdWNoIGFsbCBjb250cm9scyB0byBzaG93IHZhbGlkYXRpb24gbWVzc2FnZXNcclxuICAgKiBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLiAgSWYgdGhlIGZvcm0gaXMgdmFsaWQgd2Ugd2lsbCBhdHRlbXB0IHRvIHNhdmUgYW5kIGFueSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZFxyXG4gICAqIGJhY2sgdG8gdGhlIHVzZXJcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgb25TYXZlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gU2hvdyB0aGUgc2F2aW5nIG92ZXJsYXkgaW4gY2FzZSB3ZSBoYXZlIGFzeW5jIHZhbGlkYXRvcnMgaW4gcGxheVxyXG4gICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuU2F2aW5nKTtcclxuICAgIFxyXG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG5cclxuICAgIC8vIElmIHRoZSBmb3JtIGhhcyBwZW5kaW5nIGFzeW5jIHZhbGlkYXRvcnMsIHdhaXQgZm9yIGl0IHRoZW0gdG8gY29tcGxldGUgYmVmb3JlIHByb2NlZWRpbmdcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5wZW5kaW5nKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuZm9ybUdyb3VwLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ1BFTkRJTkcnKSxcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5zYXZlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBSZW1vdmUgdGhlIHNhdmluZyBvdmVybGF5IHRvIGRpc3BsYXkgYW55IGVycm9yc1xyXG4gICAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkZWQpO1xyXG4gICAgICBcclxuICAgICAgLy8gT25seSBzaG93IHRoZSBiYW5uZXIgd2l0aCB0aGUgZ2VuZXJpYyBtZXNzYWdlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGhhc24ndCBhbHJlYWR5IHNldCBvbmVcclxuICAgICAgLy8gYnkgaW1wbGVtZW50aW5nIG9uU2F2ZSBmb3IgYWRkaXRpb25hbCB2YWxpZGF0aW9uXHJcbiAgICAgIGlmICh0aGlzLmVycm9ycyA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLnNob3dFcnJvckJhbm5lcih0aGlzLmRlZmF1bHRJbnZhbGlkRm9ybU1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zY3JvbGxDb250YWluZXJTZWxlY3Rvcikge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxTZXJ2aWNlLnNjcm9sbFRvSXRlbSh0aGlzLnNjcm9sbENvbnRhaW5lclNlbGVjdG9yISwgXCIubmctaW52YWxpZFwiKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gYXZhaWxhYmxlIHRvIHRyaWdnZXIgYSBzYXZlIGFuZCBieXBhc3MgdGhlIGZvcm0gdmFsaWRhdGlvbiBjaGVja3MuXHJcbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgdGhlIHVzZXIgY2hvb3NlcyBhIHJlbW92ZSBhY3Rpb24gZnJvbSB3aXRoaW4gYW4gZWRpdCBkaWFsb2cuIElmIHRoZSBkaWFsb2cgZm9ybSBpcyBpbnZhbGlkXHJcbiAgICogdGhhdCBpcyBubyBjb25jZXJuIHRvIHRoZSB1c2VyIGlmIHRoZXkgd2lzaCB0byByZW1vdmUgdGhlIGl0ZW0gdGhleSBhcmUgZWRpdGluZy5cclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgb25TYXZlV2l0aG91dFZhbGlkYXRlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0aGF0IHdpbGwgbG9nIGFuIGVycm9yIHRoYXQgaXMgcGFzc2VkIGluIHRvIHRoZSBjb25zb2xlXHJcbiAgICogQHBhcmFtIGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25FcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JTZXJ2aWNlLmxvZ0NvbnNvbGVFcnJvcihlcnJvcik7XHJcbiAgICB0aGlzLnNob3dFcnJvck92ZXJsYXkoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhbiBlcnJvciBtZXNzYWdlIGluIGEgd2hvbGUtcGFnZSBvdmVybGF5LiBUaGlzIHdpbGwgcHJldmVudCBhbnkgbW9yZVxyXG4gICAqIGludGVyYWN0aW9ucyB3aXRoIHRoZSBwYWdlLiBJdCBjYW4gdGFrZSBhIHN0cmluZyBlcnJvciBtZXNzYWdlIG9yIGEgcmF3IEFQSVxyXG4gICAqIGVycm9yIHRoYXQgbmVlZHMgdG8gYmUgcGFyc2VkLiBJZiB0aGUgQVBJIGVycm9yIGlzbid0IHNvbWV0aGluZyB3ZSBjYW4gaGFuZGxlXHJcbiAgICogYSBnZW5lcmljIG1lc3NhZ2UgaXMgc2hvd24gaW5zdGVhZFxyXG4gICAqIEBwYXJhbSB7KEVycm9yIHwgc3RyaW5nKX0gZXJyb3JcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd0Vycm9yT3ZlcmxheShlcnJvcjogRXJyb3IgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKS5zdWJzY3JpYmUoKHRyYW5zbGF0ZWRNZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdlcnJvcicsIHRyYW5zbGF0ZWRNZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhbiBlcnJvciBpbiB0aGUgYmFubmVyIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4gIFRoaXMgd2lsbCBub3QgcHJvZHVjZSBhXHJcbiAgICogd2hvbGUtcGFnZSBvdmVybGF5IGxpa2UgdGhlIGZ1bmN0aW9uIHNob3dFcnJvciB3aWxsLiAgSXQgY2FuIHRha2UgYSBzdHJpbmcgZXJyb3IgbWVzc2FnZVxyXG4gICAqIG9yIHJhdyBBUEkgZXJyb3IgdGhhdCBuZWVkcyB0byBiZSBwYXJzZWQuICBJZiB0aGUgQVBJIGVycm9yIGlzbid0IHNvbWV0aGluZyB3ZSBjYW4gaGFuZGxlLFxyXG4gICAqIGEgZ2VuZXJpYyBtZXNzYWdlIChjdXN0b21pemFibGUgdmlhIHVua25vd25FcnJvckRlZmF1bHQpIGlzIHNob3duIGluc3RlYWQuXHJcbiAgICogQHBhcmFtIGVycm9yXHJcbiAgICogQHBhcmFtIHVua25vd25FcnJvckRlZmF1bHRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd0Vycm9yQmFubmVyKGVycm9yOiBFcnJvciB8IHN0cmluZywgdW5rbm93bkVycm9yRGVmYXVsdD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IsIHVua25vd25FcnJvckRlZmF1bHQpLnN1YnNjcmliZSgodHJhbnNsYXRlZE1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLl9lcnJvcnMgPSB0cmFuc2xhdGVkTWVzc2FnZTtcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIGFuZCB0cmFuc2xhdGVzIGFuIEFQSSBlcnJvciBvciBlcnJvciBzdHJpbmcuXHJcbiAgICogQHBhcmFtIGVcclxuICAgKiBAcGFyYW0gdW5rbm93bkVycm9yRGVmYXVsdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRFcnJvck1lc3NhZ2UoZTogRXJyb3IgfCBzdHJpbmcsIHVua25vd25FcnJvckRlZmF1bHQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IGV4dHJhY3RlZE1lc3NhZ2UgPSB0aGlzLmVycm9yU2VydmljZS5wYXJzZUFwaUVycm9yKGUsIHVua25vd25FcnJvckRlZmF1bHQpO1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoZXh0cmFjdGVkTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgZXJyb3JzIHRvIGhpZGUgdGhlIGVycm9ycyBiYW5uZXIuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGhpZGVFcnJvckJhbm5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Vycm9ycyA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIHRoZSBkaXNwbGF5IHN0YXR1cyB0byBvdmVybGF5IHRoZSB3aG9sZSBwYWdlIHdoaWxlIGxvYWRpbmcgb3Igc2F2aW5nXHJcbiAgICogYW5kIGNsZWFyIGl0IHdoZW4gdGhlIGZvcm0gaXMgcmVhZHlcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQHBhcmFtIHtQYWdlU3RhdHVzfSBzdGF0dXNcclxuICAgKiBAbWVtYmVyb2YgRm9ybUJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd1N0YXR1cyhzdGF0dXM6IFBhZ2VTdGF0dXMpIHtcclxuICAgIGxldCBrbm93blN0YXR1cyA9IFBhZ2VTdGF0dXNlc1tzdGF0dXNdO1xyXG4gICAgaWYgKGtub3duU3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cyhrbm93blN0YXR1cy5zdGF0dXMsIGtub3duU3RhdHVzLm1lc3NhZ2UsIHVuZGVmaW5lZCwga25vd25TdGF0dXMubm9EYXRhVGVtcGxhdGUsIGtub3duU3RhdHVzLm92ZXJsYXlDbGFzc0xpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZW50ZXIgYSBwZW5kaW5nIHN0YXR1cyBhbmQgZXhlY3V0ZSBhIGZ1bmN0aW9uIHRoYXQgb24gY29tcGxldGlvbiB3aWxsIHJldHVybiB0aGUgc3RhdHVzXHJcbiAgICogdG8gaGFzRGF0YS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdpdGhpbiB0aGUgY2FsbGJhY2sgYW4gZXJyb3IgYmFubmVyIGNhbiBiZSBzaG93bi5cclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gcGVuZGluZ01lc3NhZ2UgLSBvcHRpb25hbCBjdXN0b20gcGVuZGluZyBtZXNzYWdlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuQmxvY2tpbmdBY3Rpb24oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PiwgcGVuZGluZ01lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgdGhpcy5oaWRlRXJyb3JCYW5uZXIoKTtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsIHBlbmRpbmdNZXNzYWdlKTtcclxuXHJcbiAgICByZXR1cm4gY2FsbGJhY2soKS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yQmFubmVyKGVycm9yKTtcclxuICAgICAgLy8gVGhyb3cgdGhlIGVycm9yIGZvciBhbnkgZG93bnN0cmVhbSBjb21wb25lbnRzIHRoYXQgbWF5IGJlIGxpc3RlbmluZyBhbmQgbmVlZCB0byByZWFjdFxyXG4gICAgICAvLyB0byBhbnkgZXJyb3JzIGhhcHBlbmluZyB3aXRoaW4gdGhpcyBjYWxsYmFja1xyXG4gICAgICB0aHJvdyAoZXJyb3IpO1xyXG4gICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRlZCk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBQYXJzZXMgdGhlIHBhZ2UgaW5pdCByZXN1bHQgYW5kIHNldHMgdGhlIG5lY2Vzc2FyeSBwcm9wZXJ0aWVzIG9uIHRoZSBwYWdlXHJcbiAgICogQHBhcmFtIHJlc3VsdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VJbml0UmVzdWx0KHJlc3VsdDogUGFnZUluaXRSZXN1bHQpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICB0aGlzLnN1YlRpdGxlID0gcmVzdWx0LnN1YlRpdGxlO1xyXG4gICAgdGhpcy5zdWJUaXRsZVVybCA9IHJlc3VsdC5zdWJUaXRsZVVybDtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSByZXN1bHQuYnJlYWRjcnVtYnM7XHJcbiAgICB0aGlzLmhlbHAgPSByZXN1bHQuaGVscDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHRoZSBwYWdlIHN0YXR1cywgdHJpZ2dlcnMgdGhlIHNhdmUgYWN0aW9uIGFuZCBoYW5kbGVzIGVycm9ycyB0aHJvd24uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuU2F2aW5nKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5TW9kZWxVcGRhdGVzKCk7XHJcbiAgICAgIGxldCBlbnRpdHlJZCA9IGF3YWl0IHRoaXMuc2F2ZVRvQXBpKCkgfHwgLTE7XHJcblxyXG4gICAgICB0aGlzLl9lcnJvcnMgPSAnJztcclxuXHJcbiAgICAgIHRoaXMub25TYXZlQ29tcGxldGUoZW50aXR5SWQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy9jbGVhciB0aGUgXCJzYXZpbmdcIiBvdmVybGF5IGFuZCBzaG93IHRoZSBtZXNzYWdlIGF0IHRoZSB0b3Agb2YgdGhlIHZpZXcgdGhyb3VnaCB0aGUgZXJyb3JzIHByb3BlcnR5XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yQmFubmVyKGVycm9yLCB0aGlzLmRlZmF1bHRVbmtub3duU2F2ZUVycm9yKTtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgdGhlIHJvdXRlciBldmVudCBzdWJzY3JpcHRpb25zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRVcFJvdXRlclN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiAmJiAhdGhpcy5kZXN0cm95ZWQuY2xvc2VkKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblxyXG4gICAgICAvLyBSZWFjdCB0byBuYXZpZ2F0aW9uIGV2ZW50c1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxyXG4gICAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBjdXJyZW50VXJsOiBzdHJpbmcgPSAoPE5hdmlnYXRpb25FbmQ+ZSkudXJsO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zT25OYXZpZ2F0aW9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzVXJsLnNwbGl0KCc/JylbMF0gIT09IGN1cnJlbnRVcmwuc3BsaXQoJz8nKVswXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkVuZEhhbmRsZXIoKDxOYXZpZ2F0aW9uRW5kPmUpLnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzVXJsICE9PSBjdXJyZW50VXJsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kSGFuZGxlcigoPE5hdmlnYXRpb25FbmQ+ZSkudXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRpb25FbmRIYW5kbGVyKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZXZpb3VzVXJsID0gdXJsO1xyXG4gICAgdGhpcy5vbk5hdmlnYXRpb25FbmQoKTtcclxuICB9XHJcbn1cclxuIl19
|
@@ -4137,8 +4137,8 @@ class FileUploadComponent extends FormControlBase {
|
|
4137
4137
|
// static class to create the form group from a parent component
|
4138
4138
|
static getFormModel(validators, disabled = false, fileValidators) {
|
4139
4139
|
let formGroup = new FormGroup({
|
4140
|
-
file: new FormControl({ value: null, disabled: disabled }, validators),
|
4141
|
-
name: new FormControl({ value: null, disabled: disabled },
|
4140
|
+
file: new FormControl({ value: null, disabled: disabled }, { validators: validators, asyncValidators: fileValidators }),
|
4141
|
+
name: new FormControl({ value: null, disabled: disabled }, validators),
|
4142
4142
|
base64FileString: new FormControl(null),
|
4143
4143
|
uploadResult: new FormControl(null),
|
4144
4144
|
});
|
@@ -4148,11 +4148,11 @@ class FileUploadComponent extends FormControlBase {
|
|
4148
4148
|
return formGroup;
|
4149
4149
|
}
|
4150
4150
|
static getFileValidator(callback) {
|
4151
|
-
return (
|
4152
|
-
var _a
|
4153
|
-
if (
|
4154
|
-
let file =
|
4155
|
-
let base64 = (
|
4151
|
+
return (control) => __awaiter(this, void 0, void 0, function* () {
|
4152
|
+
var _a;
|
4153
|
+
if (control.value && control.parent) {
|
4154
|
+
let file = control.value;
|
4155
|
+
let base64 = (_a = control.parent.get('base64FileString')) === null || _a === void 0 ? void 0 : _a.value;
|
4156
4156
|
return yield callback(file, base64);
|
4157
4157
|
}
|
4158
4158
|
return null;
|
@@ -4190,7 +4190,7 @@ class FileUploadComponent extends FormControlBase {
|
|
4190
4190
|
this.updateFileTypeAccept();
|
4191
4191
|
}
|
4192
4192
|
ngOnInit() {
|
4193
|
-
var _a, _b;
|
4193
|
+
var _a, _b, _c;
|
4194
4194
|
super.ngOnInit();
|
4195
4195
|
// Watch for name to change, if the value is cleared we will clear the other
|
4196
4196
|
// supporting model properties. The name can be cleared by the user manually or via
|
@@ -4204,6 +4204,12 @@ class FileUploadComponent extends FormControlBase {
|
|
4204
4204
|
});
|
4205
4205
|
}
|
4206
4206
|
});
|
4207
|
+
// Sync errors from the file control to the name control whenever the file control status changes
|
4208
|
+
(_c = this.formModel.get('file')) === null || _c === void 0 ? void 0 : _c.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(() => {
|
4209
|
+
var _a, _b, _c;
|
4210
|
+
const errors = (_b = (_a = this.formModel.get('file')) === null || _a === void 0 ? void 0 : _a.errors) !== null && _b !== void 0 ? _b : null;
|
4211
|
+
(_c = this.formModel.get('name')) === null || _c === void 0 ? void 0 : _c.setErrors(errors);
|
4212
|
+
});
|
4207
4213
|
}
|
4208
4214
|
fileChange(files) {
|
4209
4215
|
return __awaiter(this, void 0, void 0, function* () {
|
@@ -10711,6 +10717,8 @@ class PageBaseComponent {
|
|
10711
10717
|
*/
|
10712
10718
|
onSave(event) {
|
10713
10719
|
return __awaiter(this, void 0, void 0, function* () {
|
10720
|
+
// Show the saving overlay in case we have async validators in play
|
10721
|
+
this.showStatus(PageStatus.Saving);
|
10714
10722
|
this.formGroup.markAllAsTouched();
|
10715
10723
|
// If the form has pending async validators, wait for it them to complete before proceeding
|
10716
10724
|
if (this.formGroup.pending) {
|
@@ -10720,6 +10728,8 @@ class PageBaseComponent {
|
|
10720
10728
|
yield this.save();
|
10721
10729
|
}
|
10722
10730
|
else {
|
10731
|
+
// Remove the saving overlay to display any errors
|
10732
|
+
this.showStatus(PageStatus.Loaded);
|
10723
10733
|
// Only show the banner with the generic message if the parent component hasn't already set one
|
10724
10734
|
// by implementing onSave for additional validation
|
10725
10735
|
if (this.errors === '') {
|