@rangertechnologies/ngnxt 2.1.32 → 2.1.33

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.
@@ -80,11 +80,11 @@ export class CustomRadioComponent {
80
80
  }
81
81
  }
82
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomRadioComponent, deps: [{ token: i1.ChangeService }, { token: i2.DataService }, { token: i3.I18nService }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomRadioComponent, selector: "app-custom-radio", inputs: { options: "options", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"custom-radio-container\">\n <div\n *ngFor=\"let option of options\"\n [class]=\"invalidFieldIds.includes(id) || error ? 'custom-radio-option invalid' : 'custom-radio-option'\"\n >\n <input\n type=\"radio\"\n [id]=\"apiMeta !== undefined ? option[labelField] : option.Value__c \"\n [checked] = \"selectedValue == option.Value__c \"\n [name]=\"id\"\n [value]=\"selectedValue\"\n (change)=\"radioChange($event)\"\n [disabled]=\"readOnly\"\n />\n <label [for]=\"apiMeta !== undefined ? option[labelField] : option.Value__c\">{{ apiMeta !== undefined ? option[labelField] : option.Value__c }}</label>\n </div>\n <span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{ errorMessage }}</span>\n </div>\n ", styles: [".custom-radio-option{display:flex;flex-direction:row;margin-bottom:5px}input[type=radio]{margin-bottom:5px;width:auto}label{margin-left:15px}.custom-radio-option.invalid label{color:red}.error-msg{color:red;font-size:12px;margin-top:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomRadioComponent, selector: "app-custom-radio", inputs: { options: "options", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"custom-radio-container\">\n <div\n *ngFor=\"let option of options\"\n [class]=\"invalidFieldIds.includes(id) || error ? 'custom-radio-option invalid' : 'custom-radio-option'\"\n >\n <input\n type=\"radio\"\n [id]=\"apiMeta !== undefined ? option[labelField] : option.Value__c \"\n [checked] = \"selectedValue == option.Value__c \"\n [name]=\"id\"\n [value]=\"selectedValue\"\n (change)=\"radioChange($event)\"\n [disabled]=\"readOnly\"\n />\n <label class=\"nxt-radio-label\" [for]=\"apiMeta !== undefined ? option[labelField] : option.Value__c\">{{ apiMeta !== undefined ? option[labelField] : option.Value__c }}</label>\n </div>\n <span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{ errorMessage }}</span>\n </div>\n ", styles: [".custom-radio-option{display:flex;flex-direction:row;margin-bottom:5px}input[type=radio]{width:auto}.nxt-radio-label{margin-left:15px;margin-bottom:0}.custom-radio-option.invalid label{color:red}.error-msg{color:red;font-size:12px;margin-top:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
84
84
  }
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomRadioComponent, decorators: [{
86
86
  type: Component,
87
- args: [{ selector: 'app-custom-radio', template: "<div class=\"custom-radio-container\">\n <div\n *ngFor=\"let option of options\"\n [class]=\"invalidFieldIds.includes(id) || error ? 'custom-radio-option invalid' : 'custom-radio-option'\"\n >\n <input\n type=\"radio\"\n [id]=\"apiMeta !== undefined ? option[labelField] : option.Value__c \"\n [checked] = \"selectedValue == option.Value__c \"\n [name]=\"id\"\n [value]=\"selectedValue\"\n (change)=\"radioChange($event)\"\n [disabled]=\"readOnly\"\n />\n <label [for]=\"apiMeta !== undefined ? option[labelField] : option.Value__c\">{{ apiMeta !== undefined ? option[labelField] : option.Value__c }}</label>\n </div>\n <span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{ errorMessage }}</span>\n </div>\n ", styles: [".custom-radio-option{display:flex;flex-direction:row;margin-bottom:5px}input[type=radio]{margin-bottom:5px;width:auto}label{margin-left:15px}.custom-radio-option.invalid label{color:red}.error-msg{color:red;font-size:12px;margin-top:5px}\n"] }]
87
+ args: [{ selector: 'app-custom-radio', template: "<div class=\"custom-radio-container\">\n <div\n *ngFor=\"let option of options\"\n [class]=\"invalidFieldIds.includes(id) || error ? 'custom-radio-option invalid' : 'custom-radio-option'\"\n >\n <input\n type=\"radio\"\n [id]=\"apiMeta !== undefined ? option[labelField] : option.Value__c \"\n [checked] = \"selectedValue == option.Value__c \"\n [name]=\"id\"\n [value]=\"selectedValue\"\n (change)=\"radioChange($event)\"\n [disabled]=\"readOnly\"\n />\n <label class=\"nxt-radio-label\" [for]=\"apiMeta !== undefined ? option[labelField] : option.Value__c\">{{ apiMeta !== undefined ? option[labelField] : option.Value__c }}</label>\n </div>\n <span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{ errorMessage }}</span>\n </div>\n ", styles: [".custom-radio-option{display:flex;flex-direction:row;margin-bottom:5px}input[type=radio]{width:auto}.nxt-radio-label{margin-left:15px;margin-bottom:0}.custom-radio-option.invalid label{color:red}.error-msg{color:red;font-size:12px;margin-top:5px}\n"] }]
88
88
  }], ctorParameters: function () { return [{ type: i1.ChangeService }, { type: i2.DataService }, { type: i3.I18nService }]; }, propDecorators: { options: [{
89
89
  type: Input
90
90
  }], apiMeta: [{
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
110
110
  }], valueChange: [{
111
111
  type: Output
112
112
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1yYWRpby9jdXN0b20tcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXJhZGlvL2N1c3RvbS1yYWRpby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBWTFELE1BQU0sT0FBTyxvQkFBb0I7SUFxQnJCO0lBQ0E7SUFDRDtJQXJCQSxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsV0FBVyxDQUFVO0lBQ3JCLEVBQUUsQ0FBUztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsWUFBWSxDQUFTO0lBQ3JCLEtBQUssQ0FBTTtJQUNYLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsY0FBYyxDQUFTO0lBQ3ZCLEtBQUssQ0FBUztJQUNiLFdBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDdkYsZUFBZSxHQUFhLEVBQUUsQ0FBQztJQUV4QixVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFTO0lBQzFCLFlBQVksQ0FBZTtJQUUzQixZQUNVLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRS9CLElBQUksQ0FB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QUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO3dHQS9FVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw2V0NiakMsc3pCQWtCRTs7NEZETFcsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjt3SkFNbkIsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2NoYW5nZVdyYXBwZXInO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21SYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYXBpTWV0YTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb2dyZXNzQmFyOiBib29sZWFuO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3I6IGFueTtcbiAgQElucHV0KCkgZnJvbVNoZW5nZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVmZXJlbmNlRmllbGQ6IHN0cmluZztcbiAgQElucHV0KCkgdG9rZW46IHN0cmluZztcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+KCk7XG4gIGludmFsaWRGaWVsZElkczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgbGFiZWxGaWVsZDogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0VmFsaWRhdGUkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbnZhbGlkRmllbGRJZHMucHVzaChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICAgIHRoaXMubGFiZWxGaWVsZCA9IGFwaU9iai5maWVsZDtcblxuICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGxldCByZXNwb25zZXM7XG4gICAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLCBhcGlPYmoudmFyaWFibGUpO1xuICAgICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZXMgPSBhcGlSZXNwb25zZTtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBsZXQgc291cmNlSWQgPSBhcGlPYmouc291cmNlUXVlc3Rpb25JZDtcbiAgICAgIGlmIChzb3VyY2VJZCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBhcGlPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW2FwaU9iai52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICB2YWx1ZVsnbmFtZSddID0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmFkaW9DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKGFwaU9iai5zb3VyY2VRdWVzdGlvbklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmFkaW9DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpO1xuICAgIGNoYW5nZS5mcm9tUXVlc3Rpb25JZCA9IHRoaXMuaWQ7XG4gICAgY2hhbmdlLnZhbHVlT2JqID0gZXZlbnQudGFyZ2V0Py5pZCA/IGV2ZW50LnRhcmdldD8uaWQgOiAnJztcbiAgICBjaGFuZ2Uuc2VsZWN0ZWRPYmogPSBldmVudCA/IGV2ZW50W3RoaXMubGFiZWxGaWVsZF0gOiAnJztcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2hhbmdlKTtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzID0gW107XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjdXN0b20tcmFkaW8tY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgIFtjbGFzc109XCJpbnZhbGlkRmllbGRJZHMuaW5jbHVkZXMoaWQpIHx8IGVycm9yID8gJ2N1c3RvbS1yYWRpby1vcHRpb24gaW52YWxpZCcgOiAnY3VzdG9tLXJhZGlvLW9wdGlvbidcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBbaWRdPVwiYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uLlZhbHVlX19jIFwiXG4gICAgICAgIFtjaGVja2VkXSA9IFwic2VsZWN0ZWRWYWx1ZSA9PSBvcHRpb24uVmFsdWVfX2MgXCJcbiAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwicmFkaW9DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZWFkT25seVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uLlZhbHVlX19jXCI+e3sgYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uLlZhbHVlX19jICB9fTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJlcnJvciB8fCBpbnZhbGlkRmllbGRJZHMuaW5jbHVkZXMoaWQpXCIgY2xhc3M9XCJlcnJvci1tc2dcIj57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW4+XG4gIDwvZGl2PlxuICAiXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1yYWRpby9jdXN0b20tcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXJhZGlvL2N1c3RvbS1yYWRpby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBWTFELE1BQU0sT0FBTyxvQkFBb0I7SUFxQnJCO0lBQ0E7SUFDRDtJQXJCQSxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsV0FBVyxDQUFVO0lBQ3JCLEVBQUUsQ0FBUztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsWUFBWSxDQUFTO0lBQ3JCLEtBQUssQ0FBTTtJQUNYLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsY0FBYyxDQUFTO0lBQ3ZCLEtBQUssQ0FBUztJQUNiLFdBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDdkYsZUFBZSxHQUFhLEVBQUUsQ0FBQztJQUV4QixVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFTO0lBQzFCLFlBQVksQ0FBZTtJQUUzQixZQUNVLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRS9CLElBQUksQ0FB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QUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO3dHQS9FVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw2V0NiakMsZzFCQWtCRTs7NEZETFcsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjt3SkFNbkIsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2NoYW5nZVdyYXBwZXInO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXJhZGlvLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21SYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYXBpTWV0YTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb2dyZXNzQmFyOiBib29sZWFuO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3I6IGFueTtcbiAgQElucHV0KCkgZnJvbVNoZW5nZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVmZXJlbmNlRmllbGQ6IHN0cmluZztcbiAgQElucHV0KCkgdG9rZW46IHN0cmluZztcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+KCk7XG4gIGludmFsaWRGaWVsZElkczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgbGFiZWxGaWVsZDogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0VmFsaWRhdGUkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbnZhbGlkRmllbGRJZHMucHVzaChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcbiAgICAgIHRoaXMubGFiZWxGaWVsZCA9IGFwaU9iai5maWVsZDtcblxuICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGxldCByZXNwb25zZXM7XG4gICAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLCBhcGlPYmoudmFyaWFibGUpO1xuICAgICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZXMgPSBhcGlSZXNwb25zZTtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBsZXQgc291cmNlSWQgPSBhcGlPYmouc291cmNlUXVlc3Rpb25JZDtcbiAgICAgIGlmIChzb3VyY2VJZCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBhcGlPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW2FwaU9iai52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICB2YWx1ZVsnbmFtZSddID0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmFkaW9DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKGFwaU9iai5zb3VyY2VRdWVzdGlvbklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmFkaW9DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpO1xuICAgIGNoYW5nZS5mcm9tUXVlc3Rpb25JZCA9IHRoaXMuaWQ7XG4gICAgY2hhbmdlLnZhbHVlT2JqID0gZXZlbnQudGFyZ2V0Py5pZCA/IGV2ZW50LnRhcmdldD8uaWQgOiAnJztcbiAgICBjaGFuZ2Uuc2VsZWN0ZWRPYmogPSBldmVudCA/IGV2ZW50W3RoaXMubGFiZWxGaWVsZF0gOiAnJztcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2hhbmdlKTtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzID0gW107XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjdXN0b20tcmFkaW8tY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgIFtjbGFzc109XCJpbnZhbGlkRmllbGRJZHMuaW5jbHVkZXMoaWQpIHx8IGVycm9yID8gJ2N1c3RvbS1yYWRpby1vcHRpb24gaW52YWxpZCcgOiAnY3VzdG9tLXJhZGlvLW9wdGlvbidcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBbaWRdPVwiYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uLlZhbHVlX19jIFwiXG4gICAgICAgIFtjaGVja2VkXSA9IFwic2VsZWN0ZWRWYWx1ZSA9PSBvcHRpb24uVmFsdWVfX2MgXCJcbiAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwicmFkaW9DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZWFkT25seVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibnh0LXJhZGlvLWxhYmVsXCIgW2Zvcl09XCJhcGlNZXRhICE9PSB1bmRlZmluZWQgPyBvcHRpb25bbGFiZWxGaWVsZF0gOiBvcHRpb24uVmFsdWVfX2NcIj57eyBhcGlNZXRhICE9PSB1bmRlZmluZWQgPyBvcHRpb25bbGFiZWxGaWVsZF0gOiBvcHRpb24uVmFsdWVfX2MgIH19PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiAqbmdJZj1cImVycm9yIHx8IGludmFsaWRGaWVsZElkcy5pbmNsdWRlcyhpZClcIiBjbGFzcz1cImVycm9yLW1zZ1wiPnt7IGVycm9yTWVzc2FnZSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gICJdfQ==
@@ -203,11 +203,11 @@ export class FileUploadComponent {
203
203
  }
204
204
  }
205
205
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.SharedService }, { token: i2.DataService }, { token: i3.DomSanitizer }, { token: i4.I18nService }], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: FileUploadComponent, selector: "app-file-upload", inputs: { allFiles: "allFiles", limitFileUploading: "limitFileUploading", isDeleteFileButtonVisible: "isDeleteFileButtonVisible", isShowNoFileIcon: "isShowNoFileIcon", tableFile: "tableFile", question: "question", error: "error" }, outputs: { selectedFileData: "selectedFileData", deletedFileData: "deletedFileData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\" class=\"row\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"\n [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= copyOfFileUploadingLimit }\" [disabled]=\"copyOfInputAllFiles?.length >= copyOfFileUploadingLimit\"\n >Choose Files</button>\n\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" accept=\"*\" style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.Error_Message__c}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;margin-left:10px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#ffffff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] });
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: FileUploadComponent, selector: "app-file-upload", inputs: { allFiles: "allFiles", limitFileUploading: "limitFileUploading", isDeleteFileButtonVisible: "isDeleteFileButtonVisible", isShowNoFileIcon: "isShowNoFileIcon", tableFile: "tableFile", question: "question", error: "error" }, outputs: { selectedFileData: "selectedFileData", deletedFileData: "deletedFileData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"\n [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= copyOfFileUploadingLimit }\" [disabled]=\"copyOfInputAllFiles?.length >= copyOfFileUploadingLimit\"\n >Choose Files</button>\n\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" accept=\"*\" style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.Error_Message__c}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#ffffff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] });
207
207
  }
208
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: FileUploadComponent, decorators: [{
209
209
  type: Component,
210
- args: [{ selector: 'app-file-upload', template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\" class=\"row\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"\n [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= copyOfFileUploadingLimit }\" [disabled]=\"copyOfInputAllFiles?.length >= copyOfFileUploadingLimit\"\n >Choose Files</button>\n\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" accept=\"*\" style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.Error_Message__c}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;margin-left:10px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#ffffff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"] }]
210
+ args: [{ selector: 'app-file-upload', template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"\n [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= copyOfFileUploadingLimit }\" [disabled]=\"copyOfInputAllFiles?.length >= copyOfFileUploadingLimit\"\n >Choose Files</button>\n\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" accept=\"*\" style=\"display:none;\"\n (change) = uploadMultipleFiles($event)\n />\n </label>\n<!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.Error_Message__c}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>\n\n\n", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#ffffff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"] }]
211
211
  }], ctorParameters: function () { return [{ type: i1.SharedService }, { type: i2.DataService }, { type: i3.DomSanitizer }, { type: i4.I18nService }]; }, propDecorators: { selectedFileData: [{
212
212
  type: Output
213
213
  }], deletedFileData: [{
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
227
227
  }], error: [{
228
228
  type: Input
229
229
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV2pILE1BQU0sT0FBTyxtQkFBbUI7SUFtQlY7SUFBdUM7SUFBaUM7SUFDbkY7SUFuQkMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUM3QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzQyxRQUFRLENBQUM7SUFDVCxrQkFBa0IsQ0FBQztJQUNuQix5QkFBeUIsQ0FBQztJQUMxQixnQkFBZ0IsQ0FBQztJQUNqQixTQUFTLENBQUMsQ0FBRSx5QkFBeUI7SUFDckMsUUFBUSxDQUFDO0lBQ1QsS0FBSyxDQUFLO0lBRVoscUJBQXFCLEdBQWEsRUFBRSxDQUFDO0lBQ3JDLG1CQUFtQixDQUFDO0lBQ3BCLHdCQUF3QixDQUFDO0lBQ3pCLE9BQU8sQ0FBQztJQUNSLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFdBQVcsQ0FBTTtJQUNqQixZQUFvQixhQUE0QixFQUFXLFdBQXdCLEVBQVMsU0FBdUIsRUFDMUcsV0FBd0I7UUFEYixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFXLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVMsY0FBUyxH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eyBDb21wb25lbnQsIE9uSW5pdCxPdXRwdXQsRXZlbnRFbWl0dGVyLCBJbnB1dCAsRWxlbWVudFJlZiwgT25DaGFuZ2VzLFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEZpbGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZWRGaWxlRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhbGxGaWxlcztcbiAgQElucHV0KCkgbGltaXRGaWxlVXBsb2FkaW5nO1xuICBASW5wdXQoKSBpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlO1xuICBASW5wdXQoKSBpc1Nob3dOb0ZpbGVJY29uO1xuICBASW5wdXQoKSB0YWJsZUZpbGU7ICAvLyBmaWxlIFVwbG9hZCBmcm9tIHRhYmxlXG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xuICBASW5wdXQoKSBlcnJvcjphbnk7XG5cbiAgcHVibGljIHNlbGVjdGVkRmlsZU5hbWVBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGNvcHlPZklucHV0QWxsRmlsZXM7XG4gIHB1YmxpYyBjb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQ7XG4gIHB1YmxpYyBmaWxlVXJsO1xuICBwdWJsaWMgc2hvd0ZpbGUgPSBmYWxzZTtcbiAgcHVibGljIGlzSW1hZ2UgPSBmYWxzZTtcbiAgcHVibGljIGZpbGVOYW1lID0gJyc7XG4gIGN1cnJlbnRGaWxlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgU2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSwgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG4gIC8vIFZEIDAzTWF5MjQgZmlsZSB1cGxvYWQgZml4XG4gIC8vIG9uRmlsZVVwbG9hZChldmVudDogYW55KSB7XG4gIC8vICAgY29uc3QgZmlsZVVwbG9hZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgLy8gICAgICdmaWxlVXBsb2FkJ1xuICAvLyAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gIC8vICAgZmlsZVVwbG9hZGVyRWxlbWVudC5jbGljaygpO1xuICAvLyB9XG5cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnNvbGUubG9nKCdzaW1wbGUgY2hhbmdlcycsIHNpbXBsZUNoYW5nZXMpO1xuICAgIHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA9IHNpbXBsZUNoYW5nZXMuYWxsRmlsZXM/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0ID0gc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmc/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlRmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdGaWxlIHVwbG9hZGVyIGluaXRpYXRlZCcpO1xuICAgIGxldCBpbnB1dEZpbGVzOiBhbnlbXSA9IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA/IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA6IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsZURhdGEgPSBbXTtcbiAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCArIGlucHV0RmlsZXMubGVuZ3RoIDw9IHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0KSB7XG4gICAgICBjb25zdCByZWFkRmlsZXNQcm9taXNlcyA9IFtdO1xuICBcbiAgICAgIGZvciAoY29uc3QgZWFjaFVwbG9hZGVkRmlsZSBvZiB1cGxvYWRlZEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBlYWNoVXBsb2FkZWRGaWxlO1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBhIHByb21pc2UgZm9yIGVhY2ggZmlsZSByZWFkXG4gICAgICAgIGNvbnN0IGZpbGVSZWFkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICBcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGEgPSB7XG4gICAgICAgICAgICAgIGRvYzogcmVhZGVyLnJlc3VsdCxcbiAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICB9O1xuICBcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaChmaWxlRGF0YSk7XG4gICAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZmlsZURhdGEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH07XG4gIFxuICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gIFxuICAgICAgICByZWFkRmlsZXNQcm9taXNlcy5wdXNoKGZpbGVSZWFkUHJvbWlzZSk7XG4gICAgICB9XG4gIFxuICAgICAgLy8gV2FpdCBmb3IgYWxsIHByb21pc2VzIHRvIHJlc29sdmVcbiAgICAgIFByb21pc2UuYWxsKHJlYWRGaWxlc1Byb21pc2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID0gaW5wdXRGaWxlcztcbiAgICAgICAgY29uc29sZS5sb2coJ3VwbG9hZGVkRmlsZXMnLCBpbnB1dEZpbGVzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVEYXRhLmVtaXQoaW5wdXRGaWxlcyk7XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgZmlsZXMnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW4gdXBsb2FkIG1heCA1IGZpbGVzJyk7XG4gICAgICAvLyB0aGlzLnRvYXN0ci53YXJuaW5nKFRPQVNURVJfTUVTU0FHRVMuTUFYX0ZJVkVfRklMRVMsIFRPQVNURVJfTUVTU0FHRVMuV0FSTklOR19USVRMRSk7XG4gICAgfVxuICBcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuICBcblxuICAvLyB1cGxvYWRNdWx0aXBsZUZpbGVzKGV2ZW50OiBhbnkpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnRmlsZSB1cGxvYWRlciBpbml0aWF0ZWQnKTtcbiAgLy8gICBsZXQgaW5wdXRGaWxlczogYW55W10gPSB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPyB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgOiBbXTtcbiAgLy8gICBjb25zdCBzZWxlY3RlZEZpbGVEYXRhID0gW107XG4gIC8vICAgY29uc3QgdXBsb2FkZWRGaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgLy8gICBpZiAodXBsb2FkZWRGaWxlcy5sZW5ndGggKyBpbnB1dEZpbGVzLmxlbmd0aCA8PSB0aGlzLmNvcHlPZkZpbGVVcGxvYWRpbmdMaW1pdCkge1xuICAvLyAgICAgZm9yIChjb25zdCBlYWNoVXBsb2FkZWRGaWxlIG9mIHVwbG9hZGVkRmlsZXMpIHtcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgLy8gICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGVhY2hVcGxvYWRlZEZpbGU7XG4gIC8vICAgICAgIGNvbnN0IGZvcm1hdCA9IGZpbGUubmFtZS5zcGxpdCgnLicpWzFdO1xuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgLy8gICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgLy8gICAgICAgICBzZWxlY3RlZEZpbGVEYXRhLnB1c2goe1xuICAvLyAgICAgICAgICAgZG9jOiByZWFkZXIucmVzdWx0LFxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAvLyAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAvLyAgICAgICAgICAgZm9ybWF0LFxuICAvLyAgICAgICAgICAgaWQ6IG51bGwsXG4gIC8vICAgICAgICAgfSk7XG4gIC8vICAgICAgICAgaW5wdXRGaWxlcy5wdXNoKHtcbiAgLy8gICAgICAgICAgIGRvYzogcmVhZGVyLnJlc3VsdCxcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgLy8gICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgLy8gICAgICAgICAgIGZvcm1hdCxcbiAgLy8gICAgICAgICAgIGlkOiBudWxsLFxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICB9O1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW4gdXBsb2FkIG1heCA1IGZpbGVzJyk7XG4gIC8vICAgICAvL3RoaXMudG9hc3RyLndhcm5pbmcoVE9BU1RFUl9NRVNTQUdFUy5NQVhfRklWRV9GSUxFUywgVE9BU1RFUl9NRVNTQUdFUy5XQVJOSU5HX1RJVExFKTtcbiAgLy8gICB9XG4gIC8vICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gIC8vICAgdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID0gaW5wdXRGaWxlcztcbiAgLy8gICBjb25zb2xlLmxvZygndXBsb2FkZWRGaWxlcycsaW5wdXRGaWxlcyk7XG4gIC8vICAgdGhpcy5zZWxlY3RlZEZpbGVEYXRhLmVtaXQoaW5wdXRGaWxlcyk7XG4gIC8vIH1cblxuXG4gIGRlbGV0ZUZpbGUoY3VycmVudEZpbGVJbmRleCkge1xuICAgICAgICBjb25zdCBkZWxldGVkRmlsZU5hbWUgPSB0aGlzLnNlbGVjdGVkRmlsZU5hbWVBcnJheS5zcGxpY2UoY3VycmVudEZpbGVJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRGaWxlID0gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzLnNwbGljZShjdXJyZW50RmlsZUluZGV4LCAxKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2VtaXQnLCBkZWxldGVkRmlsZVswXSk7XG4gICAgICAgIHRoaXMuZGVsZXRlZEZpbGVEYXRhLmVtaXQoZGVsZXRlZEZpbGVbMF0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdCh0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMpO1xuICB9XG5cblxuLy8gVkQgMjBNYXkyNCAtIHByZXZpZXcgY2hhbmdlc1xuICB2aWV3RmlsZShjdXJyZW50RmlsZSkge1xuICAgIHRoaXMuY3VycmVudEZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICB0aGlzLnNob3dGaWxlID0gdHJ1ZTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50RmlsZSk7XG4gICAgaWYodGhpcy5xdWVzdGlvbi5TdWJfVGV4dF9fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBmaWxlTWV0YSA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5TdWJfVGV4dF9fYyk7XG4gICAgICBsZXQgZW5kcG9pbnQgPSBmaWxlTWV0YS5lbmRwb2ludDtcbiAgICAgIGxldCBxdWVyeVBhcmFtZXRlciA9IGZpbGVNZXRhLnF1ZXJ5UGFyYW1ldGVyO1xuICAgICAgICBsZXQgZmlsZSA9IGN1cnJlbnRGaWxlO1xuICAgICAgICAgIGlmKGVuZHBvaW50KXtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxFbmRQb2ludCA9IGVuZHBvaW50ICsgJz8nKyBxdWVyeVBhcmFtZXRlciArICc9JyArIGZpbGVbcXVlcnlQYXJhbWV0ZXJdO1xuICAgICAgICAgICAgaWYoZnVsbEVuZFBvaW50KXtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShmdWxsRW5kUG9pbnQpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZihhcGlSZXNwb25zZSl7XG4gICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZpbGVDb250ZW50KGFwaVJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICB9XG4gICAgICAgfVxuICAgIH1lbHNlIHtcbiAgICAgICAgdGhpcy52aWV3TG9jYWxGaWxlKClcbiAgICB9XG4gIH1cblxuLy8gLy8gVkQgMDNBdWcyNCBwcm9jZXNzIGxvY2FsIHByZXZpZXcgXG4gIHZpZXdMb2NhbEZpbGUoKXtcbiAgICBpZih0aGlzLmN1cnJlbnRGaWxlKXtcbiAgICAgIHRoaXMuc2V0RmlsZVVybCh0aGlzLmN1cnJlbnRGaWxlPy5kb2MpO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuY3VycmVudEZpbGUubmFtZTtcbiAgICAgIHRoaXMuaXNJbWFnZSA9IHRoaXMuY3VycmVudEZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICB9XG5cbiAgfVxuXG4gXG4gIGhhbmRsZUZpbGVDb250ZW50KGZpbGVSZXNwb25zZTogYW55KSB7XG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoZmlsZVJlc3BvbnNlLmNvbnRlbnQuZGF0YSk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGZpbGVSZXNwb25zZS50eXBlIH0pO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHRoaXMuc2V0RmlsZVVybCh1cmwpO1xuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xuICAgIGlmKGZpbGVSZXNwb25zZS5uYW1lKXtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlUmVzcG9uc2UubmFtZTtcbiAgICAgIGNvbnN0IGltYWdlRXh0ZW5zaW9ucyA9IFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICdibXAnLCAnd2VicCddO1xuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVSZXNwb25zZS5uYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmlzSW1hZ2UgPSBpbWFnZUV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbiB8fCAnJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmlsZVVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuICB9XG5cbiAgZ2V0RG9jSWNvbihkb2NOYW1lKSB7XG4gICAgY29uc3QgZXh0ID0gZG9jTmFtZS5zcGxpdCgnLicpLnBvcCgtMSk7XG4gICAgcmV0dXJuIHRoaXMuU2hhcmVkU2VydmljZS5kb2NJY29uKGV4dCk7XG4gIH1cblxuICBjbG9zZSgpe1xuICAgIHRoaXMuc2hvd0ZpbGUgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVOYW1lID0gJyc7XG4gICAgdGhpcy5maWxlVXJsID0gJyc7XG4gICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmlsZVVybCkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmZpbGVVcmwpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdJZj1cIiFpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPlxuICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgPGxhYmVsIGNsYXNzPVwic2hlLWxhYmVsXCI+e3sgJ2F0dGFjaG1lbnQnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGRvY3VtZW50LWNudCBtLXQtMTAgbS1iLTEwXCJcbiAgICAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgY29weU9mSW5wdXRBbGxGaWxlczsgbGV0IGN1cnJlbnRGaWxlSW5kZXggPSBpbmRleFwiPlxuICAgICA8ZGl2ICpuZ0lmPVwiIXRhYmxlRmlsZVwiIGNsYXNzPVwicm93XCI+IDwhLS0gKGNsaWNrKT1cInZpZXdGaWxlKGVhY2hGaWxlKVwiICAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBkb2N1bWVudF9pbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0RG9jSWNvbihlYWNoRmlsZT8ubmFtZSlcIj5cbiAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBkb2N1bWVudF9uYW1lXCI+XG4gICAgICAgIHt7ZWFjaEZpbGU/Lm5hbWV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRfZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoY3VycmVudEZpbGVJbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9iaW4uc3ZnXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gVkQgMjBNYXkyNCAtIHByZXZpZXcgY2hhbmdlcy0tPlxuICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctaWNvblwiIChjbGljayk9XCJ2aWV3RmlsZShlYWNoRmlsZSlcIiAqbmdJZj1cImlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGVcIj5cbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3JueHQuczMuYW1hem9uYXdzLmNvbS9JY29ucy9maWxlVHlwZUljb25zL2ljb25zOC1leWUtMjQucG5nXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGFibGVGaWxlXCIgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBkb2N1bWVudF9pbWFnZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJnZXREb2NJY29uKGVhY2hGaWxlPy5kb2MpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7aGVpZ2h0OiA0MHB4O1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZG9jdW1lbnRfbmFtZVwiIHN0eWxlPVwib3ZlcmZsb3c6aGlkZGVuO2hlaWdodDozNXB4O1wiPlxuICAgICAgICAgIHt7ZWFjaEZpbGU/Lm5hbWV9fVxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtLWItMzAgdGV4dC1jZW50ZXJcIiAqbmdJZj1cImNvcHlPZklucHV0QWxsRmlsZXM/Lmxlbmd0aCA9PT0gMCAmJiBpc1Nob3dOb0ZpbGVJY29uXCI+XG4gICAgPGltZyBzcmM9XCJodHRwczovL3JueHQuczMuYW1hem9uYXdzLmNvbS9JY29ucy9maWxlVHlwZUljb25zL2ljX25vX2F0dGFjaG1lbnRzLnN2Z1wiIHN0eWxlPVwiaGVpZ2h0OiAxNDBweDtcIj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImNvbC1sZy02XCIgc3R5bGU9XCJwYWRkaW5nOjA7bWFyZ2luLXRvcDogMTBweDtcIj5cbiAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWZpbGVcIiAqbmdJZj1cImlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGUgJiYgIXRhYmxlRmlsZVwiPlxuICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgPCEtLSBWRCAwM01heTI0IGZpbGUgdXBsb2FkIGZpeC0tPlxuICAgIDxidXR0b24gW2NsYXNzXT1cImVycm9yID8gJ3NoZS1idG4tcHJpbWFyeS1ib3JkZXJlZCBJbnZhbGlkJyA6ICdzaGUtYnRuLXByaW1hcnktYm9yZGVyZWQnXCIgc3R5bGU9XCJ3aWR0aDoyNzVweDtcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGNvcHlPZklucHV0QWxsRmlsZXM/Lmxlbmd0aCA+PSBjb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQgfVwiIFtkaXNhYmxlZF09XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPj0gY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0XCJcbiAgICA+Q2hvb3NlIEZpbGVzPC9idXR0b24+XG5cbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiICBuYW1lPVwiZmlsZVVwbG9hZFwiIG11bHRpcGxlPVwibXVsdGlwbGVcIiBhY2NlcHQ9XCIqXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCJcbiAgICAoY2hhbmdlKSA9IHVwbG9hZE11bHRpcGxlRmlsZXMoJGV2ZW50KVxuICAgIC8+XG4gIDwvbGFiZWw+XG48IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICA8bGFiZWwgKm5nSWY9XCJ0YWJsZUZpbGVcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgIHt7ICd1cGxvYWRGaWxlJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19XG4gICAgPGlucHV0IGlkPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9IHVwbG9hZE11bHRpcGxlRmlsZXMoJGV2ZW50KSAvPlxuICA8L2xhYmVsPlxuICA8IS0tIDxzcGFuIGNsYXNzPVwiZXJyb3ItbXNnXCIgKm5nSWY9XCIoZm9ybUNvbnRyb2w/LmRvY3VtZW50cz8udG91Y2hlZCB8fCAgICAgICAgZm9ybUNvbnRyb2w/LmRvY3VtZW50cz8uZGlydHkpICYmXG4gIGZvcm1Db250cm9sPy5kb2N1bWVudHM/LmVycm9ycz8ucmVxdWlyZWRcIj5cbiAgICB7e0xNX1BPTElDWV9WQUxJREFUSU9OX01FU1NBR0UuUkVRVUlSRUR9fVxuICA8L3NwYW4+IC0tPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1zZ1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj57e3F1ZXN0aW9uPy5FcnJvcl9NZXNzYWdlX19jfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJueHQtZmlsZS1vdmVybGF5XCIgKm5nSWY9XCJzaG93RmlsZVwiPlxuICA8ZGl2IGNsYXNzPVwibnh0LWZpbGUtbWFwLW1vZGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm54dC1maWxlLW1vZGVsLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJueHQtZmlsZS1tb2RlbC1oZWFkZXJcIj5cbiAgICAgICAgPGg0Pnt7ZmlsZU5hbWV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlg8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2U7IGVsc2Ugb3RoZXJGaWxlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlVXJsXCIgY2xhc3M9XCJpbWctZmx1aWRcIiBhbHQ9XCJGaWxlIFByZXZpZXdcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI290aGVyRmlsZT5cbiAgICAgICAgPGlmcmFtZSBbc3JjXT1cImZpbGVVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI1MDBweFwiPjwvaWZyYW1lPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG4iXX0=
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV2pILE1BQU0sT0FBTyxtQkFBbUI7SUFtQlY7SUFBdUM7SUFBaUM7SUFDbkY7SUFuQkMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUM3QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzQyxRQUFRLENBQUM7SUFDVCxrQkFBa0IsQ0FBQztJQUNuQix5QkFBeUIsQ0FBQztJQUMxQixnQkFBZ0IsQ0FBQztJQUNqQixTQUFTLENBQUMsQ0FBRSx5QkFBeUI7SUFDckMsUUFBUSxDQUFDO0lBQ1QsS0FBSyxDQUFLO0lBRVoscUJBQXFCLEdBQWEsRUFBRSxDQUFDO0lBQ3JDLG1CQUFtQixDQUFDO0lBQ3BCLHdCQUF3QixDQUFDO0lBQ3pCLE9BQU8sQ0FBQztJQUNSLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFdBQVcsQ0FBTTtJQUNqQixZQUFvQixhQUE0QixFQUFXLFdBQXdCLEVBQVMsU0FBdUIsRUFDMUcsV0FBd0I7UUFEYixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFXLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVMsY0FBUyxH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eyBDb21wb25lbnQsIE9uSW5pdCxPdXRwdXQsRXZlbnRFbWl0dGVyLCBJbnB1dCAsRWxlbWVudFJlZiwgT25DaGFuZ2VzLFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEZpbGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZWRGaWxlRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhbGxGaWxlcztcbiAgQElucHV0KCkgbGltaXRGaWxlVXBsb2FkaW5nO1xuICBASW5wdXQoKSBpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlO1xuICBASW5wdXQoKSBpc1Nob3dOb0ZpbGVJY29uO1xuICBASW5wdXQoKSB0YWJsZUZpbGU7ICAvLyBmaWxlIFVwbG9hZCBmcm9tIHRhYmxlXG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xuICBASW5wdXQoKSBlcnJvcjphbnk7XG5cbiAgcHVibGljIHNlbGVjdGVkRmlsZU5hbWVBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGNvcHlPZklucHV0QWxsRmlsZXM7XG4gIHB1YmxpYyBjb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQ7XG4gIHB1YmxpYyBmaWxlVXJsO1xuICBwdWJsaWMgc2hvd0ZpbGUgPSBmYWxzZTtcbiAgcHVibGljIGlzSW1hZ2UgPSBmYWxzZTtcbiAgcHVibGljIGZpbGVOYW1lID0gJyc7XG4gIGN1cnJlbnRGaWxlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgU2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSwgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG4gIC8vIFZEIDAzTWF5MjQgZmlsZSB1cGxvYWQgZml4XG4gIC8vIG9uRmlsZVVwbG9hZChldmVudDogYW55KSB7XG4gIC8vICAgY29uc3QgZmlsZVVwbG9hZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgLy8gICAgICdmaWxlVXBsb2FkJ1xuICAvLyAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gIC8vICAgZmlsZVVwbG9hZGVyRWxlbWVudC5jbGljaygpO1xuICAvLyB9XG5cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnNvbGUubG9nKCdzaW1wbGUgY2hhbmdlcycsIHNpbXBsZUNoYW5nZXMpO1xuICAgIHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA9IHNpbXBsZUNoYW5nZXMuYWxsRmlsZXM/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0ID0gc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmc/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlRmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdGaWxlIHVwbG9hZGVyIGluaXRpYXRlZCcpO1xuICAgIGxldCBpbnB1dEZpbGVzOiBhbnlbXSA9IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA/IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA6IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsZURhdGEgPSBbXTtcbiAgICBjb25zdCB1cGxvYWRlZEZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCArIGlucHV0RmlsZXMubGVuZ3RoIDw9IHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0KSB7XG4gICAgICBjb25zdCByZWFkRmlsZXNQcm9taXNlcyA9IFtdO1xuICBcbiAgICAgIGZvciAoY29uc3QgZWFjaFVwbG9hZGVkRmlsZSBvZiB1cGxvYWRlZEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBlYWNoVXBsb2FkZWRGaWxlO1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBhIHByb21pc2UgZm9yIGVhY2ggZmlsZSByZWFkXG4gICAgICAgIGNvbnN0IGZpbGVSZWFkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICBcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGEgPSB7XG4gICAgICAgICAgICAgIGRvYzogcmVhZGVyLnJlc3VsdCxcbiAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICB9O1xuICBcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaChmaWxlRGF0YSk7XG4gICAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZmlsZURhdGEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH07XG4gIFxuICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gIFxuICAgICAgICByZWFkRmlsZXNQcm9taXNlcy5wdXNoKGZpbGVSZWFkUHJvbWlzZSk7XG4gICAgICB9XG4gIFxuICAgICAgLy8gV2FpdCBmb3IgYWxsIHByb21pc2VzIHRvIHJlc29sdmVcbiAgICAgIFByb21pc2UuYWxsKHJlYWRGaWxlc1Byb21pc2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID0gaW5wdXRGaWxlcztcbiAgICAgICAgY29uc29sZS5sb2coJ3VwbG9hZGVkRmlsZXMnLCBpbnB1dEZpbGVzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVEYXRhLmVtaXQoaW5wdXRGaWxlcyk7XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgZmlsZXMnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW4gdXBsb2FkIG1heCA1IGZpbGVzJyk7XG4gICAgICAvLyB0aGlzLnRvYXN0ci53YXJuaW5nKFRPQVNURVJfTUVTU0FHRVMuTUFYX0ZJVkVfRklMRVMsIFRPQVNURVJfTUVTU0FHRVMuV0FSTklOR19USVRMRSk7XG4gICAgfVxuICBcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuICBcblxuICAvLyB1cGxvYWRNdWx0aXBsZUZpbGVzKGV2ZW50OiBhbnkpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnRmlsZSB1cGxvYWRlciBpbml0aWF0ZWQnKTtcbiAgLy8gICBsZXQgaW5wdXRGaWxlczogYW55W10gPSB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPyB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgOiBbXTtcbiAgLy8gICBjb25zdCBzZWxlY3RlZEZpbGVEYXRhID0gW107XG4gIC8vICAgY29uc3QgdXBsb2FkZWRGaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgLy8gICBpZiAodXBsb2FkZWRGaWxlcy5sZW5ndGggKyBpbnB1dEZpbGVzLmxlbmd0aCA8PSB0aGlzLmNvcHlPZkZpbGVVcGxvYWRpbmdMaW1pdCkge1xuICAvLyAgICAgZm9yIChjb25zdCBlYWNoVXBsb2FkZWRGaWxlIG9mIHVwbG9hZGVkRmlsZXMpIHtcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgLy8gICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGVhY2hVcGxvYWRlZEZpbGU7XG4gIC8vICAgICAgIGNvbnN0IGZvcm1hdCA9IGZpbGUubmFtZS5zcGxpdCgnLicpWzFdO1xuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgLy8gICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgLy8gICAgICAgICBzZWxlY3RlZEZpbGVEYXRhLnB1c2goe1xuICAvLyAgICAgICAgICAgZG9jOiByZWFkZXIucmVzdWx0LFxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAvLyAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAvLyAgICAgICAgICAgZm9ybWF0LFxuICAvLyAgICAgICAgICAgaWQ6IG51bGwsXG4gIC8vICAgICAgICAgfSk7XG4gIC8vICAgICAgICAgaW5wdXRGaWxlcy5wdXNoKHtcbiAgLy8gICAgICAgICAgIGRvYzogcmVhZGVyLnJlc3VsdCxcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgLy8gICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgLy8gICAgICAgICAgIGZvcm1hdCxcbiAgLy8gICAgICAgICAgIGlkOiBudWxsLFxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICB9O1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW4gdXBsb2FkIG1heCA1IGZpbGVzJyk7XG4gIC8vICAgICAvL3RoaXMudG9hc3RyLndhcm5pbmcoVE9BU1RFUl9NRVNTQUdFUy5NQVhfRklWRV9GSUxFUywgVE9BU1RFUl9NRVNTQUdFUy5XQVJOSU5HX1RJVExFKTtcbiAgLy8gICB9XG4gIC8vICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gIC8vICAgdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID0gaW5wdXRGaWxlcztcbiAgLy8gICBjb25zb2xlLmxvZygndXBsb2FkZWRGaWxlcycsaW5wdXRGaWxlcyk7XG4gIC8vICAgdGhpcy5zZWxlY3RlZEZpbGVEYXRhLmVtaXQoaW5wdXRGaWxlcyk7XG4gIC8vIH1cblxuXG4gIGRlbGV0ZUZpbGUoY3VycmVudEZpbGVJbmRleCkge1xuICAgICAgICBjb25zdCBkZWxldGVkRmlsZU5hbWUgPSB0aGlzLnNlbGVjdGVkRmlsZU5hbWVBcnJheS5zcGxpY2UoY3VycmVudEZpbGVJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRGaWxlID0gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzLnNwbGljZShjdXJyZW50RmlsZUluZGV4LCAxKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2VtaXQnLCBkZWxldGVkRmlsZVswXSk7XG4gICAgICAgIHRoaXMuZGVsZXRlZEZpbGVEYXRhLmVtaXQoZGVsZXRlZEZpbGVbMF0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdCh0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMpO1xuICB9XG5cblxuLy8gVkQgMjBNYXkyNCAtIHByZXZpZXcgY2hhbmdlc1xuICB2aWV3RmlsZShjdXJyZW50RmlsZSkge1xuICAgIHRoaXMuY3VycmVudEZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICB0aGlzLnNob3dGaWxlID0gdHJ1ZTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50RmlsZSk7XG4gICAgaWYodGhpcy5xdWVzdGlvbi5TdWJfVGV4dF9fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBmaWxlTWV0YSA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5TdWJfVGV4dF9fYyk7XG4gICAgICBsZXQgZW5kcG9pbnQgPSBmaWxlTWV0YS5lbmRwb2ludDtcbiAgICAgIGxldCBxdWVyeVBhcmFtZXRlciA9IGZpbGVNZXRhLnF1ZXJ5UGFyYW1ldGVyO1xuICAgICAgICBsZXQgZmlsZSA9IGN1cnJlbnRGaWxlO1xuICAgICAgICAgIGlmKGVuZHBvaW50KXtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxFbmRQb2ludCA9IGVuZHBvaW50ICsgJz8nKyBxdWVyeVBhcmFtZXRlciArICc9JyArIGZpbGVbcXVlcnlQYXJhbWV0ZXJdO1xuICAgICAgICAgICAgaWYoZnVsbEVuZFBvaW50KXtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShmdWxsRW5kUG9pbnQpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZihhcGlSZXNwb25zZSl7XG4gICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZpbGVDb250ZW50KGFwaVJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICB9XG4gICAgICAgfVxuICAgIH1lbHNlIHtcbiAgICAgICAgdGhpcy52aWV3TG9jYWxGaWxlKClcbiAgICB9XG4gIH1cblxuLy8gLy8gVkQgMDNBdWcyNCBwcm9jZXNzIGxvY2FsIHByZXZpZXcgXG4gIHZpZXdMb2NhbEZpbGUoKXtcbiAgICBpZih0aGlzLmN1cnJlbnRGaWxlKXtcbiAgICAgIHRoaXMuc2V0RmlsZVVybCh0aGlzLmN1cnJlbnRGaWxlPy5kb2MpO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuY3VycmVudEZpbGUubmFtZTtcbiAgICAgIHRoaXMuaXNJbWFnZSA9IHRoaXMuY3VycmVudEZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICB9XG5cbiAgfVxuXG4gXG4gIGhhbmRsZUZpbGVDb250ZW50KGZpbGVSZXNwb25zZTogYW55KSB7XG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoZmlsZVJlc3BvbnNlLmNvbnRlbnQuZGF0YSk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGZpbGVSZXNwb25zZS50eXBlIH0pO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHRoaXMuc2V0RmlsZVVybCh1cmwpO1xuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xuICAgIGlmKGZpbGVSZXNwb25zZS5uYW1lKXtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlUmVzcG9uc2UubmFtZTtcbiAgICAgIGNvbnN0IGltYWdlRXh0ZW5zaW9ucyA9IFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICdibXAnLCAnd2VicCddO1xuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVSZXNwb25zZS5uYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmlzSW1hZ2UgPSBpbWFnZUV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbiB8fCAnJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmlsZVVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuICB9XG5cbiAgZ2V0RG9jSWNvbihkb2NOYW1lKSB7XG4gICAgY29uc3QgZXh0ID0gZG9jTmFtZS5zcGxpdCgnLicpLnBvcCgtMSk7XG4gICAgcmV0dXJuIHRoaXMuU2hhcmVkU2VydmljZS5kb2NJY29uKGV4dCk7XG4gIH1cblxuICBjbG9zZSgpe1xuICAgIHRoaXMuc2hvd0ZpbGUgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVOYW1lID0gJyc7XG4gICAgdGhpcy5maWxlVXJsID0gJyc7XG4gICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmlsZVVybCkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmZpbGVVcmwpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdJZj1cIiFpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPlxuICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgPGxhYmVsIGNsYXNzPVwic2hlLWxhYmVsXCI+e3sgJ2F0dGFjaG1lbnQnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGRvY3VtZW50LWNudCBtLXQtMTAgbS1iLTEwXCJcbiAgICAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgY29weU9mSW5wdXRBbGxGaWxlczsgbGV0IGN1cnJlbnRGaWxlSW5kZXggPSBpbmRleFwiPlxuICAgICA8ZGl2ICpuZ0lmPVwiIXRhYmxlRmlsZVwiPiA8IS0tIChjbGljayk9XCJ2aWV3RmlsZShlYWNoRmlsZSlcIiAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZG9jdW1lbnRfaW1hZ2VcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cImdldERvY0ljb24oZWFjaEZpbGU/Lm5hbWUpXCI+XG4gICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZG9jdW1lbnRfbmFtZVwiPlxuICAgICAgICB7e2VhY2hGaWxlPy5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50X2RlbGV0ZVwiIChjbGljayk9XCJkZWxldGVGaWxlKGN1cnJlbnRGaWxlSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiICpuZ0lmPVwiaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZVwiPlxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcm54dC5zMy5hbWF6b25hd3MuY29tL0ljb25zL2ZpbGVUeXBlSWNvbnMvYmluLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFZEIDIwTWF5MjQgLSBwcmV2aWV3IGNoYW5nZXMtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWljb25cIiAoY2xpY2spPVwidmlld0ZpbGUoZWFjaEZpbGUpXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9pY29uczgtZXllLTI0LnBuZ1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRhYmxlRmlsZVwiIGNsYXNzPVwicm93XCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZG9jdW1lbnRfaW1hZ2VcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0RG9jSWNvbihlYWNoRmlsZT8uZG9jKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O2hlaWdodDogNDBweDtcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGRvY3VtZW50X25hbWVcIiBzdHlsZT1cIm92ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MzVweDtcIj5cbiAgICAgICAgICB7e2VhY2hGaWxlPy5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbS1iLTMwIHRleHQtY2VudGVyXCIgKm5nSWY9XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPT09IDAgJiYgaXNTaG93Tm9GaWxlSWNvblwiPlxuICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9pY19ub19hdHRhY2htZW50cy5zdmdcIiBzdHlsZT1cImhlaWdodDogMTQwcHg7XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb2wtbGctNlwiIHN0eWxlPVwicGFkZGluZzowO21hcmdpbi10b3A6IDEwcHg7XCI+XG4gIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1maWxlXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlICYmICF0YWJsZUZpbGVcIj5cbiAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgIDwhLS0gVkQgMDNNYXkyNCBmaWxlIHVwbG9hZCBmaXgtLT5cbiAgICA8YnV0dG9uIFtjbGFzc109XCJlcnJvciA/ICdzaGUtYnRuLXByaW1hcnktYm9yZGVyZWQgSW52YWxpZCcgOiAnc2hlLWJ0bi1wcmltYXJ5LWJvcmRlcmVkJ1wiIHN0eWxlPVwid2lkdGg6Mjc1cHg7XCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPj0gY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0IH1cIiBbZGlzYWJsZWRdPVwiY29weU9mSW5wdXRBbGxGaWxlcz8ubGVuZ3RoID49IGNvcHlPZkZpbGVVcGxvYWRpbmdMaW1pdFwiXG4gICAgPkNob29zZSBGaWxlczwvYnV0dG9uPlxuXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiAgbmFtZT1cImZpbGVVcGxvYWRcIiBtdWx0aXBsZT1cIm11bHRpcGxlXCIgYWNjZXB0PVwiKlwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiXG4gICAgKGNoYW5nZSkgPSB1cGxvYWRNdWx0aXBsZUZpbGVzKCRldmVudClcbiAgICAvPlxuICA8L2xhYmVsPlxuPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbiAgPGxhYmVsICpuZ0lmPVwidGFibGVGaWxlXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cbiAgICB7eyAndXBsb2FkRmlsZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fVxuICAgIDxpbnB1dCBpZD1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPSB1cGxvYWRNdWx0aXBsZUZpbGVzKCRldmVudCkgLz5cbiAgPC9sYWJlbD5cbiAgPCEtLSA8c3BhbiBjbGFzcz1cImVycm9yLW1zZ1wiICpuZ0lmPVwiKGZvcm1Db250cm9sPy5kb2N1bWVudHM/LnRvdWNoZWQgfHwgICAgICAgIGZvcm1Db250cm9sPy5kb2N1bWVudHM/LmRpcnR5KSAmJlxuICBmb3JtQ29udHJvbD8uZG9jdW1lbnRzPy5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAge3tMTV9QT0xJQ1lfVkFMSURBVElPTl9NRVNTQUdFLlJFUVVJUkVEfX1cbiAgPC9zcGFuPiAtLT5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tc2dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+e3txdWVzdGlvbj8uRXJyb3JfTWVzc2FnZV9fY319PC9kaXY+XG48ZGl2IGNsYXNzPVwibnh0LWZpbGUtb3ZlcmxheVwiICpuZ0lmPVwic2hvd0ZpbGVcIj5cbiAgPGRpdiBjbGFzcz1cIm54dC1maWxlLW1hcC1tb2RhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJueHQtZmlsZS1tb2RlbC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibnh0LWZpbGUtbW9kZWwtaGVhZGVyXCI+XG4gICAgICAgIDxoND57e2ZpbGVOYW1lfX08L2g0PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5YPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlOyBlbHNlIG90aGVyRmlsZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZVVybFwiIGNsYXNzPVwiaW1nLWZsdWlkXCIgYWx0PVwiRmlsZSBQcmV2aWV3XCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNvdGhlckZpbGU+XG4gICAgICAgIDxpZnJhbWUgW3NyY109XCJmaWxlVXJsXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNTAwcHhcIj48L2lmcmFtZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuIl19
@@ -397,11 +397,11 @@ export class BookletComponent {
397
397
  this.hadleDropDownDependent.emit(event);
398
398
  }
399
399
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BookletComponent, deps: [{ token: i1.SalesforceService }, { token: i2.DataService }, { token: i3.StorageService }, { token: i4.ActivatedRoute }, { token: i5.DomSanitizer }, { token: i6.ChangeService }, { token: i0.ElementRef }, { token: i7.I18nService }], target: i0.ɵɵFactoryTarget.Component });
400
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: BookletComponent, selector: "lib-booklet", inputs: { bookletId: "bookletId", serv: "serv", tkn: "tkn", bookletJSON: "bookletJSON", dropdownDependentData: "dropdownDependentData", labelValue: "labelValue", token: "token", languageCode: "languageCode", fieldRestrictions: "fieldRestrictions", dataBind: "dataBind" }, outputs: { handleBookletActionEvent: "handleBookletActionEvent", handlePage: "handlePage", hadleDropDownDependent: "hadleDropDownDependent" }, usesOnChanges: true, ngImport: i0, template: "<ngx-spinner [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [ngClass]=\"langDirection\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- <lib-questionnaire [serv]=\"serv\" [qbId]=\"qb.Id\" [tkn]=\"tkn\"></lib-questionnaire> -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.Questions__r?.records; else elseBlock\">\n <div *ngFor=\"let ques of qb.Questions__r.records\" [class]=\"qb.isShengel__c ? 'questiondiv1' : 'questiondiv1 padd-bottom'\">\n <div class=\"questiondiv2\">\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(ques?.Question_Text__c)\" *ngIf=\"ques?.Question_Text__c\" > \n {{ ques?.Question_Text__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!--VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"ques\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div [class]=\"qb.isShengel__c ? 'questiondiv1' : 'questiondiv1 padd-bottom'\">\n <div class=\"questiondiv2\">\n <div *ngIf=\"!qb.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(qb?.Question_Text__c)\" *ngIf=\"qb?.Question_Text__c\" > \n {{ qb?.Question_Text__c }}\n {{ qb?.Title__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n</div>\n\n<!-- Group Actions -->\n<!-- HA 19DEC23 For Direction -->\n<div class=\"align-submit-row\" *ngIf=\"abItem?.Status__c != 'Completed'\" [ngClass]=\"langDirection\">\n <div *ngFor=\"let action of actions; let i = index\">\n <!-- // HA 22JAN24 Commonise the button style in fusion -->\n <button (click)=\"handleBookletActionClick(action)\" ngClass=\"btn btn-primary fc-button nxtButton\">\n {{ action.name }}\n </button>\n </div>\n</div>\n", styles: [".align-submit-row{display:flex}.header-style{padding:15px;background:#F8F8F8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.NgxSpinnerComponent, selector: "ngx-spinner", inputs: ["disableAnimation", "bdColor", "zIndex", "color", "type", "size", "fullScreen", "name", "template", "showSpinner"] }, { kind: "component", type: i10.QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "translatedQuestions", "questions", "errorFieldId", "labelValue", "token", "dropDownData"], outputs: ["handleDropDown", "handleQuestion", "hadleDropDownDependent"] }] });
400
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: BookletComponent, selector: "lib-booklet", inputs: { bookletId: "bookletId", serv: "serv", tkn: "tkn", bookletJSON: "bookletJSON", dropdownDependentData: "dropdownDependentData", labelValue: "labelValue", token: "token", languageCode: "languageCode", fieldRestrictions: "fieldRestrictions", dataBind: "dataBind" }, outputs: { handleBookletActionEvent: "handleBookletActionEvent", handlePage: "handlePage", hadleDropDownDependent: "hadleDropDownDependent" }, usesOnChanges: true, ngImport: i0, template: "<ngx-spinner [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [ngClass]=\"langDirection\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- <lib-questionnaire [serv]=\"serv\" [qbId]=\"qb.Id\" [tkn]=\"tkn\"></lib-questionnaire> -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.Questions__r?.records; else elseBlock\">\n <div *ngFor=\"let ques of qb.Questions__r.records\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(ques?.Question_Text__c)\" *ngIf=\"ques?.Question_Text__c\" > \n {{ ques?.Question_Text__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!--VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"ques\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div class=\"questiondiv1\">\n <div>\n <div *ngIf=\"!qb.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(qb?.Question_Text__c)\" *ngIf=\"qb?.Question_Text__c\" > \n {{ qb?.Question_Text__c }}\n {{ qb?.Title__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n</div>\n\n<!-- Group Actions -->\n<!-- HA 19DEC23 For Direction -->\n<div class=\"align-submit-row\" *ngIf=\"abItem?.Status__c != 'Completed'\" [ngClass]=\"langDirection\">\n <div *ngFor=\"let action of actions; let i = index\">\n <!-- // HA 22JAN24 Commonise the button style in fusion -->\n <button (click)=\"handleBookletActionClick(action)\" ngClass=\"btn btn-primary fc-button nxtButton\">\n {{ action.name }}\n </button>\n </div>\n</div>\n", styles: [".align-submit-row{display:flex}.header-style{padding:15px;background:#F8F8F8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.NgxSpinnerComponent, selector: "ngx-spinner", inputs: ["disableAnimation", "bdColor", "zIndex", "color", "type", "size", "fullScreen", "name", "template", "showSpinner"] }, { kind: "component", type: i10.QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "translatedQuestions", "questions", "errorFieldId", "labelValue", "token", "dropDownData"], outputs: ["handleDropDown", "handleQuestion", "hadleDropDownDependent"] }] });
401
401
  }
402
402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BookletComponent, decorators: [{
403
403
  type: Component,
404
- args: [{ selector: 'lib-booklet', template: "<ngx-spinner [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [ngClass]=\"langDirection\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- <lib-questionnaire [serv]=\"serv\" [qbId]=\"qb.Id\" [tkn]=\"tkn\"></lib-questionnaire> -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.Questions__r?.records; else elseBlock\">\n <div *ngFor=\"let ques of qb.Questions__r.records\" [class]=\"qb.isShengel__c ? 'questiondiv1' : 'questiondiv1 padd-bottom'\">\n <div class=\"questiondiv2\">\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(ques?.Question_Text__c)\" *ngIf=\"ques?.Question_Text__c\" > \n {{ ques?.Question_Text__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!--VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"ques\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div [class]=\"qb.isShengel__c ? 'questiondiv1' : 'questiondiv1 padd-bottom'\">\n <div class=\"questiondiv2\">\n <div *ngIf=\"!qb.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(qb?.Question_Text__c)\" *ngIf=\"qb?.Question_Text__c\" > \n {{ qb?.Question_Text__c }}\n {{ qb?.Title__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n</div>\n\n<!-- Group Actions -->\n<!-- HA 19DEC23 For Direction -->\n<div class=\"align-submit-row\" *ngIf=\"abItem?.Status__c != 'Completed'\" [ngClass]=\"langDirection\">\n <div *ngFor=\"let action of actions; let i = index\">\n <!-- // HA 22JAN24 Commonise the button style in fusion -->\n <button (click)=\"handleBookletActionClick(action)\" ngClass=\"btn btn-primary fc-button nxtButton\">\n {{ action.name }}\n </button>\n </div>\n</div>\n", styles: [".align-submit-row{display:flex}.header-style{padding:15px;background:#F8F8F8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}\n"] }]
404
+ args: [{ selector: 'lib-booklet', template: "<ngx-spinner [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [ngClass]=\"langDirection\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- <lib-questionnaire [serv]=\"serv\" [qbId]=\"qb.Id\" [tkn]=\"tkn\"></lib-questionnaire> -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.Questions__r?.records; else elseBlock\">\n <div *ngFor=\"let ques of qb.Questions__r.records\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(ques?.Question_Text__c)\" *ngIf=\"ques?.Question_Text__c\" > \n {{ ques?.Question_Text__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!--VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"ques\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div class=\"questiondiv1\">\n <div>\n <div *ngIf=\"!qb.Is_Title__c\" [class]=\"qb.isShengel__c ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing lable when its available-->\n <div [innerHTML]=\"getText(qb?.Question_Text__c)\" *ngIf=\"qb?.Question_Text__c\" > \n {{ qb?.Question_Text__c }}\n {{ qb?.Title__c }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [translatedQuestions]=\"readTransQuestions(qb.Id)\" [questions]=\"readQuestions(qb.Id)\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n</div>\n\n<!-- Group Actions -->\n<!-- HA 19DEC23 For Direction -->\n<div class=\"align-submit-row\" *ngIf=\"abItem?.Status__c != 'Completed'\" [ngClass]=\"langDirection\">\n <div *ngFor=\"let action of actions; let i = index\">\n <!-- // HA 22JAN24 Commonise the button style in fusion -->\n <button (click)=\"handleBookletActionClick(action)\" ngClass=\"btn btn-primary fc-button nxtButton\">\n {{ action.name }}\n </button>\n </div>\n</div>\n", styles: [".align-submit-row{display:flex}.header-style{padding:15px;background:#F8F8F8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}\n"] }]
405
405
  }], ctorParameters: function () { return [{ type: i1.SalesforceService }, { type: i2.DataService }, { type: i3.StorageService }, { type: i4.ActivatedRoute }, { type: i5.DomSanitizer }, { type: i6.ChangeService }, { type: i0.ElementRef }, { type: i7.I18nService }]; }, propDecorators: { bookletId: [{
406
406
  type: Input
407
407
  }], serv: [{
@@ -429,4 +429,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
429
429
  }], dataBind: [{
430
430
  type: Input
431
431
  }] } });
432
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBK0JqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXJDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWpFLFVBQVUsQ0FBaUI7SUFFM0IsT0FBTyxHQUFVLEVBQUUsQ0FBQztJQUNwQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBaUIsRUFBRSxDQUFDO0lBQzNCLGdCQUFnQixHQUFRLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbEMsWUFBWSxHQUFRLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBRSxtQ0FBbUM7SUFDbEUsU0FBUyxHQUFRLElBQUksR0FBRyxFQUFFLENBQUM7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QyxTQUFTLENBQUMsdUJBQXVCLENBQzNDLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FoYVUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsdWVDN0I3Qiw0b0dBZ0RBOzs0RkRuQmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7c1NBS2QsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFnQkUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNhbGVzZm9yY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aW9uTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uTWV0YSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gXCIuLi8uLi93cmFwcGVyXCI7XG5pbXBvcnQgeyBCb29rbGV0V3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9ib29rbGV0V3JhcHBlclwiO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZVwiO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJvb2tsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2xldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jvb2tsZXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBib29rbGV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgc2Vydjogc3RyaW5nO1xuICBASW5wdXQoKSB0a246IHN0cmluZztcbiAgQElucHV0KCkgYm9va2xldEpTT046IGFueTtcbiAgQElucHV0KCkgZHJvcGRvd25EZXBlbmRlbnREYXRhOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZztcbiAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlOnN0cmluZzsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIGZpZWxkUmVzdHJpY3Rpb25zOiBhbnk7IC8vIFZEIDEySnVuMjQgLSBmaWVsZCBwZXJtaXNzaW9uIGNoYW5nZVxuICBAT3V0cHV0KCkgaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgbnh0Qm9va2xldDogQm9va2xldFdyYXBwZXI7XG5cbiAgcHVibGljIGJvb2tsZXQ6IGFueVtdID0gW107XG4gIHB1YmxpYyBhYkl0ZW06IGFueSA9IHt9O1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uTWV0YVtdID0gW107XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyB0cmFuc2xhdGVNYXA6IGFueSA9IG5ldyBNYXAoKTsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgc3FPcHRpb25zOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0Fuc3dlckZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNwaW5uZXJOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzcGlubmVyVHlwZTogc3RyaW5nO1xuICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgaXMgY3JlYXRlZCB0byBhc3NpZ24gdGhlIGRpcmVjdGlvbiBhcyBjbGFzc1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7IC8vIEhBIDI4REVDMjMgbWFraW5nIGx0ciBhcyBkZWZhdWx0IGRpcmVjdGlvblxuICBhbnN3ZXJMaXN0ID0gW107IC8vIEhBIDExLUpBTi0yNCBBbnN3ZXJsaXN0IHRvIHN0b3JlIHRoZSBtaW5pbWFsIHZhbHVlXG4gIEBJbnB1dCgpIGRhdGFCaW5kOiBhbnkgPSB7fTsgLy8gSEEgMTgtSkFOLTI0IFRvIGluc2VydCB0aGUgZW5kcG9pbnQgdmFsdWUgdG8gdGhlIHF1ZXN0aW9uXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICkgeyBcbiAgICB0aGlzLnNwaW5uZXJOYW1lID0gXCJzcDFcIjtcbiAgICB0aGlzLnNwaW5uZXJUeXBlID0gXCJiYWxsLXNwaW4tY2xvY2t3aXNlXCI7XG4gICAgY29uc29sZS5sb2coJ2Ryb3Bkb3duRGVwZW5kZW50RGF0YScsdGhpcy5kcm9wZG93bkRlcGVuZGVudERhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgXG4vLyAgVkQgMTJKYW4yNCBmaWVsZFJlc3RyaWN0aW9ucyBmb3JtYXRlIFxuICAvLyAgIHtcbiAgLy8gICAgIFwiZmllbGRzXCIgOiB7XG4gIC8vICAgICAgICAgXCJ0cmFuc1FiLTAxXCIgOiBcInJlYWRPbmx5XCIsXG4gIC8vICAgICAgICAgXCJUcmFuc0ZpcjAyXCIgOiBcIlwiLFxuICAvLyAgICAgICAgIFwiVHJhbnNMYXN0MDNcIiA6IFwicmVhZE9ubHlcIixcbiAgLy8gICAgICAgICBcImJrMi1xMlwiIDogXCJoaWRlXCJcbiAgLy8gICAgIH1cbiAgLy8gIH1cblxuICAgIC8vIEhBIDE4LUpBTi0yNCBEdW1teSBTdGF0aWMgZGF0YSBmb3IgdGVzdGluZ1xuICAgIC8vIHRoaXMuZGF0YUJpbmQgPSB7XG4gICAgLy8gICBcIl9pZFwiOiBcIjY1OWVkMDAyZWQ1MWJiODA2MTU0NDI1NVwiLFxuICAgIC8vICAgXCJjb21wYW55SWRcIjogXCI1dWxsaDFCV3BZcW52ektoOUxcIixcbiAgICAvLyAgIFwibmFtZVwiOiBcIkFsIFlhc21pbmVcIixcbiAgICAvLyAgIFwiY29kZVwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcInN0YXR1c1wiOiBcIkluLVByb2dyZXNzXCIsXG4gICAgLy8gICBcImNyZWF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTc6MTI6MzQuNjg2WlwiLFxuICAgIC8vICAgXCJ1cGRhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE5OjUzOjA4LjEzNVpcIixcbiAgICAvLyAgIFwiX192XCI6IDAsXG4gICAgLy8gICBcIm93bmVyXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwiY3VzdG9tZXJcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJkYXRpXCI6IFwiMjAyNC0wMS0yM1QxODozMDowMC4wMDBaXCIsXG4gICAgLy8gICBcInRpbWlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcbiAgICAvLyBcImZOYW1lXCI6IFwiSGFpZGVyXCIsXG4gICAgLy8gXCJsTmFtZVwiOiBcIkFsaVwiLFxuICAgIC8vIFwiZGVmYXVsdEFwcFwiOiBcIk5YVFwiLFxuICAgIC8vIFwiZW1haWxcIjogXCJoYWlkZXJAZ21haWwuY29tXCIsXG4gICAgLy8gXCJsb2NhdGlvblwiOiB7YWRkcmVzczogXCIxMDcsIEFzaG9rIE5hZ2FyLCBLYWR1Z29uZGFuYWhhbGxpLCBCZW5nYWx1cnUsIEthcm5hdGFrYSA1NjAwNDUsIEluZGlhXCIsXG4gICAgLy8gICBsYXRpdHVkZTogMTMuMDIwMDU3NSxcbiAgICAvLyAgIGxvbmdpdHVkZTogNzcuNjEyOTgxNn0sXG4gICAgLy8gXCJsb2NhdGlvblwiOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcbiAgICAvLyBcInRleHRBcmVhXCI6IFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtXCIsXG4gICAgLy8gfTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICB9XG4gLy8gVkQgTk9WMjMgLSB1cGRhdGUgdGhlIGpzb24gZGF0YSB3aGVuIGJvb2tsZXRJZCBhbmQgYm9va2xldEpTT04gY2hhbmdlc1xuICBuZ09uQ2hhbmdlcyhzaW1wbGVjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpIHtcbiAgIC8vIEhBIDIzSkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICBpZihzaW1wbGVjaGFuZ2VzWydib29rbGV0SWQnXSB8fCAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXSAmJiAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSl7XG4gICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25uYWlyZSBuZ09uQ2hhbmdlcycpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYm9va2xldCk7XG4gICAgLy8gaWYodGhpcy5ib29rbGV0ID09IHVuZGVmaW5lZCB8fCB0aGlzLmJvb2tsZXQubGVuZ3RoID09IDApIHtcbiAgICAvLyAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgICAvLyB9XG4gIH1cblxuICBwcm9jZXNzQm9va2xldCgpIHtcbiAgICBpZiAodGhpcy5ib29rbGV0SWQpIHtcbiAgICAgIGlmICh0aGlzLmJvb2tsZXRJZC5sZW5ndGggPT0gMTgpIHtcbiAgICAgICAgdGhpcy5yZWFkQm9va2xldCh0aGlzLmJvb2tsZXRJZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04pIHtcbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcbiAgICAgIHRoaXMuaXNBbnN3ZXJGbGFnID0gdHJ1ZTtcblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTiAhPSBudWxsIHx8IHRoaXMuYm9va2xldEpTT04gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHRoaXMuYm9va2xldEpTT04pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJvb2tsZXQgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHRoaXMuYm9va2xldEpTT04uYW5zd2VyYm9vaztcblxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxuICAgICAgZm9yICh2YXIgc3EgaW4gdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zcU9wdGlvbnMuc2V0KHNxLCB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rbGV0XG4gICAgICAvLyBIQSAxN0pBTjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgdG8gYXZvaWQgdW5kZWZpbmVkIHNjZW5hcmlvXG4gICAgICAvLyBIQSAwOUZFQjI0IEFkZGluZyBjb25kaXRpb24gdG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwICYmIE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSEEgMjhERUMyMyB0aGlzIGFwcGxpZXMgZm9yIGJvb2sgb3IgcXVlc3Rpb25zXG4gICAgICBlbHNle1xuICAgICAgICB2YXIgdmFsdWUgPSAnJztcbiAgICAgICAgLy8gSEEgMDlGRUIyNCBBZGRlZCB0ZXJuYXJ5XG4gICAgICAgIHZhbHVlID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzWzBdPy5JZDtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2spO1xuICAgICAgfVxuICAgICAgXG4gICAgICAgLy8gVkQgMjBKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OPy50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04udHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2s/LkFjdGlvbnNfX2MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICAvLyBjb25zb2xlLmxvZygnU3R5bGVfX2MnLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5TdHlsZV9fYyk7XG4gICAgaWYodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYykpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuICAgIGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvLyBIQSAxOC1KQU4tMjQgVGhlIGNvbmRpdGlvbiBpcyB1c2VkIGZvciBCaW5kLUluIExvZ2ljIFxuICAgIHRoaXMuaGFuZGxlQ29tcGxldGVCb29rbGV0KHRoaXMuYm9va2xldEpTT04pOyBcbiAgfVxuIC8vIFZEIDEySnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgcmVhZEJvb2tsZXQgPSAodXVpZDogc3RyaW5nKSA9PiB7XG4gICAgaWYodGhpcy5zZXJ2ID09IFwiYXBpXCIpIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QVBJRGF0YShcbiAgICAgICAgdGhpcy50a24sXG4gICAgICAgIFtcIkJvb2tsZXRcIiwgXCJyZWFkXCIsIHV1aWQsdGhpcy5sYW5ndWFnZUNvZGVdLFxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcbiAgICAgICAgdGhpcy5mYWlsdXJlUmVhZEJvb2tsZXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2ZTZXJ2aWNlLnJlbW90ZUFjdGlvbihcbiAgICAgICAgXCJOeHRDb250cm9sbGVyLnByb2Nlc3NcIixcbiAgICAgICAgW1wiQm9va2xldFwiLCBcInJlYWRcIiwgdXVpZCx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1Y2Nlc3NSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhlIHN1Y2Nlc3NSZWFkQm9va2xldCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICBpZihyZXNwb25zZSAhPSBudWxsIHx8IHJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUocmVzcG9uc2UpO1xuXG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXG4gICAgICAvLyB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XG4gICAgICBcbiAgICAgIHRoaXMuYm9va2xldCA9IHJlc3BvbnNlLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHJlc3BvbnNlLmFuc3dlcmJvb2s7XG4gICAgICBcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcbiAgICAgIGZvciAodmFyIHNxIGluIHJlc3BvbnNlLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHJlc3BvbnNlLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZShyZXNwb25zZS5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICBpZihyZXNwb25zZT8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZhaWx1cmVSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuXG4gIH1cblxuICBoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uOkFjdGlvbk1ldGEpIHtcbiAgICAvLyBIQSAxOUpBTjI0IEFjdGlvbiBjaGFuZ2VzXG4gICAgdGhpcy5hbnN3ZXJMaXN0ID0gW107XG4gICAgdGhpcy5kYXRhQmluZCA9IFtdOyAvLyBIQSAxMkZFQjI0IENsZWFyaW5nIGRhdGFCaW5kIHVwb24gYnV0dG9uIGFjdGlvbiBzbyB0aGF0IGRhdGFCaW5kIHZhbHVlIHdpbGwgbm90IG92ZXJyaWRlIHRoZSBjaGFuZ2VkIHZhbHVlXG4gICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICBsZXQgZGF0YVRvUGFyZW50ID0ge307XG4gICAgbGV0IHZhbGlkRm9ybSA9IHRydWU7IC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgIC8vIEhBIDIySkFOMjQgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjbG9zZSBldmVudCB3b3JrXG4gICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9IGFjdGlvbi5ldmVudHRvZW1pdDtcbiAgICBpZighKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ2Nsb3NlJyB8fCBhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpKXtcbiAgICAgIC8vIEhBIDE4LUpBTi0yNCBTZW5kaW5nIHRoZSBjb21wbGV0ZSBqc29uIGRhdGEgYWxzbyBcbiAgICAgIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCk7XG4gICAgICAvLyBIQSAxN0pBTjI0IG54dElkIHRvIGRhdGFQYXJlbnQgb2JqZWN0XG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OKXtcbiAgICAgICAgZGF0YVRvUGFyZW50WydueHRJZCddID0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgICB9XG4gICAgICAvLyBIQSAxMS1KQU4tMjQgTWluaW1pemluZyB0aGUgdmFsdWUgd2hpY2ggaGFzIHRvIGJlIHBhc3NlZCB0byB0aGUgc2VydmVyXG4gICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldChkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10pO1xuICAgICAgZGF0YVRvUGFyZW50WydkYXRhJ10gPSB0aGlzLmFuc3dlckxpc3QgPyB0aGlzLmFuc3dlckxpc3QgOiBkYXRhVG9QYXJlbnRbJ2RhdGEnXTtcbiAgICAgIC8vIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b24gdmFsaWRhdGluZyB0aGUgcmVxdWlyZWQgZmllbGRzXG4gICAgICBmb3IobGV0IGtleSBpbiBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcCl7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRCb29rICA9IGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGN1cnJlbnRCb29rLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAvLyBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICAgICAgICBpZihlbGVtZW50LklzX09wdGlvbmFsX19jICYmIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ3N1Ym1pdCcgJiYgIWVsZW1lbnQuaW5wdXQpe1xuICAgICAgICAgICAgZWxlbWVudC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB2YWxpZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5zdWJtaXRDaGFuZ2UoZWxlbWVudC5JZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFZEIDAyQXVnMjQgLSBjbGVhciBhY3Rpb24gY2hhbmdlc1xuICAgICAgICAgIGlmKGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ2NsZWFyJyl7XG4gICAgICAgICAgICBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ1JhZGlvJykge1xuICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9ZWxzZSBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0ZpbGUnKXtcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9IFtdO1xuICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFZEIDEzTUFZMjQgLSBwcmludCBRUiBidXR0b24gY2hhbmdlc1xuICAgIGlmKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jyl7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbkRhdGEnXSA9IGFjdGlvblsnZGF0YSddO1xuICAgIH1cbiAgICAvLyBIQSAyM0pBTjI0IFRvIGNhbGwgdGhlIGFjdGlvbiBvbiBhbnkgZXZlbnRcbiAgIC8vICBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICBpZih2YWxpZEZvcm0pe1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1lbHNlIHtcbiAgICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPSAnZXJyb3InO1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDE4LUpBTi0yNCBoYW5kbGVDb21wbGV0ZUJvb2tsZXQgaXMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljXG4gIGhhbmRsZUNvbXBsZXRlQm9va2xldChjb21wbGV0ZUJvb2tsZXQpe1xuICAgIGlmKE9iamVjdC5rZXlzKGNvbXBsZXRlQm9va2xldD8uYm9va1F1ZXN0aW9uc01hcCA/PyB7fSkubGVuZ3RoID09PSAwKXsgLy8gSEEgMTEtSkFOLTI0IElmIGNvbmRpdGlvbiB0byBsb2FkIGJvb2tsZXRcbiAgICAgIHRoaXMuaGFuZGxlQm9vayhjb21wbGV0ZUJvb2tsZXQ/LnF1ZXN0aW9uYm9vaz8uUXVlc3Rpb25zX19yKTtcbiAgICB9XG4gICAgZWxzZXsgLy8gSEEgMTEtSkFOLTI0IFRvIGxvYWQgYm9vayBxdWVzdGlvbnNcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGlmKHZhbC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAgIHRoaXMuaGFuZGxlQm9vayh2YWwuUXVlc3Rpb25zX19yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyh2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZUJvb2sgbG9hZHMgdGhlIEJvb2tcbiAgaGFuZGxlQm9vayhxdWVzTGlzdDogYW55KXtcbiAgICBxdWVzTGlzdD8ucmVjb3Jkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAvLyBIQSAyNEpBTjI0IEZldGNoaW5nIGZyb20gUUIgcmVmZXJlbmNlXG4gICAgICAgIHZhciBib29rID0gSlNPTi5wYXJzZShlbGVtZW50LlFCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MpO1xuICAgICAgICBib29rLnF1ZXN0aW9uYm9vay5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyhxdWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLmhhbmRsZVF1ZXMoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBIQSAxMS1KQU4tMjQgaGFuZGxlUXVlcyB0byBsb2FkIHF1ZXN0aW9uXG4gIGhhbmRsZVF1ZXMocXVlczogYW55KXtcbiAgICAvLyBIQSAxOS1KQU4tMjQgSWYgY29uZGl0aW9uIGlzIGZvciBiaW5kLWluLCBjb3JyZWN0aW9uXG4gICAgLy8gSEEgMDlGRUIyNCBBZGRpbmcgY29uZGl0aW9uIHRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XG4gICAgICBmb3IobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XG4gICAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jID09PSBrZXkpe1xuICAgICAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyB8fCBxdWVzLlR5cGVfX2MgPT09ICdSYWRpbycgKXtcbiAgICAgICAgICAgIHRoaXMuc3FPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ1JlZmVyZW5jZV9GaWVsZF9fYyddID09PSBrZXkpe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRbJ2lucHV0J10gPSBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBIQSAyNEpBTjI0IFRvIGJpbmQtaW4gRGF0ZSBhbmQgRGF0ZVRpbWVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLWluIExvY2F0aW9uIFR5cGVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsdWUgJywgdmFsdWUpO1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWVbJ2FkZHJlc3MnXSA/IHZhbHVlWydhZGRyZXNzJ10gOiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hbnN3ZXJMaXN0LnB1c2gocXVlcyk7IC8vIEhBIDEyRkVCMjQgVG8gZ2l2ZSB0aGUgdmFsdWUgZm9yIGRhdGFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgY29uc3QgcXVlc3Rpb24gPSB7fTtcbiAgICAgIHF1ZXN0aW9uWydpZCddID0gcXVlcy5JZDtcbiAgICAgIC8vIHF1ZXN0aW9uWydRdWVzdGlvbl9fYyddID0gcXVlcy5RdWVzdGlvbl9fYztcbiAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dDtcbiAgICAgIC8vIEhBIDEyRkVCMjQgVG8gYmluZC1vdXQgTG9jYXRpb24gVHlwZVxuICAgICAgaWYocXVlcy5UeXBlX19jID09PSAnTG9jYXRpb24nKXtcbiAgICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0ID8gcXVlcy5pbnB1dCA6IHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHF1ZXN0aW9uWydUeXBlX19jJ10gPSBxdWVzLlR5cGVfX2M7XG4gICAgICBxdWVzdGlvblsnUXVlc3Rpb25fTm9fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fTm9fX2M7XG4gICAgICBxdWVzdGlvblsnUmVmZXJlbmNlX0ZpZWxkX19jJ10gPSBxdWVzPy5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIEJvb2tsZXRDb21wb25lbnQucmVhZFF1ZXN0aW9ucyAnICsgcWJJZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rUXVlc3Rpb25zTWFwLnNpemUpO1xuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcbiAgICAvLyBIQSAzMS1KQU4tMjQgQWRkZWQgdGVybmFyeSB0byBhdm9pZCB1bmRlZmluZWRcbiAgICBmb3IodmFyIHNxIGluIHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpPy5RdWVzdGlvbnNfX3I/LnJlY29yZHMpIHtcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLlF1ZXN0aW9uc19fci5yZWNvcmRzW3NxXTtcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xuICAgICAgaWYocSl7XG4gICAgICAgIGlmKChxLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBxLlR5cGVfX2MgPT0gJ1JhZGlvJykgJiYgdGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKSB7XG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaChxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZEIDEySnVuMjQgZmllbGQgcGVybWlzaXNpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmZpZWxkUmVzdHJpY3Rpb25zKSB7XG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcbiAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gZmllbGRSZXN0cmljdGlvbnMuZ2V0KHF1ZXMuVW5pcXVlX0lkZW50aWZpZXJfX2MpO1xuICBcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb24pIHtcbiAgICAgICAgICAgICAgcXVlcy5SZWFkX09ubHlfX2MgPSByZXN0cmljdGlvbiA9PT0gJ3JlYWRPbmx5JztcbiAgICAgICAgICAgICAgcXVlcy5Jc19IaWRlX19jID0gcmVzdHJpY3Rpb24gPT09ICdoaWRlJztcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9ucyk7XG4gICAgcmV0dXJuIHF1ZXN0aW9ucztcbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHJlYWRUcmFuc1F1ZXN0aW9ucyhxYklkOiBzdHJpbmcpe1xuICAgIGxldCByZWNvcmQgPSBbXTtcbiAgICAgIGxldCB0cmFuc2xhdGVSZWNvcmQgPSB0aGlzLnRyYW5zbGF0ZU1hcC5nZXQocWJJZCk7XG4gICAgIGlmKHRyYW5zbGF0ZVJlY29yZCAmJiB0cmFuc2xhdGVSZWNvcmQubGVuZ3RoID4gMCkge1xuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcbiAgICAgICAgaWYobGFuUmVjLmxhbmd1YWdlQ29kZSA9PSB0aGlzLmxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgIHJlY29yZCA9IGxhblJlYy5maWVsZHNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgIH1cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICBnZXRUZXh0KHZhbHVlKSB7XG4gICAgdmFyIGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwidGV4dC9odG1sXCIpO1xuICAgIC8vY29uc29sZS5sb2coIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcbiAgICApO1xuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8bmd4LXNwaW5uZXIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XG48IS0tIEJvb2tsZXQgSGFuZGxpbmctLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cbiAgICA8IS0tIE1SIENvbW1lbnRlZCBiZWxvdyBjb2RlIHRvIGVuc3VyZSBzaW5nbGUgSlNPTiBmb3IgVU5DT05ESVRJT05BTCBCb29rbGV0cyAtLT5cbiAgICA8IS0tIDxsaWItcXVlc3Rpb25uYWlyZSBbc2Vydl09XCJzZXJ2XCIgW3FiSWRdPVwicWIuSWRcIiBbdGtuXT1cInRrblwiPjwvbGliLXF1ZXN0aW9ubmFpcmU+IC0tPlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBJZiBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va2xldCAgLS0+XG4gICAgPGRpdiAqbmdJZj1cInFiLlF1ZXN0aW9uc19fcj8ucmVjb3JkczsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxYi5RdWVzdGlvbnNfX3IucmVjb3Jkc1wiIFtjbGFzc109XCJxYi5pc1NoZW5nZWxfX2MgPyAncXVlc3Rpb25kaXYxJyA6ICdxdWVzdGlvbmRpdjEgcGFkZC1ib3R0b20nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25kaXYyXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAxN0pBTjI0IC0gSXMgdGl0bGUgaXMgZW5hYmxlZCBzbyB0aGF0IGJhc2VkIG9uIHRoZSBib29sZWFuIGRpdiB3aWxsIGJlIHZpc2libGUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuSXNfVGl0bGVfX2NcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDhOT1YyMyAtIHNob3dpbmcgbGFibGUgd2hlbiBpdHMgYXZhaWxhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MpXCIgKm5nSWY9XCJxdWVzPy5RdWVzdGlvbl9UZXh0X19jXCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IDwhLS0gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXQgLS0+IDwhLS1WRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJcIiBbdG9rZW5dPVwidG9rZW5cIiBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgW3F1ZXN0aW9uSXRlbV09XCJxdWVzXCIgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLklkKVwiIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5JZClcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBIQSAyOERFQzIzIEJlbG93IGVsc2UgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tzIG9yIHF1ZXN0aW9ucyAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cbiAgICAgICAgPGRpdiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ3F1ZXN0aW9uZGl2MScgOiAncXVlc3Rpb25kaXYxIHBhZGQtYm90dG9tJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uZGl2MlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcWIuSXNfVGl0bGVfX2NcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDhOT1YyMyAtIHNob3dpbmcgbGFibGUgd2hlbiBpdHMgYXZhaWxhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHFiPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicWI/LlF1ZXN0aW9uX1RleHRfX2NcIiA+IFxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LlF1ZXN0aW9uX1RleHRfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHFiPy5UaXRsZV9fYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT4gPCEtLSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFtxdWVzdGlvbkl0ZW1dPVwicWJcIiBbdHJhbnNsYXRlZFF1ZXN0aW9uc109XCJyZWFkVHJhbnNRdWVzdGlvbnMocWIuSWQpXCIgW3F1ZXN0aW9uc109XCJyZWFkUXVlc3Rpb25zKHFiLklkKVwiICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gR3JvdXAgQWN0aW9ucyAtLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiBjbGFzcz1cImFsaWduLXN1Ym1pdC1yb3dcIiAqbmdJZj1cImFiSXRlbT8uU3RhdHVzX19jICE9ICdDb21wbGV0ZWQnXCIgW25nQ2xhc3NdPVwibGFuZ0RpcmVjdGlvblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPCEtLSAvLyBIQSAyMkpBTjI0IENvbW1vbmlzZSB0aGUgYnV0dG9uIHN0eWxlIGluIGZ1c2lvbiAtLT5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQm9va2xldEFjdGlvbkNsaWNrKGFjdGlvbilcIiBuZ0NsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGZjLWJ1dHRvbiBueHRCdXR0b25cIj5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBK0JqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXJDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWpFLFVBQVUsQ0FBaUI7SUFFM0IsT0FBTyxHQUFVLEVBQUUsQ0FBQztJQUNwQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBaUIsRUFBRSxDQUFDO0lBQzNCLGdCQUFnQixHQUFRLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbEMsWUFBWSxHQUFRLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBRSxtQ0FBbUM7SUFDbEUsU0FBUyxHQUFRLElBQUksR0FBRyxFQUFFLENBQUM7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QyxTQUFTLENBQUMsdUJBQXVCLENBQzNDLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FoYVUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsdWVDN0I3Qix3L0ZBZ0RBOzs0RkRuQmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7c1NBS2QsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFnQkUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNhbGVzZm9yY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aW9uTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uTWV0YSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gXCIuLi8uLi93cmFwcGVyXCI7XG5pbXBvcnQgeyBCb29rbGV0V3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9ib29rbGV0V3JhcHBlclwiO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZVwiO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJvb2tsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2xldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jvb2tsZXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBib29rbGV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgc2Vydjogc3RyaW5nO1xuICBASW5wdXQoKSB0a246IHN0cmluZztcbiAgQElucHV0KCkgYm9va2xldEpTT046IGFueTtcbiAgQElucHV0KCkgZHJvcGRvd25EZXBlbmRlbnREYXRhOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZztcbiAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlOnN0cmluZzsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIGZpZWxkUmVzdHJpY3Rpb25zOiBhbnk7IC8vIFZEIDEySnVuMjQgLSBmaWVsZCBwZXJtaXNzaW9uIGNoYW5nZVxuICBAT3V0cHV0KCkgaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgbnh0Qm9va2xldDogQm9va2xldFdyYXBwZXI7XG5cbiAgcHVibGljIGJvb2tsZXQ6IGFueVtdID0gW107XG4gIHB1YmxpYyBhYkl0ZW06IGFueSA9IHt9O1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uTWV0YVtdID0gW107XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyB0cmFuc2xhdGVNYXA6IGFueSA9IG5ldyBNYXAoKTsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgc3FPcHRpb25zOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0Fuc3dlckZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNwaW5uZXJOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzcGlubmVyVHlwZTogc3RyaW5nO1xuICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgaXMgY3JlYXRlZCB0byBhc3NpZ24gdGhlIGRpcmVjdGlvbiBhcyBjbGFzc1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7IC8vIEhBIDI4REVDMjMgbWFraW5nIGx0ciBhcyBkZWZhdWx0IGRpcmVjdGlvblxuICBhbnN3ZXJMaXN0ID0gW107IC8vIEhBIDExLUpBTi0yNCBBbnN3ZXJsaXN0IHRvIHN0b3JlIHRoZSBtaW5pbWFsIHZhbHVlXG4gIEBJbnB1dCgpIGRhdGFCaW5kOiBhbnkgPSB7fTsgLy8gSEEgMTgtSkFOLTI0IFRvIGluc2VydCB0aGUgZW5kcG9pbnQgdmFsdWUgdG8gdGhlIHF1ZXN0aW9uXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICkgeyBcbiAgICB0aGlzLnNwaW5uZXJOYW1lID0gXCJzcDFcIjtcbiAgICB0aGlzLnNwaW5uZXJUeXBlID0gXCJiYWxsLXNwaW4tY2xvY2t3aXNlXCI7XG4gICAgY29uc29sZS5sb2coJ2Ryb3Bkb3duRGVwZW5kZW50RGF0YScsdGhpcy5kcm9wZG93bkRlcGVuZGVudERhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgXG4vLyAgVkQgMTJKYW4yNCBmaWVsZFJlc3RyaWN0aW9ucyBmb3JtYXRlIFxuICAvLyAgIHtcbiAgLy8gICAgIFwiZmllbGRzXCIgOiB7XG4gIC8vICAgICAgICAgXCJ0cmFuc1FiLTAxXCIgOiBcInJlYWRPbmx5XCIsXG4gIC8vICAgICAgICAgXCJUcmFuc0ZpcjAyXCIgOiBcIlwiLFxuICAvLyAgICAgICAgIFwiVHJhbnNMYXN0MDNcIiA6IFwicmVhZE9ubHlcIixcbiAgLy8gICAgICAgICBcImJrMi1xMlwiIDogXCJoaWRlXCJcbiAgLy8gICAgIH1cbiAgLy8gIH1cblxuICAgIC8vIEhBIDE4LUpBTi0yNCBEdW1teSBTdGF0aWMgZGF0YSBmb3IgdGVzdGluZ1xuICAgIC8vIHRoaXMuZGF0YUJpbmQgPSB7XG4gICAgLy8gICBcIl9pZFwiOiBcIjY1OWVkMDAyZWQ1MWJiODA2MTU0NDI1NVwiLFxuICAgIC8vICAgXCJjb21wYW55SWRcIjogXCI1dWxsaDFCV3BZcW52ektoOUxcIixcbiAgICAvLyAgIFwibmFtZVwiOiBcIkFsIFlhc21pbmVcIixcbiAgICAvLyAgIFwiY29kZVwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcInN0YXR1c1wiOiBcIkluLVByb2dyZXNzXCIsXG4gICAgLy8gICBcImNyZWF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTc6MTI6MzQuNjg2WlwiLFxuICAgIC8vICAgXCJ1cGRhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE5OjUzOjA4LjEzNVpcIixcbiAgICAvLyAgIFwiX192XCI6IDAsXG4gICAgLy8gICBcIm93bmVyXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwiY3VzdG9tZXJcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJkYXRpXCI6IFwiMjAyNC0wMS0yM1QxODozMDowMC4wMDBaXCIsXG4gICAgLy8gICBcInRpbWlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcbiAgICAvLyBcImZOYW1lXCI6IFwiSGFpZGVyXCIsXG4gICAgLy8gXCJsTmFtZVwiOiBcIkFsaVwiLFxuICAgIC8vIFwiZGVmYXVsdEFwcFwiOiBcIk5YVFwiLFxuICAgIC8vIFwiZW1haWxcIjogXCJoYWlkZXJAZ21haWwuY29tXCIsXG4gICAgLy8gXCJsb2NhdGlvblwiOiB7YWRkcmVzczogXCIxMDcsIEFzaG9rIE5hZ2FyLCBLYWR1Z29uZGFuYWhhbGxpLCBCZW5nYWx1cnUsIEthcm5hdGFrYSA1NjAwNDUsIEluZGlhXCIsXG4gICAgLy8gICBsYXRpdHVkZTogMTMuMDIwMDU3NSxcbiAgICAvLyAgIGxvbmdpdHVkZTogNzcuNjEyOTgxNn0sXG4gICAgLy8gXCJsb2NhdGlvblwiOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcbiAgICAvLyBcInRleHRBcmVhXCI6IFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtXCIsXG4gICAgLy8gfTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICB9XG4gLy8gVkQgTk9WMjMgLSB1cGRhdGUgdGhlIGpzb24gZGF0YSB3aGVuIGJvb2tsZXRJZCBhbmQgYm9va2xldEpTT04gY2hhbmdlc1xuICBuZ09uQ2hhbmdlcyhzaW1wbGVjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpIHtcbiAgIC8vIEhBIDIzSkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICBpZihzaW1wbGVjaGFuZ2VzWydib29rbGV0SWQnXSB8fCAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXSAmJiAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSl7XG4gICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25uYWlyZSBuZ09uQ2hhbmdlcycpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYm9va2xldCk7XG4gICAgLy8gaWYodGhpcy5ib29rbGV0ID09IHVuZGVmaW5lZCB8fCB0aGlzLmJvb2tsZXQubGVuZ3RoID09IDApIHtcbiAgICAvLyAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgICAvLyB9XG4gIH1cblxuICBwcm9jZXNzQm9va2xldCgpIHtcbiAgICBpZiAodGhpcy5ib29rbGV0SWQpIHtcbiAgICAgIGlmICh0aGlzLmJvb2tsZXRJZC5sZW5ndGggPT0gMTgpIHtcbiAgICAgICAgdGhpcy5yZWFkQm9va2xldCh0aGlzLmJvb2tsZXRJZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04pIHtcbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcbiAgICAgIHRoaXMuaXNBbnN3ZXJGbGFnID0gdHJ1ZTtcblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTiAhPSBudWxsIHx8IHRoaXMuYm9va2xldEpTT04gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHRoaXMuYm9va2xldEpTT04pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJvb2tsZXQgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHRoaXMuYm9va2xldEpTT04uYW5zd2VyYm9vaztcblxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxuICAgICAgZm9yICh2YXIgc3EgaW4gdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zcU9wdGlvbnMuc2V0KHNxLCB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rbGV0XG4gICAgICAvLyBIQSAxN0pBTjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgdG8gYXZvaWQgdW5kZWZpbmVkIHNjZW5hcmlvXG4gICAgICAvLyBIQSAwOUZFQjI0IEFkZGluZyBjb25kaXRpb24gdG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwICYmIE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSEEgMjhERUMyMyB0aGlzIGFwcGxpZXMgZm9yIGJvb2sgb3IgcXVlc3Rpb25zXG4gICAgICBlbHNle1xuICAgICAgICB2YXIgdmFsdWUgPSAnJztcbiAgICAgICAgLy8gSEEgMDlGRUIyNCBBZGRlZCB0ZXJuYXJ5XG4gICAgICAgIHZhbHVlID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzWzBdPy5JZDtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2spO1xuICAgICAgfVxuICAgICAgXG4gICAgICAgLy8gVkQgMjBKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OPy50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04udHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2s/LkFjdGlvbnNfX2MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICAvLyBjb25zb2xlLmxvZygnU3R5bGVfX2MnLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5TdHlsZV9fYyk7XG4gICAgaWYodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYykpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuICAgIGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvLyBIQSAxOC1KQU4tMjQgVGhlIGNvbmRpdGlvbiBpcyB1c2VkIGZvciBCaW5kLUluIExvZ2ljIFxuICAgIHRoaXMuaGFuZGxlQ29tcGxldGVCb29rbGV0KHRoaXMuYm9va2xldEpTT04pOyBcbiAgfVxuIC8vIFZEIDEySnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgcmVhZEJvb2tsZXQgPSAodXVpZDogc3RyaW5nKSA9PiB7XG4gICAgaWYodGhpcy5zZXJ2ID09IFwiYXBpXCIpIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QVBJRGF0YShcbiAgICAgICAgdGhpcy50a24sXG4gICAgICAgIFtcIkJvb2tsZXRcIiwgXCJyZWFkXCIsIHV1aWQsdGhpcy5sYW5ndWFnZUNvZGVdLFxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcbiAgICAgICAgdGhpcy5mYWlsdXJlUmVhZEJvb2tsZXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2ZTZXJ2aWNlLnJlbW90ZUFjdGlvbihcbiAgICAgICAgXCJOeHRDb250cm9sbGVyLnByb2Nlc3NcIixcbiAgICAgICAgW1wiQm9va2xldFwiLCBcInJlYWRcIiwgdXVpZCx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1Y2Nlc3NSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhlIHN1Y2Nlc3NSZWFkQm9va2xldCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICBpZihyZXNwb25zZSAhPSBudWxsIHx8IHJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUocmVzcG9uc2UpO1xuXG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXG4gICAgICAvLyB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XG4gICAgICBcbiAgICAgIHRoaXMuYm9va2xldCA9IHJlc3BvbnNlLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHJlc3BvbnNlLmFuc3dlcmJvb2s7XG4gICAgICBcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcbiAgICAgIGZvciAodmFyIHNxIGluIHJlc3BvbnNlLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHJlc3BvbnNlLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZShyZXNwb25zZS5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICBpZihyZXNwb25zZT8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZhaWx1cmVSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuXG4gIH1cblxuICBoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uOkFjdGlvbk1ldGEpIHtcbiAgICAvLyBIQSAxOUpBTjI0IEFjdGlvbiBjaGFuZ2VzXG4gICAgdGhpcy5hbnN3ZXJMaXN0ID0gW107XG4gICAgdGhpcy5kYXRhQmluZCA9IFtdOyAvLyBIQSAxMkZFQjI0IENsZWFyaW5nIGRhdGFCaW5kIHVwb24gYnV0dG9uIGFjdGlvbiBzbyB0aGF0IGRhdGFCaW5kIHZhbHVlIHdpbGwgbm90IG92ZXJyaWRlIHRoZSBjaGFuZ2VkIHZhbHVlXG4gICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICBsZXQgZGF0YVRvUGFyZW50ID0ge307XG4gICAgbGV0IHZhbGlkRm9ybSA9IHRydWU7IC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgIC8vIEhBIDIySkFOMjQgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjbG9zZSBldmVudCB3b3JrXG4gICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9IGFjdGlvbi5ldmVudHRvZW1pdDtcbiAgICBpZighKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ2Nsb3NlJyB8fCBhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpKXtcbiAgICAgIC8vIEhBIDE4LUpBTi0yNCBTZW5kaW5nIHRoZSBjb21wbGV0ZSBqc29uIGRhdGEgYWxzbyBcbiAgICAgIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCk7XG4gICAgICAvLyBIQSAxN0pBTjI0IG54dElkIHRvIGRhdGFQYXJlbnQgb2JqZWN0XG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OKXtcbiAgICAgICAgZGF0YVRvUGFyZW50WydueHRJZCddID0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgICB9XG4gICAgICAvLyBIQSAxMS1KQU4tMjQgTWluaW1pemluZyB0aGUgdmFsdWUgd2hpY2ggaGFzIHRvIGJlIHBhc3NlZCB0byB0aGUgc2VydmVyXG4gICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldChkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10pO1xuICAgICAgZGF0YVRvUGFyZW50WydkYXRhJ10gPSB0aGlzLmFuc3dlckxpc3QgPyB0aGlzLmFuc3dlckxpc3QgOiBkYXRhVG9QYXJlbnRbJ2RhdGEnXTtcbiAgICAgIC8vIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b24gdmFsaWRhdGluZyB0aGUgcmVxdWlyZWQgZmllbGRzXG4gICAgICBmb3IobGV0IGtleSBpbiBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcCl7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRCb29rICA9IGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGN1cnJlbnRCb29rLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAvLyBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICAgICAgICBpZihlbGVtZW50LklzX09wdGlvbmFsX19jICYmIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ3N1Ym1pdCcgJiYgIWVsZW1lbnQuaW5wdXQpe1xuICAgICAgICAgICAgZWxlbWVudC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB2YWxpZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5zdWJtaXRDaGFuZ2UoZWxlbWVudC5JZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFZEIDAyQXVnMjQgLSBjbGVhciBhY3Rpb24gY2hhbmdlc1xuICAgICAgICAgIGlmKGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ2NsZWFyJyl7XG4gICAgICAgICAgICBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ1JhZGlvJykge1xuICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9ZWxzZSBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0ZpbGUnKXtcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9IFtdO1xuICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFZEIDEzTUFZMjQgLSBwcmludCBRUiBidXR0b24gY2hhbmdlc1xuICAgIGlmKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jyl7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbkRhdGEnXSA9IGFjdGlvblsnZGF0YSddO1xuICAgIH1cbiAgICAvLyBIQSAyM0pBTjI0IFRvIGNhbGwgdGhlIGFjdGlvbiBvbiBhbnkgZXZlbnRcbiAgIC8vICBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICBpZih2YWxpZEZvcm0pe1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1lbHNlIHtcbiAgICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPSAnZXJyb3InO1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDE4LUpBTi0yNCBoYW5kbGVDb21wbGV0ZUJvb2tsZXQgaXMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljXG4gIGhhbmRsZUNvbXBsZXRlQm9va2xldChjb21wbGV0ZUJvb2tsZXQpe1xuICAgIGlmKE9iamVjdC5rZXlzKGNvbXBsZXRlQm9va2xldD8uYm9va1F1ZXN0aW9uc01hcCA/PyB7fSkubGVuZ3RoID09PSAwKXsgLy8gSEEgMTEtSkFOLTI0IElmIGNvbmRpdGlvbiB0byBsb2FkIGJvb2tsZXRcbiAgICAgIHRoaXMuaGFuZGxlQm9vayhjb21wbGV0ZUJvb2tsZXQ/LnF1ZXN0aW9uYm9vaz8uUXVlc3Rpb25zX19yKTtcbiAgICB9XG4gICAgZWxzZXsgLy8gSEEgMTEtSkFOLTI0IFRvIGxvYWQgYm9vayBxdWVzdGlvbnNcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGlmKHZhbC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAgIHRoaXMuaGFuZGxlQm9vayh2YWwuUXVlc3Rpb25zX19yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyh2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZUJvb2sgbG9hZHMgdGhlIEJvb2tcbiAgaGFuZGxlQm9vayhxdWVzTGlzdDogYW55KXtcbiAgICBxdWVzTGlzdD8ucmVjb3Jkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAvLyBIQSAyNEpBTjI0IEZldGNoaW5nIGZyb20gUUIgcmVmZXJlbmNlXG4gICAgICAgIHZhciBib29rID0gSlNPTi5wYXJzZShlbGVtZW50LlFCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MpO1xuICAgICAgICBib29rLnF1ZXN0aW9uYm9vay5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyhxdWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLmhhbmRsZVF1ZXMoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBIQSAxMS1KQU4tMjQgaGFuZGxlUXVlcyB0byBsb2FkIHF1ZXN0aW9uXG4gIGhhbmRsZVF1ZXMocXVlczogYW55KXtcbiAgICAvLyBIQSAxOS1KQU4tMjQgSWYgY29uZGl0aW9uIGlzIGZvciBiaW5kLWluLCBjb3JyZWN0aW9uXG4gICAgLy8gSEEgMDlGRUIyNCBBZGRpbmcgY29uZGl0aW9uIHRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XG4gICAgICBmb3IobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XG4gICAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jID09PSBrZXkpe1xuICAgICAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyB8fCBxdWVzLlR5cGVfX2MgPT09ICdSYWRpbycgKXtcbiAgICAgICAgICAgIHRoaXMuc3FPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ1JlZmVyZW5jZV9GaWVsZF9fYyddID09PSBrZXkpe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRbJ2lucHV0J10gPSBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBIQSAyNEpBTjI0IFRvIGJpbmQtaW4gRGF0ZSBhbmQgRGF0ZVRpbWVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLWluIExvY2F0aW9uIFR5cGVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsdWUgJywgdmFsdWUpO1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWVbJ2FkZHJlc3MnXSA/IHZhbHVlWydhZGRyZXNzJ10gOiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hbnN3ZXJMaXN0LnB1c2gocXVlcyk7IC8vIEhBIDEyRkVCMjQgVG8gZ2l2ZSB0aGUgdmFsdWUgZm9yIGRhdGFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgY29uc3QgcXVlc3Rpb24gPSB7fTtcbiAgICAgIHF1ZXN0aW9uWydpZCddID0gcXVlcy5JZDtcbiAgICAgIC8vIHF1ZXN0aW9uWydRdWVzdGlvbl9fYyddID0gcXVlcy5RdWVzdGlvbl9fYztcbiAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dDtcbiAgICAgIC8vIEhBIDEyRkVCMjQgVG8gYmluZC1vdXQgTG9jYXRpb24gVHlwZVxuICAgICAgaWYocXVlcy5UeXBlX19jID09PSAnTG9jYXRpb24nKXtcbiAgICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0ID8gcXVlcy5pbnB1dCA6IHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHF1ZXN0aW9uWydUeXBlX19jJ10gPSBxdWVzLlR5cGVfX2M7XG4gICAgICBxdWVzdGlvblsnUXVlc3Rpb25fTm9fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fTm9fX2M7XG4gICAgICBxdWVzdGlvblsnUmVmZXJlbmNlX0ZpZWxkX19jJ10gPSBxdWVzPy5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIEJvb2tsZXRDb21wb25lbnQucmVhZFF1ZXN0aW9ucyAnICsgcWJJZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rUXVlc3Rpb25zTWFwLnNpemUpO1xuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcbiAgICAvLyBIQSAzMS1KQU4tMjQgQWRkZWQgdGVybmFyeSB0byBhdm9pZCB1bmRlZmluZWRcbiAgICBmb3IodmFyIHNxIGluIHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpPy5RdWVzdGlvbnNfX3I/LnJlY29yZHMpIHtcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLlF1ZXN0aW9uc19fci5yZWNvcmRzW3NxXTtcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xuICAgICAgaWYocSl7XG4gICAgICAgIGlmKChxLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBxLlR5cGVfX2MgPT0gJ1JhZGlvJykgJiYgdGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKSB7XG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaChxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZEIDEySnVuMjQgZmllbGQgcGVybWlzaXNpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmZpZWxkUmVzdHJpY3Rpb25zKSB7XG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcbiAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gZmllbGRSZXN0cmljdGlvbnMuZ2V0KHF1ZXMuVW5pcXVlX0lkZW50aWZpZXJfX2MpO1xuICBcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb24pIHtcbiAgICAgICAgICAgICAgcXVlcy5SZWFkX09ubHlfX2MgPSByZXN0cmljdGlvbiA9PT0gJ3JlYWRPbmx5JztcbiAgICAgICAgICAgICAgcXVlcy5Jc19IaWRlX19jID0gcmVzdHJpY3Rpb24gPT09ICdoaWRlJztcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9ucyk7XG4gICAgcmV0dXJuIHF1ZXN0aW9ucztcbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHJlYWRUcmFuc1F1ZXN0aW9ucyhxYklkOiBzdHJpbmcpe1xuICAgIGxldCByZWNvcmQgPSBbXTtcbiAgICAgIGxldCB0cmFuc2xhdGVSZWNvcmQgPSB0aGlzLnRyYW5zbGF0ZU1hcC5nZXQocWJJZCk7XG4gICAgIGlmKHRyYW5zbGF0ZVJlY29yZCAmJiB0cmFuc2xhdGVSZWNvcmQubGVuZ3RoID4gMCkge1xuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcbiAgICAgICAgaWYobGFuUmVjLmxhbmd1YWdlQ29kZSA9PSB0aGlzLmxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgIHJlY29yZCA9IGxhblJlYy5maWVsZHNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgIH1cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICBnZXRUZXh0KHZhbHVlKSB7XG4gICAgdmFyIGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwidGV4dC9odG1sXCIpO1xuICAgIC8vY29uc29sZS5sb2coIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcbiAgICApO1xuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8bmd4LXNwaW5uZXIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XG48IS0tIEJvb2tsZXQgSGFuZGxpbmctLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cbiAgICA8IS0tIE1SIENvbW1lbnRlZCBiZWxvdyBjb2RlIHRvIGVuc3VyZSBzaW5nbGUgSlNPTiBmb3IgVU5DT05ESVRJT05BTCBCb29rbGV0cyAtLT5cbiAgICA8IS0tIDxsaWItcXVlc3Rpb25uYWlyZSBbc2Vydl09XCJzZXJ2XCIgW3FiSWRdPVwicWIuSWRcIiBbdGtuXT1cInRrblwiPjwvbGliLXF1ZXN0aW9ubmFpcmU+IC0tPlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBJZiBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va2xldCAgLS0+XG4gICAgPGRpdiAqbmdJZj1cInFiLlF1ZXN0aW9uc19fcj8ucmVjb3JkczsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxYi5RdWVzdGlvbnNfX3IucmVjb3Jkc1wiIGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMTdKQU4yNCAtIElzIHRpdGxlIGlzIGVuYWJsZWQgc28gdGhhdCBiYXNlZCBvbiB0aGUgYm9vbGVhbiBkaXYgd2lsbCBiZSB2aXNpYmxlIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLklzX1RpdGxlX19jXCIgW2NsYXNzXT1cInFiLmlzU2hlbmdlbF9fYyA/ICdoZWFkZXItc3R5bGUnIDogJ3F1ZXN0aW9uLWYtc2l6ZSBhZGRpdGlvbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxdWVzPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicXVlcz8uUXVlc3Rpb25fVGV4dF9fY1wiID4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzPy5RdWVzdGlvbl9UZXh0X19jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFtxdWVzdGlvbkl0ZW1dPVwicXVlc1wiIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5JZClcIiBbcXVlc3Rpb25zXT1cInJlYWRRdWVzdGlvbnMocWIuSWQpXCIgIChoYW5kbGVEcm9wRG93bik9XCJnZXREcm9wRG93bigkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBlbHNlIGxvZ2ljIGlzIHRvIGxvYWQgZnJvbSBib29rcyBvciBxdWVzdGlvbnMgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbmRpdjFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxYi5Jc19UaXRsZV9fY1wiIFtjbGFzc109XCJxYi5pc1NoZW5nZWxfX2MgPyAnaGVhZGVyLXN0eWxlJyA6ICdxdWVzdGlvbi1mLXNpemUgYWRkaXRpb25hbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOE5PVjIzIC0gc2hvd2luZyBsYWJsZSB3aGVuIGl0cyBhdmFpbGFibGUtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldFRleHQocWI/LlF1ZXN0aW9uX1RleHRfX2MpXCIgKm5nSWY9XCJxYj8uUXVlc3Rpb25fVGV4dF9fY1wiID4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxYj8uUXVlc3Rpb25fVGV4dF9fYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LlRpdGxlX19jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJcIiBbdG9rZW5dPVwidG9rZW5cIiBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgW3F1ZXN0aW9uSXRlbV09XCJxYlwiIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5JZClcIiBbcXVlc3Rpb25zXT1cInJlYWRRdWVzdGlvbnMocWIuSWQpXCIgIChoYW5kbGVEcm9wRG93bik9XCJnZXREcm9wRG93bigkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPCEtLSBHcm91cCBBY3Rpb25zIC0tPlxuPCEtLSBIQSAxOURFQzIzIEZvciBEaXJlY3Rpb24gLS0+XG48ZGl2IGNsYXNzPVwiYWxpZ24tc3VibWl0LXJvd1wiICpuZ0lmPVwiYWJJdGVtPy5TdGF0dXNfX2MgIT0gJ0NvbXBsZXRlZCdcIiBbbmdDbGFzc109XCJsYW5nRGlyZWN0aW9uXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8IS0tIC8vIEhBIDIySkFOMjQgQ29tbW9uaXNlIHRoZSBidXR0b24gc3R5bGUgaW4gZnVzaW9uIC0tPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uKVwiIG5nQ2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZmMtYnV0dG9uIG54dEJ1dHRvblwiPlxuICAgICAgICAgICAge3sgYWN0aW9uLm5hbWUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==