nuxeo-development-framework 3.0.0 → 3.0.1

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.
@@ -17,12 +17,13 @@ import * as i11 from "../../../../Core/services/nuxeo/nuxeo.service";
17
17
  import * as i12 from "../../../../shared-services/user.service";
18
18
  import * as i13 from "../../../../configuration/app-config.service";
19
19
  import * as i14 from "../../../documents/components/document-scan/document-scan.service";
20
- import * as i15 from "../../../documents/components/document-scan/document-scan.component";
21
- import * as i16 from "../../../dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component";
22
- import * as i17 from "../../../dynamic-form/components/dynamic-form/dynamic-form.component";
23
- import * as i18 from "@angular/common";
24
- import * as i19 from "../../../../directive/rtl/set-rtl.directive";
25
- import * as i20 from "@ngx-translate/core";
20
+ import * as i15 from "@angular/material/progress-bar";
21
+ import * as i16 from "../../../documents/components/document-scan/document-scan.component";
22
+ import * as i17 from "../../../dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component";
23
+ import * as i18 from "../../../dynamic-form/components/dynamic-form/dynamic-form.component";
24
+ import * as i19 from "@angular/common";
25
+ import * as i20 from "../../../../directive/rtl/set-rtl.directive";
26
+ import * as i21 from "@ngx-translate/core";
26
27
  export class ScanModalComponent {
27
28
  constructor(data, dialogRef, uploadMangmentService, dialogMangmentService, fileMangerService, tosterService, formBuilder, dynamicFormService, dateHelperService, adapter, translationService, nuxeoService, userService, appConfService, envirnoment, documentScanService) {
28
29
  this.data = data;
@@ -295,7 +296,7 @@ export class ScanModalComponent {
295
296
  }
296
297
  }
297
298
  ScanModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanModalComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.UploadManagmentService }, { token: i3.DialogMangmentService }, { token: i4.FileManagerService }, { token: i5.CustomToastrService }, { token: i6.FormBuilder }, { token: i7.DynamicFormService }, { token: i8.DateHelperService }, { token: i9.AdapterService }, { token: i10.TranslationService }, { token: i11.NuxeoService }, { token: i12.UserService }, { token: i13.AppConfigService }, { token: 'environment' }, { token: i14.DocumentScanService }], target: i0.ɵɵFactoryTarget.Component });
298
- ScanModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ScanModalComponent, selector: "app-scan-modal", ngImport: i0, template: "<div class=\"scanner-modal-body relative h-full\">\r\n <!-- -->\r\n <!-- tabs -->\r\n <div\r\n class=\"scanner-tabs d-flex justify-around items-center border-b-2 border-gray-200 mb-5 text-gray-900 text-lg\"\r\n >\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('scan')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'scan' }\"\r\n >\r\n {{\"CREATE.SCAN\" | translate}}\r\n </div>\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('form')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'form' }\"\r\n >\r\n {{\"CREATE.DETAILS\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"tabs-body-wrapper\">\r\n <!-- uploader indicator loading -->\r\n <div\r\n class=\"upload-loader mx-2\"\r\n *ngIf=\"uploadMangmentService.uploadedFilesStatus.uploadInProgress\"\r\n >\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- scanner -->\r\n <div class=\"\" [ngClass]=\"{ 'd-none': activeTab === 'form' }\">\r\n <app-document-scan\r\n [hideUploadButton]=\"true\"\r\n [useStoredFile]=\"true\"\r\n ></app-document-scan>\r\n </div>\r\n\r\n <!-- forms and properties -->\r\n <div\r\n class=\"forms-section\"\r\n [ngClass]=\"{ 'd-none': activeTab === 'scan' }\"\r\n >\r\n <div class=\"w-2/3\">\r\n <div class=\"mb-5\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.FILE_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-base text-gray-900\">\r\n {{ isArabic ? fileType.arabicText : fileType.englishText }}\r\n </div>\r\n </div>\r\n <div class=\"file-fields mt-3\" SetRtl>\r\n <form [formGroup]=\"fileForm\" *ngIf=\"fileForm\">\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.TITLE\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"title\"\r\n placeholder=\" {{ 'CREATE.TITLE' | translate }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DESCRIPTION\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"description\"\r\n placeholder=\" {{\r\n 'CREATE.DESCRIPTION' | translate\r\n }}\"\r\n />\r\n </div>\r\n\r\n <!------------------ new statis form ---------------------------->\r\n <div *ngIf=\"usingExtraFields\">\r\n \r\n <app-dynamic-fields-renderer [form]=\"fileForm\" [agencyNameFilter]=\"agencyNameFilter\" [countryNameFilter]=\"countryNameFilter\"></app-dynamic-fields-renderer>\r\n\r\n <!-- <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"subject\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_SUBJECT' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"documentNumber\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_NUMBER' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <cts-dynamic-form-hijri-dateitem\r\n formControlName=\"gdocumentDate\"\r\n label=\"CREATE.DOCUMENT_DATE\"\r\n >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.SCRECY_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_SecrecyLevel'\"\r\n formControlName=\"secrecyLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.IMPORTANCE_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_Importance'\"\r\n formControlName=\"importanceLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <app-dynamic-form-department\r\n formControlName=\"departmentCode\"\r\n [placeholder]=\"'please select department'\"\r\n [pp_departmentNestedTree]=\"\r\n 'PP_OS_Departments'\r\n \"\r\n [pp_departmentTree]=\"'PP_OS_Departments'\"\r\n [customPrefix]=\"'osdept'\"\r\n [customParentProperty]=\"\r\n 'osdepartment_parentDepartmentCode'\r\n \"\r\n [useCustomAddEditAction]=\"true\"\r\n >\r\n </app-dynamic-form-department>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyCategoryCode\"\r\n [vocbularyId]=\"'VOC_AgencyCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyName\"\r\n [vocbularyId]=\"'VOC_Agency'\"\r\n [filter]=\"agencyNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryCategoryCode\"\r\n [vocbularyId]=\"'VOC_CountryCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryName\"\r\n [vocbularyId]=\"'VOC_Country'\"\r\n [filter]=\"countryNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"remarks\"\r\n placeholder=\" {{\r\n 'CREATE.REMARKS' | translate\r\n }}\"\r\n />\r\n </div> -->\r\n </div>\r\n\r\n <!-- ----------------------------------------------------------- -->\r\n </form>\r\n <!-- *ngIf=\"\" -->\r\n <div\r\n class=\"dynamic-part -mx-4\"\r\n *ngIf=\"selectedFile.dynamicForm && showRenderer\"\r\n >\r\n <app-dynamic-form\r\n [form]=\"selectedFile.dynamicForm\"\r\n [data]=\"temporaryDyanmicData\"\r\n (change)=\"ondynamicFormChange($event)\"\r\n ></app-dynamic-form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- actions and buttons -->\r\n <div\r\n class=\"w-full d-flex justify-between scanner-actions-wrapper absolute bottom-0\"\r\n >\r\n <div class=\"flex\">\r\n <button class=\"cancelation-button\" (click)=\"closeDialog()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n <button class=\"cancelation-button mx-2\" (click)=\"minimizDialog()\">\r\n {{ \"BUTTONS.MINIMIZED\" | translate }}\r\n </button>\r\n </div>\r\n\r\n <!-- -->\r\n <div class=\"d-flex\">\r\n <!-- <button\r\n *ngIf=\"creationFailed\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n (click)=\"createDocument()\"\r\n class=\"submission-button\"\r\n >\r\n {{ \"BUTTONS.TRY_AGAIN\" | translate }}\r\n </button> -->\r\n <button\r\n (click)=\"createDocument()\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n class=\"submission-button\"\r\n >\r\n {{ uploadMangmentService.scanCreationFailed ? (\"BUTTONS.TRY_AGAIN\" | translate) : (\"BUTTONS.CREATE\" | translate) }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".forms-section{display:flex;justify-content:center}.tabs-body-wrapper{height:calc(100% - 125px);overflow-y:auto;overflow-x:hidden}\n"], components: [{ type: i15.ScanComponent, selector: "app-document-scan", inputs: ["useStoredFile", "hideUploadButton"], outputs: ["file"] }, { type: i16.DynamicFieldsRendererComponent, selector: "app-dynamic-fields-renderer", inputs: ["form", "agencyNameFilter", "countryNameFilter", "fields"] }, { type: i17.DynamicFormComponent, selector: "app-dynamic-form", inputs: ["form", "data", "readOnly"], outputs: ["change"] }], directives: [{ type: i18.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.SetRtlDirective, selector: "[SetRtl]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i20.TranslatePipe } });
299
+ ScanModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ScanModalComponent, selector: "app-scan-modal", ngImport: i0, template: "<div class=\"scanner-modal-body relative h-full\">\r\n <!-- -->\r\n <!-- tabs -->\r\n <div\r\n class=\"scanner-tabs d-flex justify-around items-center border-b-2 border-gray-200 mb-5 text-gray-900 text-lg\"\r\n >\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('scan')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'scan' }\"\r\n >\r\n {{\"CREATE.SCAN\" | translate}}\r\n </div>\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('form')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'form' }\"\r\n >\r\n {{\"CREATE.DETAILS\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"tabs-body-wrapper\">\r\n <!-- uploader indicator loading -->\r\n <div\r\n class=\"upload-loader mx-2\"\r\n *ngIf=\"uploadMangmentService.uploadedFilesStatus.uploadInProgress\"\r\n >\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- scanner -->\r\n <div class=\"\" [ngClass]=\"{ 'd-none': activeTab === 'form' }\">\r\n <app-document-scan\r\n [hideUploadButton]=\"true\"\r\n [useStoredFile]=\"true\"\r\n ></app-document-scan>\r\n </div>\r\n\r\n <!-- forms and properties -->\r\n <div\r\n class=\"forms-section\"\r\n [ngClass]=\"{ 'd-none': activeTab === 'scan' }\"\r\n >\r\n <div class=\"w-2/3\">\r\n <div class=\"mb-5\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.FILE_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-base text-gray-900\">\r\n {{ isArabic ? fileType.arabicText : fileType.englishText }}\r\n </div>\r\n </div>\r\n <div class=\"file-fields mt-3\" SetRtl>\r\n <form [formGroup]=\"fileForm\" *ngIf=\"fileForm\">\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.TITLE\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"title\"\r\n placeholder=\" {{ 'CREATE.TITLE' | translate }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DESCRIPTION\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"description\"\r\n placeholder=\" {{\r\n 'CREATE.DESCRIPTION' | translate\r\n }}\"\r\n />\r\n </div>\r\n\r\n <!------------------ new statis form ---------------------------->\r\n <div *ngIf=\"usingExtraFields\">\r\n \r\n <app-dynamic-fields-renderer [form]=\"fileForm\" [agencyNameFilter]=\"agencyNameFilter\" [countryNameFilter]=\"countryNameFilter\"></app-dynamic-fields-renderer>\r\n\r\n <!-- <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"subject\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_SUBJECT' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"documentNumber\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_NUMBER' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <cts-dynamic-form-hijri-dateitem\r\n formControlName=\"gdocumentDate\"\r\n label=\"CREATE.DOCUMENT_DATE\"\r\n >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.SCRECY_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_SecrecyLevel'\"\r\n formControlName=\"secrecyLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.IMPORTANCE_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_Importance'\"\r\n formControlName=\"importanceLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <app-dynamic-form-department\r\n formControlName=\"departmentCode\"\r\n [placeholder]=\"'please select department'\"\r\n [pp_departmentNestedTree]=\"\r\n 'PP_OS_Departments'\r\n \"\r\n [pp_departmentTree]=\"'PP_OS_Departments'\"\r\n [customPrefix]=\"'osdept'\"\r\n [customParentProperty]=\"\r\n 'osdepartment_parentDepartmentCode'\r\n \"\r\n [useCustomAddEditAction]=\"true\"\r\n >\r\n </app-dynamic-form-department>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyCategoryCode\"\r\n [vocbularyId]=\"'VOC_AgencyCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyName\"\r\n [vocbularyId]=\"'VOC_Agency'\"\r\n [filter]=\"agencyNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryCategoryCode\"\r\n [vocbularyId]=\"'VOC_CountryCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryName\"\r\n [vocbularyId]=\"'VOC_Country'\"\r\n [filter]=\"countryNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"remarks\"\r\n placeholder=\" {{\r\n 'CREATE.REMARKS' | translate\r\n }}\"\r\n />\r\n </div> -->\r\n </div>\r\n\r\n <!-- ----------------------------------------------------------- -->\r\n </form>\r\n <!-- *ngIf=\"\" -->\r\n <div\r\n class=\"dynamic-part -mx-4\"\r\n *ngIf=\"selectedFile.dynamicForm && showRenderer\"\r\n >\r\n <app-dynamic-form\r\n [form]=\"selectedFile.dynamicForm\"\r\n [data]=\"temporaryDyanmicData\"\r\n (change)=\"ondynamicFormChange($event)\"\r\n ></app-dynamic-form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- actions and buttons -->\r\n <div\r\n class=\"w-full d-flex justify-between scanner-actions-wrapper absolute bottom-0\"\r\n >\r\n <div class=\"flex\">\r\n <button class=\"cancelation-button\" (click)=\"closeDialog()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n <button class=\"cancelation-button mx-2\" (click)=\"minimizDialog()\">\r\n {{ \"BUTTONS.MINIMIZED\" | translate }}\r\n </button>\r\n </div>\r\n\r\n <!-- -->\r\n <div class=\"d-flex\">\r\n <!-- <button\r\n *ngIf=\"creationFailed\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n (click)=\"createDocument()\"\r\n class=\"submission-button\"\r\n >\r\n {{ \"BUTTONS.TRY_AGAIN\" | translate }}\r\n </button> -->\r\n <button\r\n (click)=\"createDocument()\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n class=\"submission-button\"\r\n >\r\n {{ uploadMangmentService.scanCreationFailed ? (\"BUTTONS.TRY_AGAIN\" | translate) : (\"BUTTONS.CREATE\" | translate) }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".forms-section{display:flex;justify-content:center}.tabs-body-wrapper{height:calc(100% - 125px);overflow-y:auto;overflow-x:hidden}\n"], components: [{ type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i16.ScanComponent, selector: "app-document-scan", inputs: ["useStoredFile", "hideUploadButton"], outputs: ["file"] }, { type: i17.DynamicFieldsRendererComponent, selector: "app-dynamic-fields-renderer", inputs: ["form", "agencyNameFilter", "countryNameFilter", "fields"] }, { type: i18.DynamicFormComponent, selector: "app-dynamic-form", inputs: ["form", "data", "readOnly"], outputs: ["change"] }], directives: [{ type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i20.SetRtlDirective, selector: "[SetRtl]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i21.TranslatePipe } });
299
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanModalComponent, decorators: [{
300
301
  type: Component,
301
302
  args: [{
@@ -310,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
310
311
  type: Inject,
311
312
  args: ['environment']
312
313
  }] }, { type: i14.DocumentScanService }]; } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zY2FuLW1vZGFsL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU96RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNqQyxNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUE0QyxJQUFJLEVBQ3ZDLFNBQTJDLEVBQzNDLHFCQUE2QyxFQUM3QyxxQkFBNEMsRUFDM0MsaUJBQXFDLEVBQ3JDLGFBQWtDLEVBQ2xDLFdBQXlCLEVBQ3pCLGtCQUFzQyxFQUN0QyxpQkFBcUMsRUFDckMsT0FBd0IsRUFDeEIsa0JBQXVDLEVBQ3ZDLFlBQTRCLEVBQzVCLFdBQXlCLEVBQ3pCLGNBQWlDLEVBQ1YsV0FBVyxFQUNsQyxtQkFBeUM7UUFmUCxTQUFJLEdBQUosSUFBSSxDQUFBO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQWtDO1FBQzNDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUFDN0MsMEJBQXFCLEdB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LDJCQUEyQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6RixJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQzs7K0dBdlRVLGtCQUFrQixrQkFtQ1QsZUFBZSxrYkFjekIsYUFBYTttR0FqRFosa0JBQWtCLHNEQ3ZCL0Isb3ppQkFnVkE7MkZEelRhLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7OzBCQW9DYyxNQUFNOzJCQUFDLGVBQWU7OzBCQWNoQyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBVcGxvYWRNYW5hZ21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL3VwbG9hZC1tYW5hZ21lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ01hbmdtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9kaWFsb2ctbWFuZ21lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9maWxlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRTY2FuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXNjYW4vZG9jdW1lbnQtc2Nhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2FwcC1jb25maWcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zY2FuLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2Nhbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi1tb2RhbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY2FuTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHNjYW5uZXJVcGxvYWRCdXR0b247XHJcbiAgZmlsZVR5cGU7XHJcbiAgc291cmNlO1xyXG4gIGFjdGl2ZVRhYiA9ICdzY2FuJztcclxuICBjcmVhdGVXaGVuRmluaXNoTW9kZSA9IGZhbHNlO1xyXG4gIG15RW52aXJvbm1lbnRcclxuICBzZWxlY3RlZEZpbGUgPSB7XHJcbiAgICBzdGF0aWNEYXRhIDoge30sXHJcbiAgICBmaWxlVHlwZTogJycsXHJcbiAgICBkeW5hbWljRm9ybTogJycsXHJcbiAgICBkeW5hbWljRGF0YToge1xyXG4gICAgICB2YWxpZDogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHt9XHJcbiAgICB9LFxyXG4gICAgZmlsZTogJydcclxuICB9O1xyXG4gIHRlbXBvcmFyeUR5YW5taWNEYXRhID0ge307XHJcbiAgc2hvd1JlbmRlcmVyID0gZmFsc2U7XHJcblxyXG4gIHVwbG9hZFN0YXJ0U3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGZpbGVDaGFuZ2VTdWJzY3JpcHRpb24gIDpTdWJzY3JpcHRpb247XHJcbiAgZmlsZUZvcm1TdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gOiBTdWJzY3JpcHRpb247XHJcbiAgbGFuZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHNob3dTdGF0aWNGb3JtID0gZmFsc2VcclxuICB1c2luZ0V4dHJhRmllbGRzID0gZmFsc2U7IC8vIGZsYWdlIHRvIHN3aXRjaCBiZXR3ZWVuIHN0YXRpYyBmb3JtIHR5cGVzXHJcbiAgZmlsZUZvcm0gOiBGb3JtR3JvdXA7XHJcbiAgc3RhdGljRm9ybUZpZWxkcztcclxuICBhZ2VuY3lOYW1lRmlsdGVyIDtcclxuICBjb3VudHJ5TmFtZUZpbHRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNjYW5Nb2RhbENvbXBvbmVudD4sXHJcbiAgICBwdWJsaWMgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlOiBVcGxvYWRNYW5hZ21lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ01hbmdtZW50U2VydmljZTogRGlhbG9nTWFuZ21lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWxlTWFuZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlciA6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2U6IER5bmFtaWNGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZUhlbHBlclNlcnZpY2UgOiBEYXRlSGVscGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYWRhcHRlciA6IEFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG51eGVvU2VydmljZSAgOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlIDogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZTZXJ2aWNlIDogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm5vbWVudCxcclxuICAgIHByaXZhdGUgZG9jdW1lbnRTY2FuU2VydmljZSA6IERvY3VtZW50U2NhblNlcnZpY2UpIHsgXHJcbiAgICAgIHRoaXMubXlFbnZpcm9ubWVudCA9IHRoaXMuZW52aXJub21lbnRcclxuICAgIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb249IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmlzQXJhYmljID0gcmVzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVXaGVuRmluaXNoTW9kZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlVHlwZSA9IHRoaXMuZGlhbG9nTWFuZ21lbnRTZXJ2aWNlLmZpbGVUeXBlO1xyXG4gICAgdGhpcy5zb3VyY2UgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5hZGRpbmdGcm9tO1xyXG5cclxuICAgIHRoaXMuZmlsZU1hbmdlclNlcnZpY2UuZ2V0RmlsZVNjaGVtYXModGhpcy5maWxlVHlwZS50eXBlKS5zdWJzY3JpYmUoc2NoZW1hcyA9PiB7XHJcbiAgICAgIHNjaGVtYXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmKGl0ZW0ubmFtZSA9PT0gXCJnZW5lcmFsZG9jdW1lbnRcIil7XHJcbiAgICAgICAgICB0aGlzLnVzaW5nRXh0cmFGaWVsZHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5pbml0aWF0ZmlsZUZvcm0oKTtcclxuICAgICAgICAgIC8vaWYgc3RhcnRpbmcgZnJvbSBmaWxlbW5hZ2VyIHRoZW4gaSBoYXZlIGZpeGVkIGZpbGUgdHlwZSBmb3IgYWxsIGF0dGFjaG1ldG4gYW5kIHNpbmdsZSBkeW5haW1jIGZvcm0gIHR5cGVcclxuICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gJ2ZpbGVNYW5nZXInKSB7XHJcbiAgICAgIGlmKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gey4uLnRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5zaGlmdCgpfTtcclxuICAgICAgICAgIHRoaXMudGVtcG9yYXJ5RHlhbm1pY0RhdGEgPXRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEZpbGUuc3RhdGljRGF0YSk7XHJcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkRmlsZVsnc3RhdGljRGF0YSddWydhZ2VuY3lDYXRlZ29yeUNvZGUnXSl7XHJcbiAgICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2FnZW5jeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkRmlsZVsnc3RhdGljRGF0YSddWydjb3VudHJ5Q2F0ZWdvcnlDb2RlJ10pe1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50cnlOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgIGNhdGVnb3J5IDogdGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wZW5TdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuZHluYW1pY0Zvcm0gPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5zdG9yZWREeW5hbWljRm9ybTtcclxuICAgICAgICAgIHRoaXMuc2hvd1JlbmRlcmVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMub3BlblN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnVwbG9hZFN0YXJ0U3Vic2NyaXB0aW9uID0gdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLnVwbG9hZFN0YXJ0LnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3MgPSByZXM7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLmZpbGVDaGFuZ2Uuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgLy9jb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmZpbGUgPSBldmVudDtcclxuICAgICAgbGV0IHBheUxvYWQgPSB0aGlzLmNvbnN0cnVjdFBheUxvYWQodGhpcy5zZWxlY3RlZEZpbGUpO1xyXG4gICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5TG9hZCwgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICBpZihyZXNbJ3N0YXR1cyddICYmIHJlc1snc3RhdHVzJ10gPT09ICdmYWlsZWQnKXtcclxuICAgICAgICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnNjYW5DcmVhdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdlcnJvcicgLCAnVE9BU1RFUi5FUlJPUicgLCAnVE9BU1RFUi5VUExPQURfRVJST1InKTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLnN0b3JlZEZpbGUgPSB7fTtcclxuICAgICAgICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnJlc2V0U3RhdHVzKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgICB0aGlzLnNjYW5uZXJVcGxvYWRCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nhbm5lclVwbG9hZEJ1dHRvbicpO1xyXG4gIH1cclxuICBcclxuICBpbml0aWF0ZmlsZUZvcm0oKXtcclxuICAgIGlmKHRoaXMudXNpbmdFeHRyYUZpZWxkcyl7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZSA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZGVzY3JpcHRpb24gOiBbJyddLFxyXG4gICAgICAgIHN1YmplY3QgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRvY3VtZW50TnVtYmVyIDogWycnXSxcclxuICAgICAgICBnZG9jdW1lbnREYXRlIDogW251bGwgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIHNlY3JlY3lMZXZlbCA6IFtudWxsXSxcclxuICAgICAgICBpbXBvcnRhbmNlTGV2ZWw6W251bGxdLFxyXG4gICAgICAgIGRlcGFydG1lbnRDb2RlOlsnJ10sXHJcbiAgICAgICAgYWdlbmN5Q2F0ZWdvcnlDb2RlOltudWxsXSxcclxuICAgICAgICBhZ2VuY3lOYW1lOltudWxsXSxcclxuICAgICAgICBjb3VudHJ5Q2F0ZWdvcnlDb2RlOltudWxsXSxcclxuICAgICAgICBjb3VudHJ5TmFtZTpbbnVsbF0sXHJcbiAgICAgICAgcmVtYXJrczpbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5maWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIHRpdGxlIDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkZXNjcmlwdGlvbiA6IFsnJ11cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGljRm9ybUZpZWxkcyA9IHRoaXMuYXBwQ29uZlNlcnZpY2UubXlDb25maWd1cmF0aW9uLnN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgICBpZih0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5maWxlRm9ybS5nZXQoJ2RlcGFydG1lbnRDb2RlJykpe1xyXG4gICAgICB0aGlzLmZpbGVGb3JtLmdldCgnZGVwYXJ0bWVudENvZGUnKS5zZXRWYWx1ZSh0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJEZXBhcnRtZW50RnJvbVBhdGgodGhpcy5kYXRhLnBhdGgpKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvcGVuU3Vic2NyaXB0aW9ucygpe1xyXG4gICAgdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbiA9ICB0aGlzLmZpbGVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0RhdGEgPSBkYXRhO1xyXG4gICAgfSlcclxuXHJcbiAgICBpZih0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykpe1xyXG4gICAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA9ICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdhZ2VuY3lOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeSA6IHJlc1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykpe1xyXG4gICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlDYXRlZ29yeUNvZGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgIGNhdGVnb3J5IDogcmVzXHJcbiAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblVwbG9hZGluZyhldmVudCkge1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvLyBvblNjYW5uZXJTdWNjZXNzKGV2ZW50KSB7XHJcbiAgLy8gICAvL2NvbnNvbGUubG9nKGV2ZW50KTtcclxuICAvLyAgIHRoaXMuc2VsZWN0ZWRGaWxlLmZpbGUgPSBldmVudDtcclxuICAvLyAgIGxldCBwYXlMb2FkID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuc2VsZWN0ZWRGaWxlKTtcclxuICAvLyAgIHRoaXMuZmlsZU1hbmdlclNlcnZpY2UuY3JlYXRlRmlsZShwYXlMb2FkLCB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLnNlbGVjdGVkRm9sZGVySWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gIC8vICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gIC8vICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIuRklMRV9DUkVBVEVEX1NVQ0NFXCIpXHJcbiAgLy8gICAgIHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5zdG9yZWRGaWxlID0ge307XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnJlc2V0U3RhdHVzKCk7XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgb25keW5hbWljRm9ybUNoYW5nZShkeW5hbWljRGF0YSkge1xyXG4gICAgaWYgKGR5bmFtaWNEYXRhLmRhdGEpIHtcclxuICAgICAgY29uc29sZS5sb2coZHluYW1pY0RhdGEuZGF0YSlcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEgPSB7IC4uLmR5bmFtaWNEYXRhIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5zdG9yZWRGaWxlID0ge307XHJcbiAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG5cclxuICB9XHJcblxyXG4gIG1pbmltaXpEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uub25NaW5pbWl6aW5nLmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMucHVzaCh7Li4udGhpcy5zZWxlY3RlZEZpbGV9KVxyXG4gICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3Vic2NyaXB0aW9uKCl7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA/IHRoaXMudXBsb2FkU3RhcnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgICB0aGlzLmZpbGVDaGFuZ2VTdWJzY3JpcHRpb24gPyB0aGlzLmZpbGVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgfSwgMjAwMCk7XHJcbiAgfVxyXG5cclxuICBzdGFydEFkZGluZ1Byb3BlcnRpZXMoKSB7XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5hZGRpbmdQcm9wZXJ0aWVzTW9kZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgY3JlYXRlRG9jdW1lbnQoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uub25NaW5pbWl6aW5nLmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMucHVzaCh7Li4udGhpcy5zZWxlY3RlZEZpbGV9KTtcclxuICAgIHRoaXMuc2Nhbm5lclVwbG9hZEJ1dHRvbi5jbGljaygpO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RQYXlMb2FkKGZpbGUpIHtcclxuICAgIGxldCBwcm9wcyA9IHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChmaWxlLmR5bmFtaWNEYXRhLmRhdGEsIGZpbGUuZHluYW1pY0Zvcm0pO1xyXG4gICAgbGV0IHN0YXRpY0Zvcm1EYXRhID0gdGhpcy5tYXBwaW5nU3RhdGljRGF0YShmaWxlLnN0YXRpY0RhdGEpXHJcblxyXG4gICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICBcImRvY3VtZW50XCI6IHtcclxuICAgICAgICBcInR5cGVcIjogdGhpcy5maWxlVHlwZS50eXBlLFxyXG4gICAgICAgIFwibmFtZVwiOiBmaWxlLnN0YXRpY0RhdGEudGl0bGUsXHJcbiAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgLi4uc3RhdGljRm9ybURhdGEsXHJcbiAgICAgICAgICBcImZpbGU6Y29udGVudFwiOiB7XHJcbiAgICAgICAgICAgIFwidXBsb2FkLWJhdGNoXCI6IGZpbGUuZmlsZS5ibG9iWyd1cGxvYWQtYmF0Y2gnXSxcclxuICAgICAgICAgICAgXCJ1cGxvYWQtZmlsZUlkXCI6IGZpbGUuZmlsZS5ibG9iWyd1cGxvYWQtZmlsZUlkJ11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAoZmlsZS5maWxlVHlwZS5kb2N1bWVudENvZGUpIHtcclxuICAgICAgcGFyYW1bXCJkb2N1bWVudFR5cGVDb2RlXCJdID0gZmlsZS5maWxlVHlwZS5kb2N1bWVudENvZGVcclxuICAgIH1cclxuICAgIHJldHVybiB7cGFyYW1zIDogcGFyYW0gLCBvcmlnaW5GaWxlIDogZmlsZX07XHJcbiAgfVxyXG5cclxuICBtYXBwaW5nU3RhdGljRGF0YShkYXRhKXtcclxuICAgIGlmKGRhdGEuZ2RvY3VtZW50RGF0ZSAmJiBkYXRhLmdkb2N1bWVudERhdGUgIT09IG51bGwpe1xyXG4gICAgICBtb21lbnQubG9jYWxlKCdlbicpO1xyXG4gICAgICBkYXRhWydoZG9jdW1lbnREYXRlJ10gPSB0aGlzLmRhdGVIZWxwZXJTZXJ2aWNlLmdyZWdvcmlhblRvSGlqcmkoZGF0YS5nZG9jdW1lbnREYXRlLCdpWVlZWS1pTU0taUREJyk7XHJcbiAgICAgIGRhdGEuZ2RvY3VtZW50RGF0ZSA9IChtb21lbnQoZGF0YS5nZG9jdW1lbnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREVDAwOjAwOjAwLjAwMFwiKSArIFwiWlwiKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5hZGFwdE91dChkYXRhICwgdGhpcy5zdGF0aWNGb3JtRmllbGRzKVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0RHluYW1pY0Zvcm1QYXlsb2FkKGZpbGUpIHtcclxuICAgIGxldCB1cGRhdGVkRHluYW1pY1ZhbHVlcyA9IHt9XHJcbiAgICBPYmplY3Qua2V5cyhmaWxlPy5keW5hbWljRGF0YT8uZGF0YSkubWFwKGtleSA9PiB7XHJcbiAgICAgIGxldCB1cGRhdGVkS2V5ID0ga2V5LnJlcGxhY2UoJzonLCAnJyk7XHJcbiAgICAgIGxldCBwcmVmaXggPSBmaWxlLmR5bmFtaWNGb3JtLnByZWZpeFt1cGRhdGVkS2V5XTtcclxuICAgICAgaWYgKHByZWZpeCkge1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIGNvbXBvbmVudCBpcyB1c2VyIHNlbGVjdG9yIHRvIG1hcCBpdHMgZGF0YSBmcm9tIG9iamVjdCB0byB1c2VybmFtZSBvciBpZCBvbmx5IFxyXG4gICAgICAgIGlmKGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldICYmIGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd1c2VyU2VsZWN0b3InXSAmJiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gPT09IHRydWUpe1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3ByZWZpeCArICc6JyArIHVwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gPyBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsnaWQnXSA6IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydwcm9wZXJ0aWVzJ11bJ3VzZXJuYW1lJ107XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgdXBkYXRlZER5bmFtaWNWYWx1ZXNbcHJlZml4ICsgJzonICsgdXBkYXRlZEtleV0gPSBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVxyXG4gICAgICAgIH1cclxuICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmKGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd1c2VyU2VsZWN0b3InXSAmJiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gPT09IHRydWUpe1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3VwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gPyBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsnaWQnXSA6IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydwcm9wZXJ0aWVzJ11bJ3VzZXJuYW1lJ107XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgdXBkYXRlZER5bmFtaWNWYWx1ZXNbdXBkYXRlZEtleV0gPSBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVxyXG4gICAgICAgIH1cclxuICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHVwZGF0ZWREeW5hbWljVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlV2hlbkZpbmlzaCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ1RhYlRvKHRhYk5hbWUpIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiTmFtZTtcclxuICB9XHJcbiAgY2hlY2tWYWxpZGF0aW9uKCkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKXtcclxuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbiA/IHRoaXMubGFuZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgdGhpcy5jb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID8gdGhpcy5jb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gICAgdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbiA/IHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwic2Nhbm5lci1tb2RhbC1ib2R5IHJlbGF0aXZlIGgtZnVsbFwiPlxyXG4gICAgPCEtLSAgLS0+XHJcbiAgICA8IS0tIHRhYnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJzY2FubmVyLXRhYnMgZC1mbGV4IGp1c3RpZnktYXJvdW5kIGl0ZW1zLWNlbnRlciBib3JkZXItYi0yIGJvcmRlci1ncmF5LTIwMCBtYi01IHRleHQtZ3JheS05MDAgdGV4dC1sZ1wiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNjYW5uZXItc2luZ2xlLXRhYiBjdXJzb3ItcG9pbnRlciB3LTEvMiB0ZXh0LWNlbnRlciBweS0yIGJvcmRlci1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ1RhYlRvKCdzY2FuJylcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdmb250LWJvbGQgYm9yZGVyLWItNCc6IGFjdGl2ZVRhYiA9PT0gJ3NjYW4nIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAge3tcIkNSRUFURS5TQ0FOXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzY2FubmVyLXNpbmdsZS10YWIgY3Vyc29yLXBvaW50ZXIgdy0xLzIgdGV4dC1jZW50ZXIgcHktMiBib3JkZXItZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdUYWJUbygnZm9ybScpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9udC1ib2xkIGJvcmRlci1iLTQnOiBhY3RpdmVUYWIgPT09ICdmb3JtJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAge3tcIkNSRUFURS5ERVRBSUxTXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFicy1ib2R5LXdyYXBwZXJcIj5cclxuICAgICAgICA8IS0tIHVwbG9hZGVyIGluZGljYXRvciBsb2FkaW5nIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtbG9hZGVyIG14LTJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3NcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gc2Nhbm5lciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwieyAnZC1ub25lJzogYWN0aXZlVGFiID09PSAnZm9ybScgfVwiPlxyXG4gICAgICAgICAgICA8YXBwLWRvY3VtZW50LXNjYW5cclxuICAgICAgICAgICAgICAgIFtoaWRlVXBsb2FkQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3VzZVN0b3JlZEZpbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2FwcC1kb2N1bWVudC1zY2FuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIGZvcm1zIGFuZCBwcm9wZXJ0aWVzICAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybXMtc2VjdGlvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6IGFjdGl2ZVRhYiA9PT0gJ3NjYW4nIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMi8zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5GSUxFX1RZUEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ncmF5LTkwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0FyYWJpYyA/ICBmaWxlVHlwZS5hcmFiaWNUZXh0IDogZmlsZVR5cGUuZW5nbGlzaFRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtZmllbGRzIG10LTNcIiBTZXRSdGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWxlRm9ybVwiICpuZ0lmPVwiZmlsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5USVRMRVwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7eyAnQ1JFQVRFLlRJVExFJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ERVNDUklQVElPTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ1JFQVRFLkRFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0gbmV3IHN0YXRpcyBmb3JtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNpbmdFeHRyYUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZmllbGRzLXJlbmRlcmVyIFtmb3JtXT1cImZpbGVGb3JtXCIgW2FnZW5jeU5hbWVGaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiIFtjb3VudHJ5TmFtZUZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiPjwvYXBwLWR5bmFtaWMtZmllbGRzLXJlbmRlcmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRPQ1VNRU5UX1NVQkpFQ1RcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN1YmplY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ET0NVTUVOVF9TVUJKRUNUJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRPQ1VNRU5UX05VTUJFUlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ1JFQVRFLkRPQ1VNRU5UX05VTUJFUicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1mb3JtLWhpanJpLWRhdGVpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImdkb2N1bWVudERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkNSRUFURS5ET0NVTUVOVF9EQVRFXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jdHMtZHluYW1pYy1mb3JtLWhpanJpLWRhdGVpdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuU0NSRUNZX0xFVkVMJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kTGFiZWxdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NhYnVsYXJ5VHlwZV09XCInVk9DX1NlY3JlY3lMZXZlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWNyZWN5TGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuSU1QT1JUQU5DRV9MRVZFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYWJ1bGFyeVR5cGVdPVwiJ1ZPQ19JbXBvcnRhbmNlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImltcG9ydGFuY2VMZXZlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWR5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVQQVJUTUVOVF9DT0RFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybS1kZXBhcnRtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlcGFydG1lbnRDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGVhc2Ugc2VsZWN0IGRlcGFydG1lbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BwX2RlcGFydG1lbnROZXN0ZWRUcmVlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BQX09TX0RlcGFydG1lbnRzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHBfZGVwYXJ0bWVudFRyZWVdPVwiJ1BQX09TX0RlcGFydG1lbnRzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21QcmVmaXhdPVwiJ29zZGVwdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUGFyZW50UHJvcGVydHldPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3NkZXBhcnRtZW50X3BhcmVudERlcGFydG1lbnRDb2RlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlQ3VzdG9tQWRkRWRpdEFjdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtZHluYW1pYy1mb3JtLWRlcGFydG1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQUdFTkNZX0NBVEVHT1JZX0NPREUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2VuY3lDYXRlZ29yeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYnVsYXJ5SWRdPVwiJ1ZPQ19BZ2VuY3lDYXRlZ29yeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlRmlsdGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NSRUFURS5BR0VOQ1lfTkFNRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJiQmluZExhYmVsXT1cIidsYWJlbF9hcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5nQmluZExhYmVsXT1cIidsYWJlbF9lbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFnZW5jeU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYnVsYXJ5SWRdPVwiJ1ZPQ19BZ2VuY3knXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJhZ2VuY3lOYW1lRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUZpbHRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NSRUFURS5DT1VOVFJZX0NBVEVHT1JZX0NPREUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5Q2F0ZWdvcnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQ291bnRyeUNhdGVnb3J5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC10cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC10cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLkNPVU5UUllfTkFNRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJiQmluZExhYmVsXT1cIidsYWJlbF9hcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5nQmluZExhYmVsXT1cIidsYWJlbF9lbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQ291bnRyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImNvdW50cnlOYW1lRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUZpbHRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5SRU1BUktTXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlbWFya3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5SRU1BUktTJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR5bmFtaWMtcGFydCAtbXgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRGaWxlLmR5bmFtaWNGb3JtICYmIHNob3dSZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2VsZWN0ZWRGaWxlLmR5bmFtaWNGb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInRlbXBvcmFyeUR5YW5taWNEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25keW5hbWljRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWR5bmFtaWMtZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBhY3Rpb25zIGFuZCBidXR0b25zICAtLT5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInctZnVsbCBkLWZsZXgganVzdGlmeS1iZXR3ZWVuIHNjYW5uZXItYWN0aW9ucy13cmFwcGVyIGFic29sdXRlIGJvdHRvbS0wXCJcclxuICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsYXRpb24tYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvbiBteC0yXCIgKGNsaWNrKT1cIm1pbmltaXpEaWFsb2coKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLk1JTklNSVpFRFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tICAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGlvbkZhaWxlZFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2Nhbm5lclVwbG9hZEJ1dHRvbi5kaXNhYmxlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdvcGFjaXR5LTMwIGN1cnNvci1ub3QtYWxsb3dlZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS52YWxpZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVEb2N1bWVudCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkJVVFRPTlMuVFJZX0FHQUlOXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2Nhbm5lclVwbG9hZEJ1dHRvbi5kaXNhYmxlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdvcGFjaXR5LTMwIGN1cnNvci1ub3QtYWxsb3dlZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS52YWxpZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRm9ybS5pbnZhbGlkXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB1cGxvYWRNYW5nbWVudFNlcnZpY2Uuc2NhbkNyZWF0aW9uRmFpbGVkID8gIChcIkJVVFRPTlMuVFJZX0FHQUlOXCIgfCB0cmFuc2xhdGUpIDogKFwiQlVUVE9OUy5DUkVBVEVcIiB8IHRyYW5zbGF0ZSkgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zY2FuLW1vZGFsL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU96RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjakMsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFBNEMsSUFBSSxFQUN2QyxTQUEyQyxFQUMzQyxxQkFBNkMsRUFDN0MscUJBQTRDLEVBQzNDLGlCQUFxQyxFQUNyQyxhQUFrQyxFQUNsQyxXQUF5QixFQUN6QixrQkFBc0MsRUFDdEMsaUJBQXFDLEVBQ3JDLE9BQXdCLEVBQ3hCLGtCQUF1QyxFQUN2QyxZQUE0QixFQUM1QixXQUF5QixFQUN6QixjQUFpQyxFQUNWLFdBQVcsRUFDbEMsbUJBQXlDO1FBZlAsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUMzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXdCO1FBQzdDLDBCQUFxQixH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QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7OytHQXZUVSxrQkFBa0Isa0JBbUNULGVBQWUsa2JBY3pCLGFBQWE7bUdBakRaLGtCQUFrQixzREN2Qi9CLG96aUJBZ1ZBOzJGRHpUYSxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzswQkFvQ2MsTUFBTTsyQkFBQyxlQUFlOzswQkFjaEMsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVXBsb2FkTWFuYWdtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtbWFuYWdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dNYW5nbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50U2NhblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvc2VydmljZXMvZGF0ZS1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9hZGFwdGVycy9hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2Nhbi1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NjYW4tbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Nhbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzY2FubmVyVXBsb2FkQnV0dG9uO1xyXG4gIGZpbGVUeXBlO1xyXG4gIHNvdXJjZTtcclxuICBhY3RpdmVUYWIgPSAnc2Nhbic7XHJcbiAgY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICBteUVudmlyb25tZW50XHJcbiAgc2VsZWN0ZWRGaWxlID0ge1xyXG4gICAgc3RhdGljRGF0YSA6IHt9LFxyXG4gICAgZmlsZVR5cGU6ICcnLFxyXG4gICAgZHluYW1pY0Zvcm06ICcnLFxyXG4gICAgZHluYW1pY0RhdGE6IHtcclxuICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7fVxyXG4gICAgfSxcclxuICAgIGZpbGU6ICcnXHJcbiAgfTtcclxuICB0ZW1wb3JhcnlEeWFubWljRGF0YSA9IHt9O1xyXG4gIHNob3dSZW5kZXJlciA9IGZhbHNlO1xyXG5cclxuICB1cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBmaWxlQ2hhbmdlU3Vic2NyaXB0aW9uICA6U3Vic2NyaXB0aW9uO1xyXG4gIGZpbGVGb3JtU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGxhbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaXNBcmFiaWMgPSBmYWxzZTtcclxuICBzaG93U3RhdGljRm9ybSA9IGZhbHNlXHJcbiAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG4gIGZpbGVGb3JtIDogRm9ybUdyb3VwO1xyXG4gIHN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgYWdlbmN5TmFtZUZpbHRlciA7XHJcbiAgY291bnRyeU5hbWVGaWx0ZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTY2FuTW9kYWxDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIHVwbG9hZE1hbmdtZW50U2VydmljZTogVXBsb2FkTWFuYWdtZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dNYW5nbWVudFNlcnZpY2U6IERpYWxvZ01hbmdtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXIgOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVIZWxwZXJTZXJ2aWNlIDogRGF0ZUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFkYXB0ZXIgOiBBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlIDogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2UgIDogTnV4ZW9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZSA6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25mU2VydmljZSA6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJub21lbnQsXHJcbiAgICBwcml2YXRlIGRvY3VtZW50U2NhblNlcnZpY2UgOiBEb2N1bWVudFNjYW5TZXJ2aWNlKSB7IFxyXG4gICAgICB0aGlzLm15RW52aXJvbm1lbnQgPSB0aGlzLmVudmlybm9tZW50XHJcbiAgICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5maWxlVHlwZTtcclxuICAgIHRoaXMuc291cmNlID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2UuYWRkaW5nRnJvbTtcclxuXHJcbiAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmdldEZpbGVTY2hlbWFzKHRoaXMuZmlsZVR5cGUudHlwZSkuc3Vic2NyaWJlKHNjaGVtYXMgPT4ge1xyXG4gICAgICBzY2hlbWFzLm1hcChpdGVtID0+IHtcclxuICAgICAgICBpZihpdGVtLm5hbWUgPT09IFwiZ2VuZXJhbGRvY3VtZW50XCIpe1xyXG4gICAgICAgICAgdGhpcy51c2luZ0V4dHJhRmllbGRzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcbiAgICAgICAgICAvL2lmIHN0YXJ0aW5nIGZyb20gZmlsZW1uYWdlciB0aGVuIGkgaGF2ZSBmaXhlZCBmaWxlIHR5cGUgZm9yIGFsbCBhdHRhY2htZXRuIGFuZCBzaW5nbGUgZHluYWltYyBmb3JtICB0eXBlXHJcbiAgICBpZiAodGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJykge1xyXG4gICAgICBpZih0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IHsuLi50aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMuc2hpZnQoKX07XHJcbiAgICAgICAgICB0aGlzLnRlbXBvcmFyeUR5YW5taWNEYXRhID10aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0RhdGEpO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ10pe1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiB0aGlzLnNlbGVjdGVkRmlsZVsnc3RhdGljRGF0YSddWydhZ2VuY3lDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2NvdW50cnlDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcGVuU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gICAgICAgIH0sIDMwMDApO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNGb3JtID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2Uuc3RvcmVkRHluYW1pY0Zvcm07XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm9wZW5TdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy51cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS51cGxvYWRTdGFydC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzID0gcmVzO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZmlsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5maWxlQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgICAgIGxldCBwYXlMb2FkID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuc2VsZWN0ZWRGaWxlKTtcclxuICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5jcmVhdGVGaWxlKHBheUxvYWQsIHRoaXMuZmlsZU1hbmdlclNlcnZpY2Uuc2VsZWN0ZWRGb2xkZXJJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYocmVzWydzdGF0dXMnXSAmJiByZXNbJ3N0YXR1cyddID09PSAnZmFpbGVkJyl7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5zY2FuQ3JlYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InICwgJ1RPQVNURVIuRVJST1InICwgJ1RPQVNURVIuVVBMT0FEX0VSUk9SJyk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5GSUxFX0NSRUFURURfU1VDQ0VcIilcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5zdG9yZWRGaWxlID0ge307XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgICAgdGhpcy5zY2FubmVyVXBsb2FkQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYW5uZXJVcGxvYWRCdXR0b24nKTtcclxuICB9XHJcbiAgXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCl7XHJcbiAgICBpZih0aGlzLnVzaW5nRXh0cmFGaWVsZHMpe1xyXG4gICAgICB0aGlzLmZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgdGl0bGUgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogWycnXSxcclxuICAgICAgICBzdWJqZWN0IDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkb2N1bWVudE51bWJlciA6IFsnJ10sXHJcbiAgICAgICAgZ2RvY3VtZW50RGF0ZSA6IFtudWxsICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBzZWNyZWN5TGV2ZWwgOiBbbnVsbF0sXHJcbiAgICAgICAgaW1wb3J0YW5jZUxldmVsOltudWxsXSxcclxuICAgICAgICBkZXBhcnRtZW50Q29kZTpbJyddLFxyXG4gICAgICAgIGFnZW5jeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgYWdlbmN5TmFtZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeU5hbWU6W251bGxdLFxyXG4gICAgICAgIHJlbWFya3M6WycnXVxyXG4gICAgICB9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZSA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZGVzY3JpcHRpb24gOiBbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMgPSB0aGlzLmFwcENvbmZTZXJ2aWNlLm15Q29uZmlndXJhdGlvbi5zdGF0aWNGb3JtRmllbGRzO1xyXG4gICAgaWYodGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZmlsZUZvcm0uZ2V0KCdkZXBhcnRtZW50Q29kZScpKXtcclxuICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2RlcGFydG1lbnRDb2RlJykuc2V0VmFsdWUodGhpcy51c2VyU2VydmljZS5nZXRVc2VyRGVwYXJ0bWVudEZyb21QYXRoKHRoaXMuZGF0YS5wYXRoKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb3BlblN1YnNjcmlwdGlvbnMoKXtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNEYXRhID0gZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYodGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5jb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID0gIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeSA6IHJlc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25VcGxvYWRpbmcoZXZlbnQpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gb25TY2FubmVyU3VjY2VzcyhldmVudCkge1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhldmVudCk7XHJcbiAgLy8gICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgLy8gICBsZXQgcGF5TG9hZCA9IHRoaXMuY29uc3RydWN0UGF5TG9hZCh0aGlzLnNlbGVjdGVkRmlsZSk7XHJcbiAgLy8gICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5TG9hZCwgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAvLyAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAvLyAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gIC8vICAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gIC8vICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIG9uZHluYW1pY0Zvcm1DaGFuZ2UoZHluYW1pY0RhdGEpIHtcclxuICAgIGlmIChkeW5hbWljRGF0YS5kYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGR5bmFtaWNEYXRhLmRhdGEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBtaW5pbWl6RGlhbG9nKCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSlcclxuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN1YnNjcmlwdGlvbigpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBsb2FkU3RhcnRTdWJzY3JpcHRpb24gPyB0aGlzLnVwbG9hZFN0YXJ0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgICAgdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uID8gdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBZGRpbmdQcm9wZXJ0aWVzKCkge1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuYWRkaW5nUHJvcGVydGllc01vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZURvY3VtZW50KCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSk7XHJcbiAgICB0aGlzLnNjYW5uZXJVcGxvYWRCdXR0b24uY2xpY2soKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChmaWxlKSB7XHJcbiAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb25zdHJ1Y3REeW5hbWljRm9ybVBheWxvYWQoZmlsZS5keW5hbWljRGF0YS5kYXRhLCBmaWxlLmR5bmFtaWNGb3JtKTtcclxuICAgIGxldCBzdGF0aWNGb3JtRGF0YSA9IHRoaXMubWFwcGluZ1N0YXRpY0RhdGEoZmlsZS5zdGF0aWNEYXRhKVxyXG5cclxuICAgIGxldCBwYXJhbSA9IHtcclxuICAgICAgXCJkb2N1bWVudFwiOiB7XHJcbiAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZmlsZVR5cGUudHlwZSxcclxuICAgICAgICBcIm5hbWVcIjogZmlsZS5zdGF0aWNEYXRhLnRpdGxlLFxyXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIC4uLnN0YXRpY0Zvcm1EYXRhLFxyXG4gICAgICAgICAgXCJmaWxlOmNvbnRlbnRcIjoge1xyXG4gICAgICAgICAgICBcInVwbG9hZC1iYXRjaFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWJhdGNoJ10sXHJcbiAgICAgICAgICAgIFwidXBsb2FkLWZpbGVJZFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWZpbGVJZCddXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlKSB7XHJcbiAgICAgIHBhcmFtW1wiZG9jdW1lbnRUeXBlQ29kZVwiXSA9IGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3BhcmFtcyA6IHBhcmFtICwgb3JpZ2luRmlsZSA6IGZpbGV9O1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ1N0YXRpY0RhdGEoZGF0YSl7XHJcbiAgICBpZihkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKXtcclxuICAgICAgbW9tZW50LmxvY2FsZSgnZW4nKTtcclxuICAgICAgZGF0YVsnaGRvY3VtZW50RGF0ZSddID0gdGhpcy5kYXRlSGVscGVyU2VydmljZS5ncmVnb3JpYW5Ub0hpanJpKGRhdGEuZ2RvY3VtZW50RGF0ZSwnaVlZWVktaU1NLWlERCcpO1xyXG4gICAgICBkYXRhLmdkb2N1bWVudERhdGUgPSAobW9tZW50KGRhdGEuZ2RvY3VtZW50RGF0ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFQwMDowMDowMC4wMDBcIikgKyBcIlpcIilcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuYWRhcHRPdXQoZGF0YSAsIHRoaXMuc3RhdGljRm9ybUZpZWxkcylcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChmaWxlKSB7XHJcbiAgICBsZXQgdXBkYXRlZER5bmFtaWNWYWx1ZXMgPSB7fVxyXG4gICAgT2JqZWN0LmtleXMoZmlsZT8uZHluYW1pY0RhdGE/LmRhdGEpLm1hcChrZXkgPT4ge1xyXG4gICAgICBsZXQgdXBkYXRlZEtleSA9IGtleS5yZXBsYWNlKCc6JywgJycpO1xyXG4gICAgICBsZXQgcHJlZml4ID0gZmlsZS5keW5hbWljRm9ybS5wcmVmaXhbdXBkYXRlZEtleV07XHJcbiAgICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBjb21wb25lbnQgaXMgdXNlciBzZWxlY3RvciB0byBtYXAgaXRzIGRhdGEgZnJvbSBvYmplY3QgdG8gdXNlcm5hbWUgb3IgaWQgb25seSBcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XSAmJiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1twcmVmaXggKyAnOicgKyB1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3ByZWZpeCArICc6JyArIHVwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1t1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3VwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiB1cGRhdGVkRHluYW1pY1ZhbHVlcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZVdoZW5GaW5pc2goKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdUYWJUbyh0YWJOYW1lKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYk5hbWU7XHJcbiAgfVxyXG4gIGNoZWNrVmFsaWRhdGlvbigpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPyB0aGlzLmxhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPyB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPyB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cInNjYW5uZXItbW9kYWwtYm9keSByZWxhdGl2ZSBoLWZ1bGxcIj5cclxuICAgIDwhLS0gIC0tPlxyXG4gICAgPCEtLSB0YWJzIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwic2Nhbm5lci10YWJzIGQtZmxleCBqdXN0aWZ5LWFyb3VuZCBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMiBib3JkZXItZ3JheS0yMDAgbWItNSB0ZXh0LWdyYXktOTAwIHRleHQtbGdcIlxyXG4gICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzY2FubmVyLXNpbmdsZS10YWIgY3Vyc29yLXBvaW50ZXIgdy0xLzIgdGV4dC1jZW50ZXIgcHktMiBib3JkZXItZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdUYWJUbygnc2NhbicpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9udC1ib2xkIGJvcmRlci1iLTQnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7XCJDUkVBVEUuU0NBTlwiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2Nhbm5lci1zaW5nbGUtdGFiIGN1cnNvci1wb2ludGVyIHctMS8yIHRleHQtY2VudGVyIHB5LTIgYm9yZGVyLWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nVGFiVG8oJ2Zvcm0nKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtYm9sZCBib3JkZXItYi00JzogYWN0aXZlVGFiID09PSAnZm9ybScgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHt7XCJDUkVBVEUuREVUQUlMU1wiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgPCEtLSB1cGxvYWRlciBpbmRpY2F0b3IgbG9hZGluZyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWxvYWRlciBteC0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIHNjYW5uZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6IGFjdGl2ZVRhYiA9PT0gJ2Zvcm0nIH1cIj5cclxuICAgICAgICAgICAgPGFwcC1kb2N1bWVudC1zY2FuXHJcbiAgICAgICAgICAgICAgICBbaGlkZVVwbG9hZEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt1c2VTdG9yZWRGaWxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZG9jdW1lbnQtc2Nhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBmb3JtcyBhbmQgcHJvcGVydGllcyAgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm1zLXNlY3Rpb25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkLW5vbmUnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRklMRV9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIHRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNBcmFiaWMgPyAgZmlsZVR5cGUuYXJhYmljVGV4dCA6IGZpbGVUeXBlLmVuZ2xpc2hUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWZpZWxkcyBtdC0zXCIgU2V0UnRsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsZUZvcm1cIiAqbmdJZj1cImZpbGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuVElUTEVcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3sgJ0NSRUFURS5USVRMRScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ERVNDUklQVElPTicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tIG5ldyBzdGF0aXMgZm9ybSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzaW5nRXh0cmFGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlciBbZm9ybV09XCJmaWxlRm9ybVwiIFthZ2VuY3lOYW1lRmlsdGVyXT1cImFnZW5jeU5hbWVGaWx0ZXJcIiBbY291bnRyeU5hbWVGaWx0ZXJdPVwiY291bnRyeU5hbWVGaWx0ZXJcIj48L2FwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJqZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuRE9DVU1FTlRfU1VCSkVDVCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnROdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ET0NVTUVOVF9OVU1CRVInIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZG9jdW1lbnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJDUkVBVEUuRE9DVU1FTlRfREFURVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLlNDUkVDWV9MRVZFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYWJ1bGFyeVR5cGVdPVwiJ1ZPQ19TZWNyZWN5TGV2ZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VjcmVjeUxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRMYWJlbF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2FidWxhcnlUeXBlXT1cIidWT0NfSW1wb3J0YW5jZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbXBvcnRhbmNlTGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRFUEFSVE1FTlRfQ09ERVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tZGVwYXJ0bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXBhcnRtZW50Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxlYXNlIHNlbGVjdCBkZXBhcnRtZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcF9kZXBhcnRtZW50TmVzdGVkVHJlZV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUF9PU19EZXBhcnRtZW50cydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BwX2RlcGFydG1lbnRUcmVlXT1cIidQUF9PU19EZXBhcnRtZW50cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUHJlZml4XT1cIidvc2RlcHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVBhcmVudFByb3BlcnR5XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29zZGVwYXJ0bWVudF9wYXJlbnREZXBhcnRtZW50Q29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUN1c3RvbUFkZEVkaXRBY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWR5bmFtaWMtZm9ybS1kZXBhcnRtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC10cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLkFHRU5DWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWdlbmN5Q2F0ZWdvcnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5Q2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUZpbHRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQUdFTkNZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2VuY3lOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQ09VTlRSWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeUNhdGVnb3J5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnlDYXRlZ29yeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlRmlsdGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NSRUFURS5DT1VOVFJZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuUkVNQVJLU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuUkVNQVJLUycgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIlwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeW5hbWljLXBhcnQgLW14LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybSAmJiBzaG93UmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0ZW1wb3JhcnlEeWFubWljRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uZHluYW1pY0Zvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1keW5hbWljLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gYWN0aW9ucyBhbmQgYnV0dG9ucyAgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgZC1mbGV4IGp1c3RpZnktYmV0d2VlbiBzY2FubmVyLWFjdGlvbnMtd3JhcHBlciBhYnNvbHV0ZSBib3R0b20tMFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkJVVFRPTlMuQ0FOQ0VMXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gbXgtMlwiIChjbGljayk9XCJtaW5pbWl6RGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5NSU5JTUlaRURcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JlYXRpb25GYWlsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZURvY3VtZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnNjYW5DcmVhdGlvbkZhaWxlZCA/ICAoXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlKSA6IChcIkJVVFRPTlMuQ1JFQVRFXCIgfCB0cmFuc2xhdGUpIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=