@bnsights/bbsf-admin-portal 1.0.69 → 1.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/bnsights-bbsf-admin-portal-1.0.70.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +60 -44
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules.module.js +3 -3
- package/esm2015/lib/Pages/jobs/jobs.module.js +3 -3
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +3 -3
- package/esm2015/lib/Pages/notifications/add/add.component.js +1 -6
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +8 -3
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +2 -4
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +1 -3
- package/esm2015/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +27 -1
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +2 -2
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +1 -2
- package/fesm2015/bnsights-bbsf-admin-portal.js +60 -44
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +1 -0
- package/package.json +1 -1
- package/src/lib/assets/sass/custom-styles.scss +1 -7
- package/bnsights-bbsf-admin-portal-1.0.69.tgz +0 -0
|
@@ -778,7 +778,7 @@ export class TabsComponent {
|
|
|
778
778
|
}
|
|
779
779
|
}
|
|
780
780
|
TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TabsComponent, deps: [{ token: i1.AuthService }, { token: i2.WorkflowService }, { token: i3.ActivatedRoute }, { token: i4.WorkflowVariablesService }, { token: i5.WorkflowActivityService }, { token: i6.PageInfoService }, { token: i7.NgbModal }, { token: i1.EnvironmentService }, { token: i1.BBSFTranslateService }, { token: i1.UtilityService }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
781
|
-
TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TabsComponent, selector: "lib-tabs", viewQueries: [{ propertyName: "publishConfirmationModalControl", first: true, predicate: ["publishConfirmationModalControl"], descendants: true }, { propertyName: "WFVersionPagingElement", first: true, predicate: ["WorkflowVersionPagingViewElement"], descendants: true }, { propertyName: "WorkflowVariablePagingViewElement", first: true, predicate: ["WorkflowVariablePagingViewElement"], descendants: true }, { propertyName: "ActivityPagingViewElement", first: true, predicate: ["ActivityPagingViewElement"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"getDetails()\">{{utilityService.getResourceValue(\"Details\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0 justify-content-end\">\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" *ngIf=\"ShowWorkflowDetails&&!WorkflowDetails.isPublished\"\r\n id=\"btnPublish\" class=\"btn btn-sm btn-primary\" (click)=\"showPublishWFModal(WorkflowDetails.iD_GUID)\">\r\n {{utilityService.getResourceValue(\"PublishWorkflow\")}}\r\n\r\n </button>\r\n <!--<a class=\"btn btn-sm btn-light-primary\">\r\n {{utilityService.getResourceValue(\"Preview\")}}\r\n </a>-->\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <form [formGroup]=\"DetailsForm\" *ngIf=\"ShowWorkflowDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"NameMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"DescriptionMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Active\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Published\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n\r\n\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n <!--Publish workflow confirmation-->\r\n <BBSF-ConfirmationModal *ngIf=\"publishControlLoaded\" [options]=\"publishWFConfirmationOptions\" id=\"publishConfirmationModalControl\" #publishConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeVersion()\">{{utilityService.getResourceValue(\"Versions\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVersionForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"WorkflowVersionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"WorkflowIdTextBox\"\r\n [group]=\"WorkflowVersionForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Change\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Current\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Published\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let version of WorkflowVersionPagingResult\">\r\n <td>\r\n <a href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Workflows/VersionInfo',version.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\">{{version.changeStr}}</a>\r\n </td>\r\n <td>{{version.isCurrent}}</td>\r\n <td>{{version.isPublished}}</td>\r\n <td>{{version.creationDate}}</td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVersionPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVersionListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"WorkflowVersionPaging\" [group]=\"WorkflowVersionForm\"\r\n #WorkflowVersionPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowVariables()\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVariableForm\">\r\n <BBSF-TextBox [options]=\"WorkflowVariablesearchTextBox\"\r\n [group]=\"WorkflowVariableForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"VerisonIdTextBox\"\r\n [group]=\"WorkflowVariableForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"showAddWorkflowVariableModal(AddWorkflowVariableModal)\">\r\n <i class=\" fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"SysName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"DataType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"VariableType\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n\r\n\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let WorkflowVariable of WorkflowVariablePagingResult\">\r\n\r\n <td>\r\n <a href=\"javascript:void(0)\" class=\"text-dark\">{{WorkflowVariable.nameStr}}</a>\r\n\r\n </td>\r\n\r\n <td>\r\n {{WorkflowVariable.sysName}}\r\n </td>\r\n <td>{{WorkflowVariable.dataTypeItem}}</td>\r\n <td>{{WorkflowVariable.variableTypeItem}}</td>\r\n\r\n <td>\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\"\r\n (click)=\"showEditWorkflowVariableModal(WorkflowVariable.iD_GUID, EditWorkflowVariableModal)\">\r\n <i class=\"fa fa-edit\"\r\n aria-hidden=\"true\"></i>\r\n </a>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVariablePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVariableListResult($event)\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\" [options]=\"WorkflowVariablePaging\"\r\n [group]=\"WorkflowVariableForm\" #WorkflowVariablePagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n <!-- Add Modal -->\r\n <ng-template #AddWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddWFVariableName\" [group]=\"AddWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"AddWFVariableSysName\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,true)\" [options]=\"AddWFVariableDataType\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"AddWFVariableConstant\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showAddLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [options]=\"option[0]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,true)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinAddMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseWorkflowVariableModal id=\"CloseWorkflowVariableModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Edit Modal-->\r\n <ng-template #EditWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditWFVariableName\" [group]=\"EditWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditWFVariableSysName\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,false)\" [options]=\"EditWFVariableDataType\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditWFVariableConstant\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showEditLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of editWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[3]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,false)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinEditMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditWorkflowVariableModal id=\"CloseEditWorkflowVariableModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowActivity()\">\r\n {{utilityService.getResourceValue(\"WorkflowActivities\")}}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\">\r\n <form [formGroup]=\"workflowActivityForm\">\r\n <div id=\"filtersContainer\" data-isloaded=\"true\">\r\n <BBSF-TextBox [options]=\"WorkflowActivityIdTextBox\"\r\n [group]=\"workflowActivityForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\" [routerLink]=\"['/Admin/Workflows/AddActivity',VersionId]\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 mb-8\" *ngFor=\"let workflowActivity of ActivityPagingResult\">\r\n <div class=\"card bg-light-dark rounded\">\r\n <div class=\"card-header border-0 pt-9\">\r\n <div class=\"card-title m-0 fs-2 text-primary\">\r\n {{workflowActivity.typeNameStr}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm me-2 \" (click)=\"showAddWFVariablestoActivity(workflowActivity.versionID_GUID,workflowActivity.iD_GUID,wfActivityVariablesModal)\">\r\n <i class=\"fa fa-gear\" aria-hidden=\"true\">\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n </i>\r\n </button>\r\n <button type=\"button\" id=\"btnAdd\" class=\"btn btn-light-primary btn-sm btn-icon me-2\" [routerLink]=\"['/Admin/Workflows/EditActivity',workflowActivity.iD_GUID]\">\r\n <i *ngIf=\"workflowActivity.isPublished\" class=\"fas fa-pen\"></i>\r\n <i *ngIf=\"!workflowActivity.isPublished\" class=\"fas fa-pen\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-9\">\r\n <div class=\"fs-6 fw-bolder text-dark\">{{utilityService.getResourceValue(\"WFOutcome\")}}</div>\r\n <div class=\"text-gray-400 fw-bold fs-5 mt-1 mb-7\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n <ul id=\"horizontalmenu\">\r\n <li class=\"text-dark\" *ngFor=\"let item of workflowActivity.variables\">\r\n <i class=\"fa fa-gear\"></i>\r\n {{item.sysName}}\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n\r\n <div class=\" mb-5\">\r\n <div *ngFor=\"let item of workflowActivity.outcomes\">\r\n {{ item.nameEN }}: {{item.nextActvityName}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:: Card body-->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActivityListResult($event)\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\" [options]=\"ActivityPaging\"\r\n [group]=\"workflowActivityForm\" #ActivityPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n\r\n <ng-template #wfActivityVariablesModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"AddWorkflowVariables\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"addWorkflowVariabletoActivityFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Enabled\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mandatory\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of activityWFVariableOptions;let i=index;\">\r\n\r\n <td>\r\n <!--hidden is system-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n\r\n <!--if is systm-->\r\n <div *ngIf=\"option[7];else variableNameDDL;\">\r\n <!--variavle name-->\r\n <BBSF-TextBox [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden variable id-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[9]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <!--variavle name ddl-->\r\n <ng-template #variableNameDDL>\r\n <BBSF-DropdownList [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-DropdownList>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <!--is enabled-->\r\n <BBSF-CheckBox [options]=\"option[1]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[2]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is mandatory-->\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[4]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is visible-->\r\n <BBSF-CheckBox [options]=\"option[5]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--if ! isSystem-->\r\n <a *ngIf=\"!option[7]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteActivityWFVariable(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addNewActivityWFVariable()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", styles: [".nav.nav-tabs{background:#f7f8fa;border-bottom:0px}.nav-tabs .nav-item .nav-link{color:#494b74}.nav-tabs .nav-item .nav-link.active,.nav-tabs .nav-item .nav-link:active,.nav-tabs .nav-item .nav-link:hover{color:#494b74;font-weight:500}.workflow-tabs a.nav-link{padding:17px 25px}.kt-widget.kt-widget--user-profile-3.kt-widget.kt-widget--user-profile-3.workflow-activities{border-radius:15px;box-shadow:0 0 3px #dadada!important}.workflow-activities .kt-widget__progress{justify-content:flex-end;align-items:end}.workflow-activities .kt-widget__username{color:#494b74}.workflow-activities ul#horizontalmenu{color:#a4a4a4;list-style:outside}\n"], components: [{ type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { type: i10.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }], directives: [{ type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i13.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }] });
|
|
781
|
+
TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TabsComponent, selector: "lib-tabs", viewQueries: [{ propertyName: "publishConfirmationModalControl", first: true, predicate: ["publishConfirmationModalControl"], descendants: true }, { propertyName: "WFVersionPagingElement", first: true, predicate: ["WorkflowVersionPagingViewElement"], descendants: true }, { propertyName: "WorkflowVariablePagingViewElement", first: true, predicate: ["WorkflowVariablePagingViewElement"], descendants: true }, { propertyName: "ActivityPagingViewElement", first: true, predicate: ["ActivityPagingViewElement"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"getDetails()\">{{utilityService.getResourceValue(\"Details\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0 justify-content-end\">\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" *ngIf=\"ShowWorkflowDetails&&!WorkflowDetails.isPublished\"\r\n id=\"btnPublish\" class=\"btn btn-sm btn-primary\" (click)=\"showPublishWFModal(WorkflowDetails.iD_GUID)\">\r\n {{utilityService.getResourceValue(\"PublishWorkflow\")}}\r\n\r\n </button>\r\n <!--<a class=\"btn btn-sm btn-light-primary\">\r\n {{utilityService.getResourceValue(\"Preview\")}}\r\n </a>-->\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <form [formGroup]=\"DetailsForm\" *ngIf=\"ShowWorkflowDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"NameMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"DescriptionMultilingualTextBox\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"SysName\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Active\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"Published\"\r\n [group]=\"DetailsForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n\r\n\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n <!--Publish workflow confirmation-->\r\n <BBSF-ConfirmationModal *ngIf=\"publishControlLoaded\" [options]=\"publishWFConfirmationOptions\" id=\"publishConfirmationModalControl\" #publishConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeVersion()\">{{utilityService.getResourceValue(\"Versions\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVersionForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"WorkflowVersionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"WorkflowIdTextBox\"\r\n [group]=\"WorkflowVersionForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Change\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Current\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Published\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let version of WorkflowVersionPagingResult\">\r\n <td>\r\n <a href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Workflows/VersionInfo',version.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\">{{version.changeStr}}</a>\r\n </td>\r\n <td>{{version.isCurrent}}</td>\r\n <td>{{version.isPublished}}</td>\r\n <td>{{version.creationDate}}</td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVersionPagingResult.length == 0\">\r\n <td colspan=\"4\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVersionListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"WorkflowVersionPaging\" [group]=\"WorkflowVersionForm\"\r\n #WorkflowVersionPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowVariables()\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\">\r\n <form [formGroup]=\"WorkflowVariableForm\">\r\n <BBSF-TextBox [options]=\"WorkflowVariablesearchTextBox\"\r\n [group]=\"WorkflowVariableForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"VerisonIdTextBox\"\r\n [group]=\"WorkflowVariableForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\"\r\n (click)=\"showAddWorkflowVariableModal(AddWorkflowVariableModal)\">\r\n <i class=\" fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <!--begin::Permission list-->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"SysName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"DataType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"VariableType\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n\r\n\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let WorkflowVariable of WorkflowVariablePagingResult\">\r\n\r\n <td>\r\n <a href=\"javascript:void(0)\" class=\"text-dark\">{{WorkflowVariable.nameStr}}</a>\r\n\r\n </td>\r\n\r\n <td>\r\n {{WorkflowVariable.sysName}}\r\n </td>\r\n <td>{{WorkflowVariable.dataTypeItem}}</td>\r\n <td>{{WorkflowVariable.variableTypeItem}}</td>\r\n\r\n <td>\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\"\r\n (click)=\"showEditWorkflowVariableModal(WorkflowVariable.iD_GUID, EditWorkflowVariableModal)\">\r\n <i class=\"fa fa-edit\"\r\n aria-hidden=\"true\"></i>\r\n </a>\r\n\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"WorkflowVariablePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Permission list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVariableListResult($event)\"\r\n *ngIf=\"IsWorkflowVariableFilterLoaded\" [options]=\"WorkflowVariablePaging\"\r\n [group]=\"WorkflowVariableForm\" #WorkflowVariablePagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n <!-- Add Modal -->\r\n <ng-template #AddWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddWFVariableName\" [group]=\"AddWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"AddWFVariableSysName\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,true)\" [options]=\"AddWFVariableDataType\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"AddWFVariableConstant\"\r\n [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showAddLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [options]=\"option[0]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"AddWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,true)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinAddMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseWorkflowVariableModal id=\"CloseWorkflowVariableModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Edit Modal-->\r\n <ng-template #EditWorkflowVariableModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"WorkflowVariable\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditWorkflowVariableFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditWFVariableName\" [group]=\"EditWorkflowVariableForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditWFVariableSysName\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList (OnChange)=\"WFVariableTypeOnChange($event,false)\" [options]=\"EditWFVariableDataType\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditWFVariableConstant\"\r\n [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"showEditLookupsTable\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameEN\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"NameAR\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of editWFVariablesLookupOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"option[1]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[3]\" [group]=\"EditWorkflowVariableForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteWFVariableLookup(option,false)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFVariableLookupinEditMode()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditWorkflowVariableModal id=\"CloseEditWorkflowVariableModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"initializeWorkflowActivity()\">\r\n {{utilityService.getResourceValue(\"WorkflowActivities\")}}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-5 px-0\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n <div class=\"filter-container text-dark\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\">\r\n <form [formGroup]=\"workflowActivityForm\">\r\n <div id=\"filtersContainer\" data-isloaded=\"true\">\r\n <BBSF-TextBox [options]=\"WorkflowActivityIdTextBox\"\r\n [group]=\"workflowActivityForm\" [hidden]=\"true\"></BBSF-TextBox>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-primary btn-sm\" [routerLink]=\"['/Admin/Workflows/AddActivity',VersionId]\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 mb-8\" *ngFor=\"let workflowActivity of ActivityPagingResult\">\r\n <div class=\"card bg-light-dark rounded\">\r\n <div class=\"card-header border-0 pt-9\">\r\n <div class=\"card-title m-0 fs-2 text-primary\">\r\n {{workflowActivity.typeNameStr}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm me-2 \" (click)=\"showAddWFVariablestoActivity(workflowActivity.versionID_GUID,workflowActivity.iD_GUID,wfActivityVariablesModal)\">\r\n <i class=\"fa fa-gear\" aria-hidden=\"true\">\r\n </i>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnAdd\" class=\"btn btn-light-primary btn-sm btn-icon me-2\" [routerLink]=\"['/Admin/Workflows/EditActivity',workflowActivity.iD_GUID]\">\r\n <i *ngIf=\"workflowActivity.isPublished\" class=\"fas fa-pen\"></i>\r\n <i *ngIf=\"!workflowActivity.isPublished\" class=\"fas fa-pen\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-9\">\r\n <div class=\"fs-6 fw-bolder text-dark\">{{utilityService.getResourceValue(\"WFOutcome\")}}</div>\r\n <div class=\"text-gray-400 fw-bold fs-5 mt-1 mb-7\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li>\r\n {{utilityService.getResourceValue(\"WorkflowVariables\")}}\r\n <ul id=\"horizontalmenu\">\r\n <li class=\"text-dark\" *ngFor=\"let item of workflowActivity.variables\">\r\n <i class=\"fa fa-gear\"></i>\r\n {{item.sysName}}\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n\r\n <div class=\" mb-5\">\r\n <div *ngFor=\"let item of workflowActivity.outcomes\">\r\n {{ item.nameEN }}: {{item.nextActvityName}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:: Card body-->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActivityListResult($event)\"\r\n *ngIf=\"IsworkflowActivityFilterLoaded\" [options]=\"ActivityPaging\"\r\n [group]=\"workflowActivityForm\" #ActivityPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!--end:: Widgets/Applications/User/Profile3-->\r\n </div>\r\n\r\n <ng-template #wfActivityVariablesModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"AddWorkflowVariables\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"addWorkflowVariabletoActivityFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"WorkflowVariables\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Enabled\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Mandatory\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of activityWFVariableOptions;let i=index;\">\r\n\r\n <td>\r\n <!--hidden is system-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n\r\n <!--if is systm-->\r\n <div *ngIf=\"option[7];else variableNameDDL;\">\r\n <!--variavle name-->\r\n <BBSF-TextBox [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden variable id-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[9]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <!--variavle name ddl-->\r\n <ng-template #variableNameDDL>\r\n <BBSF-DropdownList [options]=\"option[8]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-DropdownList>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <!--is enabled-->\r\n <BBSF-CheckBox [options]=\"option[1]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[2]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is mandatory-->\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[4]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--is visible-->\r\n <BBSF-CheckBox [options]=\"option[5]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addWorkflowVariabletoActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--if ! isSystem-->\r\n <a *ngIf=\"!option[7]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteActivityWFVariable(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addNewActivityWFVariable()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", styles: [".nav.nav-tabs{background:#f7f8fa;border-bottom:0px}.nav-tabs .nav-item .nav-link{color:#494b74}.nav-tabs .nav-item .nav-link.active,.nav-tabs .nav-item .nav-link:active,.nav-tabs .nav-item .nav-link:hover{color:#494b74;font-weight:500}.workflow-tabs a.nav-link{padding:17px 25px}.kt-widget.kt-widget--user-profile-3.kt-widget.kt-widget--user-profile-3.workflow-activities{border-radius:15px;box-shadow:0 0 3px #dadada!important}.workflow-activities .kt-widget__progress{justify-content:flex-end;align-items:end}.workflow-activities .kt-widget__username{color:#494b74}.workflow-activities ul#horizontalmenu{color:#a4a4a4;list-style:outside}\n"], components: [{ type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { type: i10.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }], directives: [{ type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i13.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }] });
|
|
782
782
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TabsComponent, decorators: [{
|
|
783
783
|
type: Component,
|
|
784
784
|
args: [{
|
|
@@ -799,4 +799,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
799
799
|
type: ViewChild,
|
|
800
800
|
args: ['ActivityPagingViewElement', { static: false }]
|
|
801
801
|
}] } });
|
|
802
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvdGFicy90YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQStCLGdCQUFnQixFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdwVSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFJckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzdGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPMUQsTUFBTSxPQUFPLGFBQWE7SUErRnhCLHVCQUF1QjtJQUd2QixZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzVFLGNBQThCLEVB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O3VCQUFDLGtDQUFrQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFnQkcsaUNBQWlDO3NCQUFuRyxTQUFTO3VCQUFDLG1DQUFtQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF1Q04seUJBQXlCO3NCQUFuRixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIEZvcm1PcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIFBhZ2luZ0FjdGlvbk1vZGUsIEZvcmNlRGlyZWN0aW9uLCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIENoZWNrQm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFdGVmFyaWFibGVNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZWYXJpYWJsZU1vZGVsJztcclxuaW1wb3J0IHsgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1dvcmtmbG93VmFyaWFibGVzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZBY3Rpdml0eU1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZhcmlhYmxlTG9va3VwTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1ZhcmlhYmxlTG9va3VwTW9kZWwnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXRlZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvV0ZWYXJpYWJsZURhdGFUeXBlJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eVZhcmlhYmxlRFRPLCBXRkFjdGl2aXR5VmFyaWFibGVzTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlWYXJpYWJsZXNNb2RlbCc7XHJcbmltcG9ydCB7IFZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFBhZ2V0aXRsZTogc3RyaW5nID0gXCJcIlxyXG5cclxuICAvL1dGXHJcbiAgLy8gRGV0YWlscyBDb250cm9sc1xyXG4gIERldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dEZXRhaWxzOiBhbnk7XHJcbiAgV29ya2Zsb3dJZDogc3RyaW5nO1xyXG4gIE5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94OiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBEZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3g6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFjdGl2ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgUHVibGlzaGVkOiBUZXh0Qm94T3B0aW9ucztcclxuICBTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBTaG93V29ya2Zsb3dEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVmVyc2lvbklkOiBzdHJpbmdcclxuICAvL3B1Ymxpc2ggV0YgIE1vZGVsIENvbnRyb2xzXHJcbiAgcHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHB1Ymxpc2hDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncHVibGlzaENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyBWZXJzaW9uXHJcbiAgV29ya0Zsb3dWZXJzaW9uQXBpVXJsID0gXCIvYXBpL2FkbWluL1dGVmVyc2lvbi9cIlxyXG4gIFdvcmtmbG93VmVyc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0lkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFdvcmtmbG93VmVyc2lvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgV29ya2Zsb3dJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1dvcmtmbG93VmVyc2lvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdGVmVyc2lvblBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIC8vRW5kIFdvcmtGbG93IHZlcnNpb25cclxuXHJcbiAgLy9TdGFydCBXb3JrZmxvdyBWYXJpYWJsZXNcclxuICAvL1dvcmtmbG93IFZhcmlhYmxlcyBjb250cm9sc1xyXG4gIFdvcmtmbG93VmFyaWFibGVBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dWYXJpYWJsZS9cIlxyXG4gIFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dWYXJpYWJsZXNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFdvcmtmbG93VmFyaWFibGVUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgVmVyaXNvbklkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVmVyaXNvbklkVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIERhdGFUeXBlTGlzdCA9IFtdO1xyXG4gIFdvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dWYXJpYWJsZVBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkV0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFdGVmFyaWFibGVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlRGF0YVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICAvL1dGIHZhcmlhYmxlIGxvb2t1cHNcclxuICBhZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0FkZExvb2t1cHNUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFkZExhc3RMb29rdXBJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0V0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlU3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFdGVmFyaWFibGVEYXRhVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBXb3JrZmxvd1ZhcmlhYmxlSWQ6IGFueVxyXG4gIC8vV0YgdmFyaWFibGUgbG9va3Vwc1xyXG4gIGVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0VkaXRMb29rdXBzVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlZGl0TGFzdExvb2t1cEluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvL0VuZCBXb3JrZmxvdyBWYXJpYWJsZVxyXG5cclxuICAvL3N0cmF0IFdvcmtmbG93IEFjdGl2aXR5XHJcbiAgLy9Xb3JrZmxvdyBBY3Rpdml0eSBDb250cm9sc1xyXG4gIEFjdGl2aXR5QXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93QWN0aXZpdHkvXCJcclxuICBBY3Rpdml0eVR5cGVMaXN0ID0gW107XHJcbiAgd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgQWN0aXZpdHlQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQWN0aXZpdHlQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQWN0aXZpdHlQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBY3Rpdml0eVBhZ2luZ1ZpZXdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVzIHRvIGFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBhY3Rpdml0eUlEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlXRlZhcmlhYmxlT3B0aW9uczogYW55W10gPSBbXTtcclxuICBsYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgYWN0aXZpdHlWYXJpYWJsZXNMaXN0ID0gW107XHJcbiAgLy9FbmQgV29ya2Zsb3cgQWN0aXZpdHlcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIFdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlOiBXb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0lkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICB0aGlzLlZlcnNpb25JZCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXREZXRhaWxzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiBmdW5jdGlvbnNcclxuICBnZXREZXRhaWxzKCkge1xyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLldvcmtmbG93U2VydmljZS5nZXREZXRhaWxzKHRoaXMuV29ya2Zsb3dJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0RldGFpbHMgPSByZXN1bHQgYXMgYW55XHJcblxyXG4gICAgICB2YXIgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZS5hcmFiaWM7XHJcbiAgICAgIE5hbWUuRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuUGFnZXRpdGxlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZVN0clxyXG5cclxuXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLlBhZ2V0aXRsZVxyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICAgIF07XHJcblxyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveCA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIlxyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LlZhbHVlID0gTmFtZTtcclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuXHJcbiAgICAgIHZhciBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94ID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCJcclxuICAgICAgdGhpcy5EZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3guRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5WYWx1ZSA9IERlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuU3lzTmFtZS5OYW1lID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLlN5c05hbWUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5TeXNOYW1lLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuc3lzTmFtZVxyXG5cclxuICAgICAgdGhpcy5BY3RpdmUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BY3RpdmUuTmFtZSA9IFwiQWN0aXZlXCJcclxuICAgICAgdGhpcy5BY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWN0aXZlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkFjdGl2ZS5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFjdGl2ZS5WYWx1ZSA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzQWN0aXZlXHJcblxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5OYW1lID0gXCJQdWJsaXNoZWRcIlxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5MYWJlbEtleSA9IFwiUHVibGlzaGVkXCJcclxuICAgICAgdGhpcy5QdWJsaXNoZWQuVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuaXNQdWJsaXNoZWRcclxuXHJcbiAgICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy9EZWxldGUgcHJvdmlkZXJcclxuICBzaG93UHVibGlzaFdGTW9kYWwoaWQ6IHN0cmluZykge1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaChpZCk7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucHVibGlzaFdvcmtGbG93O1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLnB1Ymxpc2hXRkNvbmZpcm1hdGlvbk9wdGlvbnMuQ29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd1wiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5Db25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1Ymxpc2hlZFN1Y2Nlc3NmdWxseVwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5wdWJsaXNoV29ya0Zsb3dPblN1Y2Nlc3M7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgcHVibGlzaFdvcmtGbG93ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuV29ya2Zsb3dTZXJ2aWNlLnB1Ymxpc2hXb3JrRmxvdyhpZCk7XHJcbiAgfVxyXG4gIHB1Ymxpc2hXb3JrRmxvd09uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzUHVibGlzaGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vV0YgdmVyc2lvbiBmdW5jdGlvbnNcclxuICBpbml0aWFsaXplVmVyc2lvbigpIHtcclxuICAgIHRoaXMuU2hvd1dvcmtmbG93RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIC8vIFRleHRCb3ggaW50aVxyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94Lk5hbWUgPSBcIldvcmtmbG93SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiV29ya2Zsb3dJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIldmSURcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLldvcmtGbG93VmVyc2lvbkFwaVVybCArICdHZXRWZXJzaW9uc0xpc3RpbmcnO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZlcnNpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCIsIFwiV29ya2Zsb3dJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMuV29ya2Zsb3dJZEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcbiAgc2V0V29ya2Zsb3dWZXJzaW9uTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiB2YXJpYWJsZXMgRnVuY3Rpb25zXHJcbiAgc2V0V29ya2Zsb3dWYXJpYWJsZUxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBXRiB2YXJpYWJsZXMgcGFnZVxyXG4gIGluaXRpYWxpemVXb3JrZmxvd1ZhcmlhYmxlcygpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5OYW1lID0gXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5OYW1lID0gXCJWZXJpc29uSWRUZXh0Qm94XCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIlZlcmlzb25JZFRleHRCb3hcIlxyXG4gICAgdGhpcy5WZXJpc29uSWRUZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwidmVyc2lvbklEXCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlQXBpVXJsICsgJ0dldFZhcmlhYmxlTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiLCBcIlZlcmlzb25JZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQsRWRpdCBXRiB2YXJpYWJsZSBzaGFyZWQgZnVuY3Rpb25zXHJcbiAgV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSh0eXBlOiBzdHJpbmcsIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkFkZExvb2t1cE5hbWVFTlwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiQWRkTG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiICsgaSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICBpZiAodHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fCB0eXBlID09IFZhcmlhYmxlRGF0YVR5cGUuTXVsdGlTZWxlY3Rpb24pXHJcbiAgICAgICAgdGhpcy5zaG93QWRkTG9va3Vwc1RhYmxlID0gdHJ1ZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuc2hvd0FkZExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBJRFwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBOYW1lRU5cIiArIGkpO1xyXG4gICAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJFZGl0TG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiRWRpdExvb2t1cFZhbHVlXCIgKyBpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ID0gMDtcclxuICAgICAgaWYgKHR5cGUgPT0gVmFyaWFibGVEYXRhVHlwZS5TaW5nbGVTZWxlY3Rpb24gfHwgdHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLk11bHRpU2VsZWN0aW9uKVxyXG4gICAgICAgIHRoaXMuc2hvd0VkaXRMb29rdXBzVGFibGUgPSB0cnVlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5zaG93RWRpdExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBpbml0aWFsaXplV0ZWYXJpYWJsZUxvb2t1cE9wdGlvbnMoaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBsb29rdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IG9iamVjdExvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgYWN0aW9uSW5kaWNhdGU6IHN0cmluZztcclxuICAgIGxldCBpbmRleDogbnVtYmVyO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGFjdGlvbkluZGljYXRlID0gXCJBZGRcIjtcclxuICAgICAgaW5kZXggPSB0aGlzLmFkZExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhY3Rpb25JbmRpY2F0ZSA9IFwiRWRpdFwiO1xyXG4gICAgICBpbmRleCA9IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIC8vRm9yIGVkaXQgb25seVxyXG4gICAgbGV0IGxvb2t1cElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBJRC5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cElEXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cElELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVFTiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUVOLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUVOXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVFTi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUVOLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVFTi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVFTi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVBUiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUFSLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUFSXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVBUi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUFSLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVBUi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVBUi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBWYWx1ZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cFZhbHVlXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cFZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBsb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cFZhbHVlLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG4gICAgaWYgKGlzQWRkKVxyXG4gICAgICBvYmplY3RMb29rdXBPcHRpb25zLnB1c2gobG9va3VwTmFtZUVOLCBsb29rdXBOYW1lQVIsIGxvb2t1cFZhbHVlKTtcclxuICAgIGVsc2VcclxuICAgICAgb2JqZWN0TG9va3VwT3B0aW9ucy5wdXNoKGxvb2t1cElELCBsb29rdXBOYW1lRU4sIGxvb2t1cE5hbWVBUiwgbG9va3VwVmFsdWUpO1xyXG5cclxuICAgIGxvb2t1cE9wdGlvbnMucHVzaChvYmplY3RMb29rdXBPcHRpb25zKTtcclxuXHJcbiAgICBpbmRleCArPSAxO1xyXG4gICAgcmV0dXJuIFtsb29rdXBPcHRpb25zLCBpbmRleF07XHJcblxyXG4gIH1cclxuICBkZWxldGVXRlZhcmlhYmxlTG9va3VwKGRlbGV0ZWRMb29rdXA6IGFueSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpc0FkZCkge1xyXG4gICAgICBsZXQgZGVsZXRlZExvb2t1cEluZGV4OiBudW1iZXIgPSB0aGlzLmFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRMb29rdXApO1xyXG4gICAgICBpZiAoZGVsZXRlZExvb2t1cEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuYWRkV0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRMb29rdXBbaV0uTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGRlbGV0ZWRMb29rdXBJbmRleDogbnVtYmVyID0gdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLmluZGV4T2YoZGVsZXRlZExvb2t1cCk7XHJcbiAgICAgIGlmIChkZWxldGVkTG9va3VwSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkTG9va3VwW2ldLk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVcclxuICBzaG93QWRkV29ya2Zsb3dWYXJpYWJsZU1vZGFsKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5EYXRhVHlwZUxpc3QgPSByZXN1bHRPYmouZGF0YVR5cGVMaXN0O1xyXG5cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNob3dBZGRMb29rdXBzVGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGVmFyaWFibGVNb2RlbDtcclxuICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRlZhcmlhYmxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZU5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5NYXhMZW5ndGggPSAyNTVcclxuXHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlU3lzTmFtZS5NYXhMZW5ndGggPSAxMDBcclxuXHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVEYXRhVHlwZS5OYW1lID0gXCJEYXRhVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuTGFiZWxLZXkgPSBcIkRhdGFUeXBlXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuRGF0YVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlQ29uc3RhbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZUNvbnN0YW50Lk5hbWUgPSBcIklzQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5MYWJlbEtleSA9IFwiQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbFxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZFdGVmFyaWFibGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS52YWx1ZTtcclxuICAgIGxldCBhZGRNb2RlbCA9IG5ldyBXRlZhcmlhYmxlTW9kZWwoKTtcclxuICAgIGFkZE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lXHJcbiAgICBhZGRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZVxyXG4gICAgYWRkTW9kZWwuV29ya2Zsb3dWZXJzaW9uSURfR1VJRCA9IHRoaXMuVmVyc2lvbklkXHJcbiAgICBhZGRNb2RlbC5EYXRhVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuRGF0YVR5cGVJdGVtSURfR1VJRFxyXG4gICAgYWRkTW9kZWwuSXNDb25zdGFudCA9IFJlc3VsdE1vZGVsLklzQ29uc3RhbnRcclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuYWRkTGFzdExvb2t1cEluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IGFkZExvb2t1cE5hbWVFTiA9IFJlc3VsdE1vZGVsW1wiQWRkTG9va3VwTmFtZUVOXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZExvb2t1cE5hbWVFTiA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgYWRkTG9va3VwTmFtZUFSID0gUmVzdWx0TW9kZWxbXCJBZGRMb29rdXBOYW1lQVJcIiArIGpdO1xyXG4gICAgICBsZXQgYWRkTG9va3VwVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkFkZExvb2t1cFZhbHVlXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXA6IFZhcmlhYmxlTG9va3VwTW9kZWwgPSBuZXcgVmFyaWFibGVMb29rdXBNb2RlbCgpO1xyXG4gICAgICBsb29rdXAuTmFtZUVOID0gYWRkTG9va3VwTmFtZUVOO1xyXG4gICAgICBsb29rdXAuTmFtZUFSID0gYWRkTG9va3VwTmFtZUFSO1xyXG4gICAgICBsb29rdXAuVmFsdWUgPSBhZGRMb29rdXBWYWx1ZTtcclxuICAgICAgYWRkTW9kZWwudmFyaWFibGVMb29rdXBEVE9zLnB1c2gobG9va3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEFkZFdGVmFyaWFibGVGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UuYWRkVmFyaWFibGUoQWRkTW9kZWwpXHJcbiAgfVxyXG4gIGFkZFdGVmFyaWFibGVMb29rdXBpbkFkZE1vZGUoKSB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB0aGlzLmluaXRpYWxpemVXRlZhcmlhYmxlTG9va3VwT3B0aW9ucyh0cnVlKTtcclxuICAgIHRoaXMuYWRkV0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zID0gdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMuY29uY2F0KHJlc3VsdFswXSk7XHJcbiAgICB0aGlzLmFkZExhc3RMb29rdXBJbmRleCA9IHJlc3VsdFsxXTtcclxuICB9XHJcblxyXG4gIC8vRWRpdCBXRiB2YXJpYWJsZVxyXG4gIHNob3dFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKFdGVmFyaWFibGVJRDogc3RyaW5nLCBFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlSWQgPSBXRlZhcmlhYmxlSUQ7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzU2VydmljZS5nZXRFZGl0V29ya0Zsb3dWYXJpYWJsZURhdGEoV0ZWYXJpYWJsZUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IHdvcmtmbG93VmFyaWFibGUgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRCA9IHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLkRhdGFUeXBlTGlzdCA9IGxpc3RzLmRhdGFUeXBlTGlzdDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmVkaXRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNob3dFZGl0TG9va3Vwc1RhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cclxuICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRXRlZhcmlhYmxlTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRXRlZhcmlhYmxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkFyYWJpYyA9IHdvcmtmbG93VmFyaWFibGUubmFtZS5hcmFiaWM7XHJcbiAgICAgIG5hbWUuRW5nbGlzaCA9IHdvcmtmbG93VmFyaWFibGUubmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZVN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVTeXNOYW1lLlZhbHVlID0gd29ya2Zsb3dWYXJpYWJsZS5zeXNOYW1lO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlRGF0YVR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5OYW1lID0gXCJEYXRhVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLkxhYmVsS2V5ID0gXCJEYXRhVHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5EYXRhU291cmNlID0gdGhpcy5EYXRhVHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5TZWxlY3RlZEl0ZW1zID0gd29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZUNvbnN0YW50ID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQuTmFtZSA9IFwiSXNDb25zdGFudFwiXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVDb25zdGFudC5MYWJlbEtleSA9IFwiQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQuVmFsdWUgPSB3b3JrZmxvd1ZhcmlhYmxlLmlzQ29uc3RhbnRcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZUNvbnN0YW50LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsXHJcblxyXG5cclxuICAgICAgaWYgKHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRCA9PSBWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fCB3b3JrZmxvd1ZhcmlhYmxlLmRhdGFUeXBlSXRlbUlEX0dVSUQgPT0gVmFyaWFibGVEYXRhVHlwZS5NdWx0aVNlbGVjdGlvbikge1xyXG4gICAgICAgIC8vU2V0IExvb2t1cCBDb250cm9sc1xyXG4gICAgICAgIHRoaXMuc2V0RWRpdFZhcmlhYmxlTG9va3Vwcyh3b3JrZmxvd1ZhcmlhYmxlLnZhcmlhYmxlTG9va3VwRFRPcyk7XHJcbiAgICAgICAgdGhpcy5zaG93RWRpdExvb2t1cHNUYWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRFZGl0V0ZWYXJpYWJsZU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgV0ZWYXJpYWJsZU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZUlkO1xyXG4gICAgRWRpdE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lXHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWVcclxuICAgIEVkaXRNb2RlbC5Xb3JrZmxvd1ZlcnNpb25JRF9HVUlEID0gdGhpcy5WZXJzaW9uSWQ7XHJcbiAgICBFZGl0TW9kZWwuRGF0YVR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLkRhdGFUeXBlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5Jc0NvbnN0YW50ID0gUmVzdWx0TW9kZWwuSXNDb25zdGFudFxyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRMb29rdXBJRCA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cElEXCIgKyBqXTtcclxuICAgICAgaWYgKGVkaXRMb29rdXBJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgZWRpdExvb2t1cE5hbWVFTiA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cE5hbWVFTlwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TG9va3VwTmFtZUFSID0gUmVzdWx0TW9kZWxbXCJFZGl0TG9va3VwTmFtZUFSXCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRMb29rdXBWYWx1ZSA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cFZhbHVlXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXA6IFZhcmlhYmxlTG9va3VwTW9kZWwgPSBuZXcgVmFyaWFibGVMb29rdXBNb2RlbCgpO1xyXG4gICAgICBsb29rdXAuSURfR1VJRCA9IGVkaXRMb29rdXBJRDtcclxuICAgICAgbG9va3VwLk5hbWVFTiA9IGVkaXRMb29rdXBOYW1lRU47XHJcbiAgICAgIGxvb2t1cC5OYW1lQVIgPSBlZGl0TG9va3VwTmFtZUFSO1xyXG4gICAgICBsb29rdXAuVmFsdWUgPSBlZGl0TG9va3VwVmFsdWU7XHJcbiAgICAgIEVkaXRNb2RlbC52YXJpYWJsZUxvb2t1cERUT3MucHVzaChsb29rdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEVkaXRXRlZhcmlhYmxlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLldvcmtmbG93VmFyaWFibGVzU2VydmljZS5lZGl0VmFyaWFibGUoRWRpdE1vZGVsKVxyXG4gIH1cclxuICBzZXRFZGl0VmFyaWFibGVMb29rdXBzKGV4aXN0aW5nTG9va3VwczogYW55W10pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhpc3RpbmdMb29rdXBzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICBsZXQgb2JqZWN0QXR0cmlidXRlT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXBJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBsb29rdXBJRC5OYW1lID0gXCJFZGl0TG9va3VwSURcIiArIGk7XHJcbiAgICAgIGxvb2t1cElELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cElELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgbG9va3VwSUQuVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0uaURfR1VJRDtcclxuXHJcbiAgICAgIGxldCBsb29rdXBOYW1lRU4gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgbG9va3VwTmFtZUVOLk5hbWUgPSBcIkVkaXRMb29rdXBOYW1lRU5cIiArIGk7XHJcbiAgICAgIGxvb2t1cE5hbWVFTi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBsb29rdXBOYW1lRU4uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBsb29rdXBOYW1lRU4uVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0ubmFtZUVOO1xyXG4gICAgICBsb29rdXBOYW1lRU4uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cE5hbWVFTi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG5cclxuICAgICAgbGV0IGxvb2t1cE5hbWVBUiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBsb29rdXBOYW1lQVIuTmFtZSA9IFwiRWRpdExvb2t1cE5hbWVBUlwiICsgaTtcclxuICAgICAgbG9va3VwTmFtZUFSLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5WYWx1ZSA9IGV4aXN0aW5nTG9va3Vwc1tpXS5uYW1lQVI7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgbG9va3VwTmFtZUFSLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljO1xyXG4gICAgICBsb29rdXBOYW1lQVIuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgbGV0IGxvb2t1cFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIGxvb2t1cFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBWYWx1ZVwiICsgaTtcclxuICAgICAgbG9va3VwVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgbG9va3VwVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBsb29rdXBWYWx1ZS5WYWx1ZSA9IGV4aXN0aW5nTG9va3Vwc1tpXS52YWx1ZTtcclxuICAgICAgbG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cFZhbHVlLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG4gICAgICBvYmplY3RBdHRyaWJ1dGVPcHRpb25zLnB1c2gobG9va3VwSUQsIGxvb2t1cE5hbWVFTiwgbG9va3VwTmFtZUFSLCBsb29rdXBWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5wdXNoKG9iamVjdEF0dHJpYnV0ZU9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmVkaXRMYXN0TG9va3VwSW5kZXggKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFdGVmFyaWFibGVMb29rdXBpbkVkaXRNb2RlKCkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0gdGhpcy5pbml0aWFsaXplV0ZWYXJpYWJsZUxvb2t1cE9wdGlvbnMoZmFsc2UpO1xyXG4gICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zID0gdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLmNvbmNhdChyZXN1bHRbMF0pO1xyXG4gICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ID0gcmVzdWx0WzFdO1xyXG4gIH1cclxuXHJcbiAgLy9XRiBBY3Rpdml0aXRpZXMgRnVuY3Rpb25zXHJcbiAgc2V0QWN0aXZpdHlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5BY3Rpdml0eVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVdvcmtmbG93QWN0aXZpdHkoKSB7XHJcbiAgICAvLyB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3guTmFtZSA9IFwiV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94LlZhbHVlID0gdGhpcy5Xb3JrZmxvd0lkXHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIldmSURcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkFjdGl2aXR5UGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQWN0aXZpdHlBcGlVcmwgKyAnR2V0V29ya2Zsb3dBY3Rpdml0eUxpc3RpbmcnO1xyXG4gICAgdGhpcy5BY3Rpdml0eVBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcIldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuRmlsdGVycyA9IFt0aGlzLldvcmtmbG93QWN0aXZpdHlJZEZpbHRlcl1cclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgIHRoaXMuU2hvd1dvcmtmbG93RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0sIDEwKTtcclxuXHJcbiAgICAvL3RoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuTG9hZGRyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgbGV0IEFjdGl2aXR5TGlzdCA9IHJlc3VsdCBhcyBhbnlcclxuICAgIC8vICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSBBY3Rpdml0eUxpc3RcclxuXHJcblxyXG4gICAgLy99KVxyXG4gIH1cclxuXHJcbiAgLy9BZGQgQWN0aXZpdHkgV0YgdmFyaWFibGVzXHJcbiAgc2hvd0FkZFdGVmFyaWFibGVzdG9BY3Rpdml0eSh2ZXJzaW9uSUQ6IHN0cmluZywgYWN0aXZpdHlJRDogc3RyaW5nLCB3ZlZhcmlhYmxlc01vZGFsOiBhbnkpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLmFjdGl2aXR5SUQgPSBhY3Rpdml0eUlEO1xyXG4gICAgdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zID0gW107XHJcbiAgICB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleCA9IDA7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5V0ZWYXJpYWJsZXModmVyc2lvbklELCBhY3Rpdml0eUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdCA9IHJlc3VsdE9iai5hY3Rpdml0eVZhcmlhYmxlc0xpc3Q7XHJcblxyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cclxuICAgICAgdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldGFkZFdGVmFyaWFibGV0b0FjdGl2aXR5TW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldGFkZFdGVmFyaWFibGV0b0FjdGl2aXR5RnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLkFjdGl2aXR5UGFnaW5nVmlld0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsLmFjdGl2aXR5VmFyaWFibGVEVE9zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRWYXJpYWJsZSA9IG1vZGVsLmFjdGl2aXR5VmFyaWFibGVEVE9zW2ldO1xyXG4gICAgICAgIGxldCBvYmplY3RWYXJpYWJsZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGxldCBpc1N5c3RlbTogYm9vbGVhbiA9IGN1cnJlbnRWYXJpYWJsZS5pc1N5c3RlbTtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNTeXN0ZW0gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTsvL2hpZGRlblxyXG4gICAgICAgIHZhcmlhYmxlSXNTeXN0ZW0uTmFtZSA9IFwidmFyaWFibGVJc1N5c3RlbVwiICsgaTtcclxuICAgICAgICB2YXJpYWJsZUlzU3lzdGVtLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgdmFyaWFibGVJc1N5c3RlbS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdmFyaWFibGVJc1N5c3RlbS5WYWx1ZSA9IGlzU3lzdGVtO1xyXG5cclxuICAgICAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQuTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRcIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQuVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNFbmFibGVkO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkLklzRGlzYWJsZWQgPSBpc1N5c3RlbTtcclxuXHJcbiAgICAgICAgLy9oaWRkZW4gZmllbGRcclxuICAgICAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRIaWRkZW5cIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNFbmFibGVkO1xyXG5cclxuICAgICAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5Lk5hbWUgPSBcInZhcmlhYmxlSXNNYW5kYXRvcnlcIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeS5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc01hbmRhdG9yeTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5LklzRGlzYWJsZWQgPSBpc1N5c3RlbTtcclxuXHJcbiAgICAgICAgLy9oaWRkZW4gZmllbGRcclxuICAgICAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW5cIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbi5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc01hbmRhdG9yeTtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLk5hbWUgPSBcInZhcmlhYmxlSXNWaXNpYmxlXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzVmlzaWJsZTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZS5Jc0Rpc2FibGVkID0gaXNTeXN0ZW07XHJcblxyXG4gICAgICAgIC8vaGlkZGVuIGZpZWxkXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzVmlzaWJsZTtcclxuXHJcbiAgICAgICAgb2JqZWN0VmFyaWFibGVPcHRpb25zLnB1c2godmFyaWFibGVJc1N5c3RlbSwgdmFyaWFibGVJc0VuYWJsZWQsIHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuLCB2YXJpYWJsZUlzTWFuZGF0b3J5LCB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLFxyXG4gICAgICAgICAgdmFyaWFibGVJc1Zpc2libGUsIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLCBpc1N5c3RlbSk7XHJcblxyXG4gICAgICAgIGlmIChpc1N5c3RlbSkge1xyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLk5hbWUgPSBcInZhcmlhYmxlTmFtZVwiICsgaTtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLklzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS52YXJpYWJsZU5hbWU7XHJcblxyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTsvL2hpZGRlblxyXG4gICAgICAgICAgdmFyaWFibGVJRC5OYW1lID0gXCJ2YXJpYWJsZUlEXCIgKyBpO1xyXG4gICAgICAgICAgdmFyaWFibGVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB2YXJpYWJsZUlELlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgb2JqZWN0VmFyaWFibGVPcHRpb25zLnB1c2godmFyaWFibGVOYW1lLCB2YXJpYWJsZUlEKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlSURkcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5OYW1lID0gXCJ2YXJpYWJsZUlEZHJvcGRvd25cIjtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB2YXJpYWJsZUlEZHJvcGRvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLkRhdGFTb3VyY2UgPSB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdDtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5TZWxlY3RlZEl0ZW1zID0gY3VycmVudFZhcmlhYmxlLmlER1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICBvYmplY3RWYXJpYWJsZU9wdGlvbnMucHVzaCh2YXJpYWJsZUlEZHJvcGRvd24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMucHVzaChvYmplY3RWYXJpYWJsZU9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMubGFzdEFjdGl2aXR5V0ZWYXJpYWJsZUluZGV4ICs9IDE7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4od2ZWYXJpYWJsZXNNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0YWRkV0ZWYXJpYWJsZXRvQWN0aXZpdHlNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgbW9kZWwgPSBuZXcgV0ZBY3Rpdml0eVZhcmlhYmxlc01vZGVsKCk7XHJcbiAgICBtb2RlbC5BY3Rpdml0eUlEX0dVSUQgPSB0aGlzLmFjdGl2aXR5SUQ7XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGFzdEFjdGl2aXR5V0ZWYXJpYWJsZUluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IHZhcmlhYmxlc0lzU3lzdGVtID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzU3lzdGVtXCIgKyBqXTtcclxuICAgICAgaWYgKHZhcmlhYmxlc0lzU3lzdGVtID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCB2YXJpYWJsZUlzRW5hYmxlZDogYm9vbGVhbjtcclxuICAgICAgbGV0IHZhcmlhYmxlSXNNYW5kYXRvcnk6IGJvb2xlYW47XHJcbiAgICAgIGxldCB2YXJpYWJsZUlzVmlzaWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAgIGxldCBhY3Rpdml0eVZhcmlhYmxlOiBXRkFjdGl2aXR5VmFyaWFibGVEVE8gPSBuZXcgV0ZBY3Rpdml0eVZhcmlhYmxlRFRPKCk7XHJcblxyXG4gICAgICBpZiAodmFyaWFibGVzSXNTeXN0ZW0pIHtcclxuICAgICAgICBsZXQgdmFyaWFibGVJRCA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJRFwiICsgal07XHJcbiAgICAgICAgYWN0aXZpdHlWYXJpYWJsZS5JRF9HVUlEID0gdmFyaWFibGVJRDtcclxuXHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNFbmFibGVkSGlkZGVuXCIgKyBqXTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5ID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuXCIgKyBqXTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc1Zpc2libGVIaWRkZW5cIiArIGpdO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCB2YXJpYWJsZUlEID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlEZHJvcGRvd25cIiArIGpdO1xyXG4gICAgICAgIGFjdGl2aXR5VmFyaWFibGUuSURfR1VJRCA9IHZhcmlhYmxlSUQ7XHJcblxyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzRW5hYmxlZFwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc01hbmRhdG9yeVwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc1Zpc2libGUgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNWaXNpYmxlXCIgKyBqXTtcclxuICAgICAgfVxyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzU3lzdGVtID0gdmFyaWFibGVzSXNTeXN0ZW07XHJcbiAgICAgIGFjdGl2aXR5VmFyaWFibGUuSXNFbmFibGVkID0gdmFyaWFibGVJc0VuYWJsZWQ7XHJcbiAgICAgIGFjdGl2aXR5VmFyaWFibGUuSXNNYW5kYXRvcnkgPSB2YXJpYWJsZUlzTWFuZGF0b3J5O1xyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzVmlzaWJsZSA9IHZhcmlhYmxlSXNWaXNpYmxlO1xyXG4gICAgICBtb2RlbC5hY3Rpdml0eVZhcmlhYmxlRFRPcy5wdXNoKGFjdGl2aXR5VmFyaWFibGUpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKG1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRhZGRXRlZhcmlhYmxldG9BY3Rpdml0eUZ1bmN0aW9uID0gKHZhcmlhYmxlc01vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmFkZEFjdGl2aXR5V0ZWYXJpYWJsZXModmFyaWFibGVzTW9kZWwpXHJcbiAgfVxyXG4gIGRlbGV0ZUFjdGl2aXR5V0ZWYXJpYWJsZShkZWxldGVkVmFyaWFibGU6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRWYXJpYWJsZUluZGV4OiBudW1iZXIgPSB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMuaW5kZXhPZihkZWxldGVkVmFyaWFibGUpO1xyXG4gICAgaWYgKGRlbGV0ZWRWYXJpYWJsZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMuc3BsaWNlKGRlbGV0ZWRWYXJpYWJsZUluZGV4LCAxKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVkVmFyaWFibGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRWYXJpYWJsZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBhZGROZXdBY3Rpdml0eVdGVmFyaWFibGUoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleDtcclxuXHJcbiAgICBsZXQgb2JqZWN0VmFyaWFibGVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlEZHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlEZHJvcGRvd24uTmFtZSA9IFwidmFyaWFibGVJRGRyb3Bkb3duXCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSURkcm9wZG93bi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB2YXJpYWJsZUlEZHJvcGRvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLkRhdGFTb3VyY2UgPSB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdDtcclxuXHJcbiAgICBsZXQgaXNTeXN0ZW06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc1N5c3RlbSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpOy8vaGlkZGVuXHJcbiAgICB2YXJpYWJsZUlzU3lzdGVtLk5hbWUgPSBcInZhcmlhYmxlSXNTeXN0ZW1cIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB2YXJpYWJsZUlzU3lzdGVtLlZhbHVlID0gaXNTeXN0ZW07XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNFbmFibGVkID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWQuTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRcIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWQuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzRW5hYmxlZEhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbi5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlzTWFuZGF0b3J5ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc01hbmRhdG9yeS5OYW1lID0gXCJ2YXJpYWJsZUlzTWFuZGF0b3J5XCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSXNNYW5kYXRvcnkuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc01hbmRhdG9yeUhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLlZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGUuTmFtZSA9IFwidmFyaWFibGVJc1Zpc2libGVcIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGUuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc1Zpc2libGVIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzVmlzaWJsZUhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIG9iamVjdFZhcmlhYmxlT3B0aW9ucy5wdXNoKHZhcmlhYmxlSXNTeXN0ZW0sIHZhcmlhYmxlSXNFbmFibGVkLCB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbiwgdmFyaWFibGVJc01hbmRhdG9yeSwgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbixcclxuICAgICAgdmFyaWFibGVJc1Zpc2libGUsIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLCBpc1N5c3RlbSwgdmFyaWFibGVJRGRyb3Bkb3duKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMucHVzaChvYmplY3RWYXJpYWJsZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5sYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXggKz0gMTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiZ2V0RGV0YWlscygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGV0YWlsc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMCAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIlNob3dXb3JrZmxvd0RldGFpbHMmJiFXb3JrZmxvd0RldGFpbHMuaXNQdWJsaXNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYnRuUHVibGlzaFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93UHVibGlzaFdGTW9kYWwoV29ya2Zsb3dEZXRhaWxzLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtmbG93XCIpfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlld1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvYT4tLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJEZXRhaWxzRm9ybVwiICpuZ0lmPVwiU2hvd1dvcmtmbG93RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJOYW1lTXVsdGlsaW5ndWFsVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJEZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiUHVibGlzaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJEZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuXHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS1QdWJsaXNoIHdvcmtmbG93IGNvbmZpcm1hdGlvbi0tPlxyXG4gICAgICAgICAgPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJwdWJsaXNoQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cInB1Ymxpc2hXRkNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cInB1Ymxpc2hDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjcHVibGlzaENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiaW5pdGlhbGl6ZVZlcnNpb24oKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZlcnNpb25zXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIldvcmtmbG93VmVyc2lvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIldvcmtmbG93SWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDaGFuZ2VcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3VycmVudFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaXNoZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3JlYXRpb25EYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB2ZXJzaW9uIG9mIFdvcmtmbG93VmVyc2lvblBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vV29ya2Zsb3dzL1ZlcnNpb25JbmZvJyx2ZXJzaW9uLmlEX0dVSURdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFya1wiPnt7dmVyc2lvbi5jaGFuZ2VTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dmVyc2lvbi5pc0N1cnJlbnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZlcnNpb24uaXNQdWJsaXNoZWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZlcnNpb24uY3JlYXRpb25EYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIldvcmtmbG93VmVyc2lvblBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VmVyc2lvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIldvcmtmbG93VmVyc2lvblBhZ2luZ1wiIFtncm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjV29ya2Zsb3dWZXJzaW9uUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVXb3JrZmxvd1ZhcmlhYmxlcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZXNcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJJc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlZlcmlzb25JZFRleHRCb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiV29ya2Zsb3dWYXJpYWJsZUZvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FkZFdvcmtmbG93VmFyaWFibGVNb2RhbChBZGRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtcGx1c1wiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3lzTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEYXRhVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYXJpYWJsZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IFdvcmtmbG93VmFyaWFibGUgb2YgV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cInRleHQtZGFya1wiPnt7V29ya2Zsb3dWYXJpYWJsZS5uYW1lU3RyfX08L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7V29ya2Zsb3dWYXJpYWJsZS5zeXNOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7V29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e1dvcmtmbG93VmFyaWFibGUudmFyaWFibGVUeXBlSXRlbX19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbChXb3JrZmxvd1ZhcmlhYmxlLmlEX0dVSUQsIEVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VmFyaWFibGVMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCIgI1dvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6IFdpZGdldHMvQXBwbGljYXRpb25zL1VzZXIvUHJvZmlsZTMtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQWRkIE1vZGFsIC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI0FkZFdvcmtmbG93VmFyaWFibGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZU5hbWVcIiBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZVN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwiV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSgkZXZlbnQsdHJ1ZSlcIiBbb3B0aW9uc109XCJBZGRXRlZhcmlhYmxlRGF0YVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZUNvbnN0YW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2hvd0FkZExvb2t1cHNUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZUVOXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lQVJcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZVdGVmFyaWFibGVMb29rdXAob3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGVmFyaWFibGVMb29rdXBpbkFkZE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICNDbG9zZVdvcmtmbG93VmFyaWFibGVNb2RhbCBpZD1cIkNsb3NlV29ya2Zsb3dWYXJpYWJsZU1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRm9ybT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS1FZGl0IE1vZGFsLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRXRlZhcmlhYmxlTmFtZVwiIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFdGVmFyaWFibGVTeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJXRlZhcmlhYmxlVHlwZU9uQ2hhbmdlKCRldmVudCxmYWxzZSlcIiBbb3B0aW9uc109XCJFZGl0V0ZWYXJpYWJsZURhdGFUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0V0ZWYXJpYWJsZUNvbnN0YW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNob3dFZGl0TG9va3Vwc1RhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lRU5cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVBUlwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlV0ZWYXJpYWJsZUxvb2t1cChvcHRpb24sZmFsc2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGVmFyaWFibGVMb29rdXBpbkVkaXRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbCBpZD1cIkNsb3NlRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVXb3JrZmxvd0FjdGl2aXR5KClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dBY3Rpdml0aWVzXCIpfX1cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJJc3dvcmtmbG93QWN0aXZpdHlGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZmlsdGVyc0NvbnRhaW5lclwiIGRhdGEtaXNsb2FkZWQ9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIndvcmtmbG93QWN0aXZpdHlGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vV29ya2Zsb3dzL0FkZEFjdGl2aXR5JyxWZXJzaW9uSWRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgbWItOFwiICpuZ0Zvcj1cImxldCB3b3JrZmxvd0FjdGl2aXR5IG9mIEFjdGl2aXR5UGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHQtZGFyayByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnMtMiB0ZXh0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3dvcmtmbG93QWN0aXZpdHkudHlwZU5hbWVTdHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtZS0yIFwiIChjbGljayk9XCJzaG93QWRkV0ZWYXJpYWJsZXN0b0FjdGl2aXR5KHdvcmtmbG93QWN0aXZpdHkudmVyc2lvbklEX0dVSUQsd29ya2Zsb3dBY3Rpdml0eS5pRF9HVUlELHdmQWN0aXZpdHlWYXJpYWJsZXNNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ2VhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrZmxvd1ZhcmlhYmxlc1wiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5BZGRcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeSBidG4tc20gYnRuLWljb24gbWUtMlwiIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL1dvcmtmbG93cy9FZGl0QWN0aXZpdHknLHdvcmtmbG93QWN0aXZpdHkuaURfR1VJRF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwid29ya2Zsb3dBY3Rpdml0eS5pc1B1Ymxpc2hlZFwiIGNsYXNzPVwiZmFzIGZhLXBlblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIXdvcmtmbG93QWN0aXZpdHkuaXNQdWJsaXNoZWRcIiBjbGFzcz1cImZhcyBmYS1wZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiBmdy1ib2xkZXIgdGV4dC1kYXJrXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV0ZPdXRjb21lXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy01IG10LTEgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPVwiaG9yaXpvbnRhbG1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3b3JrZmxvd0FjdGl2aXR5LnZhcmlhYmxlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1nZWFyXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLnN5c05hbWV9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHdvcmtmbG93QWN0aXZpdHkub3V0Y29tZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZUVOIH19OiB7e2l0ZW0ubmV4dEFjdHZpdHlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OiBDYXJkIGJvZHktLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEFjdGl2aXR5TGlzdFJlc3VsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZFwiIFtvcHRpb25zXT1cIkFjdGl2aXR5UGFnaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwid29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAjQWN0aXZpdHlQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6IFdpZGdldHMvQXBwbGljYXRpb25zL1VzZXIvUHJvZmlsZTMtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dmQWN0aXZpdHlWYXJpYWJsZXNNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkV29ya2Zsb3dWYXJpYWJsZXNcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZXNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuYWJsZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1hbmRhdG9yeVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmlzaWJsZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWhpZGRlbiBpcyBzeXN0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlmIGlzIHN5c3RtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25bN107ZWxzZSB2YXJpYWJsZU5hbWVEREw7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLXZhcmlhdmxlIG5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvbls4XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taGlkZGVuIHZhcmlhYmxlIGlkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bOV1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tdmFyaWF2bGUgbmFtZSBkZGwtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YXJpYWJsZU5hbWVEREw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvbls4XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlzIGVuYWJsZWQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlzIG1hbmRhdG9yeS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzRdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taXMgdmlzaWJsZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bNV1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0taWYgISBpc1N5c3RlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFvcHRpb25bN11cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVBY3Rpdml0eVdGVmFyaWFibGUob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctMTAwIGJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGROZXdBY3Rpdml0eVdGVmFyaWFibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRm9ybT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
802
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvdGFicy90YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQStCLGdCQUFnQixFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdwVSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFJckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzdGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPMUQsTUFBTSxPQUFPLGFBQWE7SUErRnhCLHVCQUF1QjtJQUd2QixZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzVFLGNBQThCLEVB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O3VCQUFDLGtDQUFrQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFnQkcsaUNBQWlDO3NCQUFuRyxTQUFTO3VCQUFDLG1DQUFtQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF1Q04seUJBQXlCO3NCQUFuRixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIEZvcm1PcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIFBhZ2luZ0FjdGlvbk1vZGUsIEZvcmNlRGlyZWN0aW9uLCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIENoZWNrQm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFdGVmFyaWFibGVNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZWYXJpYWJsZU1vZGVsJztcclxuaW1wb3J0IHsgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1dvcmtmbG93VmFyaWFibGVzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZBY3Rpdml0eU1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZhcmlhYmxlTG9va3VwTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1ZhcmlhYmxlTG9va3VwTW9kZWwnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXRlZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvV0ZWYXJpYWJsZURhdGFUeXBlJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eVZhcmlhYmxlRFRPLCBXRkFjdGl2aXR5VmFyaWFibGVzTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlWYXJpYWJsZXNNb2RlbCc7XHJcbmltcG9ydCB7IFZhcmlhYmxlRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFBhZ2V0aXRsZTogc3RyaW5nID0gXCJcIlxyXG5cclxuICAvL1dGXHJcbiAgLy8gRGV0YWlscyBDb250cm9sc1xyXG4gIERldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dEZXRhaWxzOiBhbnk7XHJcbiAgV29ya2Zsb3dJZDogc3RyaW5nO1xyXG4gIE5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94OiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBEZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3g6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFjdGl2ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgUHVibGlzaGVkOiBUZXh0Qm94T3B0aW9ucztcclxuICBTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBTaG93V29ya2Zsb3dEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVmVyc2lvbklkOiBzdHJpbmdcclxuICAvL3B1Ymxpc2ggV0YgIE1vZGVsIENvbnRyb2xzXHJcbiAgcHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHB1Ymxpc2hDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncHVibGlzaENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyBWZXJzaW9uXHJcbiAgV29ya0Zsb3dWZXJzaW9uQXBpVXJsID0gXCIvYXBpL2FkbWluL1dGVmVyc2lvbi9cIlxyXG4gIFdvcmtmbG93VmVyc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0lkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFdvcmtmbG93VmVyc2lvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgV29ya2Zsb3dJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1dvcmtmbG93VmVyc2lvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdGVmVyc2lvblBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIC8vRW5kIFdvcmtGbG93IHZlcnNpb25cclxuXHJcbiAgLy9TdGFydCBXb3JrZmxvdyBWYXJpYWJsZXNcclxuICAvL1dvcmtmbG93IFZhcmlhYmxlcyBjb250cm9sc1xyXG4gIFdvcmtmbG93VmFyaWFibGVBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dWYXJpYWJsZS9cIlxyXG4gIFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgV29ya2Zsb3dWYXJpYWJsZXNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFdvcmtmbG93VmFyaWFibGVUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgVmVyaXNvbklkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVmVyaXNvbklkVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIERhdGFUeXBlTGlzdCA9IFtdO1xyXG4gIFdvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dWYXJpYWJsZVBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIFdvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkV0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFdGVmFyaWFibGVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlRGF0YVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICAvL1dGIHZhcmlhYmxlIGxvb2t1cHNcclxuICBhZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0FkZExvb2t1cHNUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFkZExhc3RMb29rdXBJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0V0ZWYXJpYWJsZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlU3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFdGVmFyaWFibGVEYXRhVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRXRlZhcmlhYmxlQ29uc3RhbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBXb3JrZmxvd1ZhcmlhYmxlSWQ6IGFueVxyXG4gIC8vV0YgdmFyaWFibGUgbG9va3Vwc1xyXG4gIGVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgc2hvd0VkaXRMb29rdXBzVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlZGl0TGFzdExvb2t1cEluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvL0VuZCBXb3JrZmxvdyBWYXJpYWJsZVxyXG5cclxuICAvL3N0cmF0IFdvcmtmbG93IEFjdGl2aXR5XHJcbiAgLy9Xb3JrZmxvdyBBY3Rpdml0eSBDb250cm9sc1xyXG4gIEFjdGl2aXR5QXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93QWN0aXZpdHkvXCJcclxuICBBY3Rpdml0eVR5cGVMaXN0ID0gW107XHJcbiAgd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBXb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgQWN0aXZpdHlQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQWN0aXZpdHlQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQWN0aXZpdHlQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBY3Rpdml0eVBhZ2luZ1ZpZXdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVzIHRvIGFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBhY3Rpdml0eUlEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlXRlZhcmlhYmxlT3B0aW9uczogYW55W10gPSBbXTtcclxuICBsYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgYWN0aXZpdHlWYXJpYWJsZXNMaXN0ID0gW107XHJcbiAgLy9FbmQgV29ya2Zsb3cgQWN0aXZpdHlcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIFdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlOiBXb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0lkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICB0aGlzLlZlcnNpb25JZCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXREZXRhaWxzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiBmdW5jdGlvbnNcclxuICBnZXREZXRhaWxzKCkge1xyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLldvcmtmbG93U2VydmljZS5nZXREZXRhaWxzKHRoaXMuV29ya2Zsb3dJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5Xb3JrZmxvd0RldGFpbHMgPSByZXN1bHQgYXMgYW55XHJcblxyXG4gICAgICB2YXIgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZS5hcmFiaWM7XHJcbiAgICAgIE5hbWUuRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuUGFnZXRpdGxlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMubmFtZVN0clxyXG5cclxuXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLlBhZ2V0aXRsZVxyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICAgIF07XHJcblxyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveCA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIlxyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTmFtZU11bHRpbGluZ3VhbFRleHRCb3guTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLk5hbWVNdWx0aWxpbmd1YWxUZXh0Qm94LlZhbHVlID0gTmFtZTtcclxuICAgICAgdGhpcy5OYW1lTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuXHJcbiAgICAgIHZhciBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94ID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCJcclxuICAgICAgdGhpcy5EZXNjcmlwdGlvbk11bHRpbGluZ3VhbFRleHRCb3guRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5WYWx1ZSA9IERlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkRlc2NyaXB0aW9uTXVsdGlsaW5ndWFsVGV4dEJveC5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuU3lzTmFtZS5OYW1lID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCJcclxuICAgICAgdGhpcy5TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLlN5c05hbWUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5TeXNOYW1lLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuc3lzTmFtZVxyXG5cclxuICAgICAgdGhpcy5BY3RpdmUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BY3RpdmUuTmFtZSA9IFwiQWN0aXZlXCJcclxuICAgICAgdGhpcy5BY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWN0aXZlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgICB0aGlzLkFjdGl2ZS5Jc0Rpc2FibGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFjdGl2ZS5WYWx1ZSA9IHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzQWN0aXZlXHJcblxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5OYW1lID0gXCJQdWJsaXNoZWRcIlxyXG4gICAgICB0aGlzLlB1Ymxpc2hlZC5MYWJlbEtleSA9IFwiUHVibGlzaGVkXCJcclxuICAgICAgdGhpcy5QdWJsaXNoZWQuVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuUHVibGlzaGVkLlZhbHVlID0gdGhpcy5Xb3JrZmxvd0RldGFpbHMuaXNQdWJsaXNoZWRcclxuXHJcbiAgICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy9EZWxldGUgcHJvdmlkZXJcclxuICBzaG93UHVibGlzaFdGTW9kYWwoaWQ6IHN0cmluZykge1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaChpZCk7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucHVibGlzaFdvcmtGbG93O1xyXG4gICAgdGhpcy5wdWJsaXNoV0ZDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLnB1Ymxpc2hXRkNvbmZpcm1hdGlvbk9wdGlvbnMuQ29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd1wiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5Db25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtGZmxvd0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlB1Ymxpc2hlZFN1Y2Nlc3NmdWxseVwiKTtcclxuICAgIHRoaXMucHVibGlzaFdGQ29uZmlybWF0aW9uT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5wdWJsaXNoV29ya0Zsb3dPblN1Y2Nlc3M7XHJcblxyXG4gICAgdGhpcy5wdWJsaXNoQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wdWJsaXNoQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgcHVibGlzaFdvcmtGbG93ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuV29ya2Zsb3dTZXJ2aWNlLnB1Ymxpc2hXb3JrRmxvdyhpZCk7XHJcbiAgfVxyXG4gIHB1Ymxpc2hXb3JrRmxvd09uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuV29ya2Zsb3dEZXRhaWxzLmlzUHVibGlzaGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vV0YgdmVyc2lvbiBmdW5jdGlvbnNcclxuICBpbml0aWFsaXplVmVyc2lvbigpIHtcclxuICAgIHRoaXMuU2hvd1dvcmtmbG93RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIC8vIFRleHRCb3ggaW50aVxyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93SWRUZXh0Qm94Lk5hbWUgPSBcIldvcmtmbG93SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuV29ya2Zsb3dJZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiV29ya2Zsb3dJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIldmSURcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0lkRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLldvcmtmbG93SWRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLldvcmtGbG93VmVyc2lvbkFwaVVybCArICdHZXRWZXJzaW9uc0xpc3RpbmcnO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZlcnNpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCIsIFwiV29ya2Zsb3dJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMuV29ya2Zsb3dJZEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcbiAgc2V0V29ya2Zsb3dWZXJzaW9uTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWZXJzaW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiB2YXJpYWJsZXMgRnVuY3Rpb25zXHJcbiAgc2V0V29ya2Zsb3dWYXJpYWJsZUxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuICB9XHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBXRiB2YXJpYWJsZXMgcGFnZVxyXG4gIGluaXRpYWxpemVXb3JrZmxvd1ZhcmlhYmxlcygpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5OYW1lID0gXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5OYW1lID0gXCJWZXJpc29uSWRUZXh0Qm94XCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRCb3guVmFsdWUgPSB0aGlzLldvcmtmbG93SWRcclxuXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcIlZlcmlzb25JZFRleHRCb3hcIlxyXG4gICAgdGhpcy5WZXJpc29uSWRUZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwidmVyc2lvbklEXCJcclxuICAgIHRoaXMuVmVyaXNvbklkVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlQXBpVXJsICsgJ0dldFZhcmlhYmxlTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJXb3JrZmxvd1ZhcmlhYmxlc2VhcmNoVGV4dEJveFwiLCBcIlZlcmlzb25JZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLlZlcmlzb25JZFRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgdGhpcy5TaG93V29ya2Zsb3dEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQsRWRpdCBXRiB2YXJpYWJsZSBzaGFyZWQgZnVuY3Rpb25zXHJcbiAgV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSh0eXBlOiBzdHJpbmcsIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkFkZExvb2t1cE5hbWVFTlwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiQWRkTG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiICsgaSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICBpZiAodHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fCB0eXBlID09IFZhcmlhYmxlRGF0YVR5cGUuTXVsdGlTZWxlY3Rpb24pXHJcbiAgICAgICAgdGhpcy5zaG93QWRkTG9va3Vwc1RhYmxlID0gdHJ1ZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuc2hvd0FkZExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBJRFwiICsgaSk7XHJcbiAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChcIkVkaXRMb29rdXBOYW1lRU5cIiArIGkpO1xyXG4gICAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtLnJlbW92ZUNvbnRyb2woXCJFZGl0TG9va3VwTmFtZUFSXCIgKyBpKTtcclxuICAgICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKFwiRWRpdExvb2t1cFZhbHVlXCIgKyBpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVkaXRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ID0gMDtcclxuICAgICAgaWYgKHR5cGUgPT0gVmFyaWFibGVEYXRhVHlwZS5TaW5nbGVTZWxlY3Rpb24gfHwgdHlwZSA9PSBWYXJpYWJsZURhdGFUeXBlLk11bHRpU2VsZWN0aW9uKVxyXG4gICAgICAgIHRoaXMuc2hvd0VkaXRMb29rdXBzVGFibGUgPSB0cnVlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5zaG93RWRpdExvb2t1cHNUYWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBpbml0aWFsaXplV0ZWYXJpYWJsZUxvb2t1cE9wdGlvbnMoaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBsb29rdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IG9iamVjdExvb2t1cE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgYWN0aW9uSW5kaWNhdGU6IHN0cmluZztcclxuICAgIGxldCBpbmRleDogbnVtYmVyO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGFjdGlvbkluZGljYXRlID0gXCJBZGRcIjtcclxuICAgICAgaW5kZXggPSB0aGlzLmFkZExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhY3Rpb25JbmRpY2F0ZSA9IFwiRWRpdFwiO1xyXG4gICAgICBpbmRleCA9IHRoaXMuZWRpdExhc3RMb29rdXBJbmRleDtcclxuICAgIH1cclxuICAgIC8vRm9yIGVkaXQgb25seVxyXG4gICAgbGV0IGxvb2t1cElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBJRC5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cElEXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cElELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVFTiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUVOLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUVOXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVFTi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUVOLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVFTi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVFTi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cE5hbWVBUiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgbG9va3VwTmFtZUFSLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiTG9va3VwTmFtZUFSXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cE5hbWVBUi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgbG9va3VwTmFtZUFSLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIGxvb2t1cE5hbWVBUi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cE5hbWVBUi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgbGV0IGxvb2t1cFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBsb29rdXBWYWx1ZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkxvb2t1cFZhbHVlXCIgKyBpbmRleDtcclxuICAgIGxvb2t1cFZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBsb29rdXBWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBsb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGxvb2t1cFZhbHVlLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG4gICAgaWYgKGlzQWRkKVxyXG4gICAgICBvYmplY3RMb29rdXBPcHRpb25zLnB1c2gobG9va3VwTmFtZUVOLCBsb29rdXBOYW1lQVIsIGxvb2t1cFZhbHVlKTtcclxuICAgIGVsc2VcclxuICAgICAgb2JqZWN0TG9va3VwT3B0aW9ucy5wdXNoKGxvb2t1cElELCBsb29rdXBOYW1lRU4sIGxvb2t1cE5hbWVBUiwgbG9va3VwVmFsdWUpO1xyXG5cclxuICAgIGxvb2t1cE9wdGlvbnMucHVzaChvYmplY3RMb29rdXBPcHRpb25zKTtcclxuXHJcbiAgICBpbmRleCArPSAxO1xyXG4gICAgcmV0dXJuIFtsb29rdXBPcHRpb25zLCBpbmRleF07XHJcblxyXG4gIH1cclxuICBkZWxldGVXRlZhcmlhYmxlTG9va3VwKGRlbGV0ZWRMb29rdXA6IGFueSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpc0FkZCkge1xyXG4gICAgICBsZXQgZGVsZXRlZExvb2t1cEluZGV4OiBudW1iZXIgPSB0aGlzLmFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRMb29rdXApO1xyXG4gICAgICBpZiAoZGVsZXRlZExvb2t1cEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuYWRkV0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRMb29rdXBbaV0uTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGRlbGV0ZWRMb29rdXBJbmRleDogbnVtYmVyID0gdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLmluZGV4T2YoZGVsZXRlZExvb2t1cCk7XHJcbiAgICAgIGlmIChkZWxldGVkTG9va3VwSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLnNwbGljZShkZWxldGVkTG9va3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZExvb2t1cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkTG9va3VwW2ldLk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BZGQgV0YgdmFyaWFibGVcclxuICBzaG93QWRkV29ya2Zsb3dWYXJpYWJsZU1vZGFsKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5EYXRhVHlwZUxpc3QgPSByZXN1bHRPYmouZGF0YVR5cGVMaXN0O1xyXG5cclxuICAgICAgdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5hZGRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNob3dBZGRMb29rdXBzVGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGVmFyaWFibGVNb2RlbDtcclxuICAgICAgdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRlZhcmlhYmxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1ZpZXdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZU5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlTmFtZS5NYXhMZW5ndGggPSAyNTVcclxuXHJcblxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVTeXNOYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlU3lzTmFtZS5NYXhMZW5ndGggPSAxMDBcclxuXHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVEYXRhVHlwZS5OYW1lID0gXCJEYXRhVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuTGFiZWxLZXkgPSBcIkRhdGFUeXBlXCJcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuRGF0YVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZURhdGFUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlRGF0YVR5cGUuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgdGhpcy5BZGRXRlZhcmlhYmxlQ29uc3RhbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkV0ZWYXJpYWJsZUNvbnN0YW50Lk5hbWUgPSBcIklzQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5MYWJlbEtleSA9IFwiQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkFkZFdGVmFyaWFibGVDb25zdGFudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbFxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFdvcmtmbG93VmFyaWFibGVNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZFdGVmFyaWFibGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybS52YWx1ZTtcclxuICAgIGxldCBhZGRNb2RlbCA9IG5ldyBXRlZhcmlhYmxlTW9kZWwoKTtcclxuICAgIGFkZE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lXHJcbiAgICBhZGRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZVxyXG4gICAgYWRkTW9kZWwuV29ya2Zsb3dWZXJzaW9uSURfR1VJRCA9IHRoaXMuVmVyc2lvbklkXHJcbiAgICBhZGRNb2RlbC5EYXRhVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuRGF0YVR5cGVJdGVtSURfR1VJRFxyXG4gICAgYWRkTW9kZWwuSXNDb25zdGFudCA9IFJlc3VsdE1vZGVsLklzQ29uc3RhbnRcclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuYWRkTGFzdExvb2t1cEluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IGFkZExvb2t1cE5hbWVFTiA9IFJlc3VsdE1vZGVsW1wiQWRkTG9va3VwTmFtZUVOXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZExvb2t1cE5hbWVFTiA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgYWRkTG9va3VwTmFtZUFSID0gUmVzdWx0TW9kZWxbXCJBZGRMb29rdXBOYW1lQVJcIiArIGpdO1xyXG4gICAgICBsZXQgYWRkTG9va3VwVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkFkZExvb2t1cFZhbHVlXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXA6IFZhcmlhYmxlTG9va3VwTW9kZWwgPSBuZXcgVmFyaWFibGVMb29rdXBNb2RlbCgpO1xyXG4gICAgICBsb29rdXAuTmFtZUVOID0gYWRkTG9va3VwTmFtZUVOO1xyXG4gICAgICBsb29rdXAuTmFtZUFSID0gYWRkTG9va3VwTmFtZUFSO1xyXG4gICAgICBsb29rdXAuVmFsdWUgPSBhZGRMb29rdXBWYWx1ZTtcclxuICAgICAgYWRkTW9kZWwudmFyaWFibGVMb29rdXBEVE9zLnB1c2gobG9va3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEFkZFdGVmFyaWFibGVGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc1NlcnZpY2UuYWRkVmFyaWFibGUoQWRkTW9kZWwpXHJcbiAgfVxyXG4gIGFkZFdGVmFyaWFibGVMb29rdXBpbkFkZE1vZGUoKSB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB0aGlzLmluaXRpYWxpemVXRlZhcmlhYmxlTG9va3VwT3B0aW9ucyh0cnVlKTtcclxuICAgIHRoaXMuYWRkV0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zID0gdGhpcy5hZGRXRlZhcmlhYmxlc0xvb2t1cE9wdGlvbnMuY29uY2F0KHJlc3VsdFswXSk7XHJcbiAgICB0aGlzLmFkZExhc3RMb29rdXBJbmRleCA9IHJlc3VsdFsxXTtcclxuICB9XHJcblxyXG4gIC8vRWRpdCBXRiB2YXJpYWJsZVxyXG4gIHNob3dFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKFdGVmFyaWFibGVJRDogc3RyaW5nLCBFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlSWQgPSBXRlZhcmlhYmxlSUQ7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzU2VydmljZS5nZXRFZGl0V29ya0Zsb3dWYXJpYWJsZURhdGEoV0ZWYXJpYWJsZUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IHdvcmtmbG93VmFyaWFibGUgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRCA9IHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLkRhdGFUeXBlTGlzdCA9IGxpc3RzLmRhdGFUeXBlTGlzdDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmVkaXRMYXN0TG9va3VwSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnNob3dFZGl0TG9va3Vwc1RhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cclxuICAgICAgdGhpcy5FZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRXRlZhcmlhYmxlTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRXRlZhcmlhYmxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLldvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkFyYWJpYyA9IHdvcmtmbG93VmFyaWFibGUubmFtZS5hcmFiaWM7XHJcbiAgICAgIG5hbWUuRW5nbGlzaCA9IHdvcmtmbG93VmFyaWFibGUubmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZVN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5MYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVTeXNOYW1lLlZhbHVlID0gd29ya2Zsb3dWYXJpYWJsZS5zeXNOYW1lO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlU3lzTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlRGF0YVR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5OYW1lID0gXCJEYXRhVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLkxhYmVsS2V5ID0gXCJEYXRhVHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5EYXRhU291cmNlID0gdGhpcy5EYXRhVHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVEYXRhVHlwZS5TZWxlY3RlZEl0ZW1zID0gd29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZUNvbnN0YW50ID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQuTmFtZSA9IFwiSXNDb25zdGFudFwiXHJcbiAgICAgIHRoaXMuRWRpdFdGVmFyaWFibGVDb25zdGFudC5MYWJlbEtleSA9IFwiQ29uc3RhbnRcIlxyXG4gICAgICB0aGlzLkVkaXRXRlZhcmlhYmxlQ29uc3RhbnQuVmFsdWUgPSB3b3JrZmxvd1ZhcmlhYmxlLmlzQ29uc3RhbnRcclxuICAgICAgdGhpcy5FZGl0V0ZWYXJpYWJsZUNvbnN0YW50LlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsXHJcblxyXG5cclxuICAgICAgaWYgKHdvcmtmbG93VmFyaWFibGUuZGF0YVR5cGVJdGVtSURfR1VJRCA9PSBWYXJpYWJsZURhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fCB3b3JrZmxvd1ZhcmlhYmxlLmRhdGFUeXBlSXRlbUlEX0dVSUQgPT0gVmFyaWFibGVEYXRhVHlwZS5NdWx0aVNlbGVjdGlvbikge1xyXG4gICAgICAgIC8vU2V0IExvb2t1cCBDb250cm9sc1xyXG4gICAgICAgIHRoaXMuc2V0RWRpdFZhcmlhYmxlTG9va3Vwcyh3b3JrZmxvd1ZhcmlhYmxlLnZhcmlhYmxlTG9va3VwRFRPcyk7XHJcbiAgICAgICAgdGhpcy5zaG93RWRpdExvb2t1cHNUYWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0V29ya2Zsb3dWYXJpYWJsZU1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRFZGl0V0ZWYXJpYWJsZU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgV0ZWYXJpYWJsZU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuV29ya2Zsb3dWYXJpYWJsZUlkO1xyXG4gICAgRWRpdE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lXHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWVcclxuICAgIEVkaXRNb2RlbC5Xb3JrZmxvd1ZlcnNpb25JRF9HVUlEID0gdGhpcy5WZXJzaW9uSWQ7XHJcbiAgICBFZGl0TW9kZWwuRGF0YVR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLkRhdGFUeXBlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5Jc0NvbnN0YW50ID0gUmVzdWx0TW9kZWwuSXNDb25zdGFudFxyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRMb29rdXBJRCA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cElEXCIgKyBqXTtcclxuICAgICAgaWYgKGVkaXRMb29rdXBJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgZWRpdExvb2t1cE5hbWVFTiA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cE5hbWVFTlwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TG9va3VwTmFtZUFSID0gUmVzdWx0TW9kZWxbXCJFZGl0TG9va3VwTmFtZUFSXCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRMb29rdXBWYWx1ZSA9IFJlc3VsdE1vZGVsW1wiRWRpdExvb2t1cFZhbHVlXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXA6IFZhcmlhYmxlTG9va3VwTW9kZWwgPSBuZXcgVmFyaWFibGVMb29rdXBNb2RlbCgpO1xyXG4gICAgICBsb29rdXAuSURfR1VJRCA9IGVkaXRMb29rdXBJRDtcclxuICAgICAgbG9va3VwLk5hbWVFTiA9IGVkaXRMb29rdXBOYW1lRU47XHJcbiAgICAgIGxvb2t1cC5OYW1lQVIgPSBlZGl0TG9va3VwTmFtZUFSO1xyXG4gICAgICBsb29rdXAuVmFsdWUgPSBlZGl0TG9va3VwVmFsdWU7XHJcbiAgICAgIEVkaXRNb2RlbC52YXJpYWJsZUxvb2t1cERUT3MucHVzaChsb29rdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEVkaXRXRlZhcmlhYmxlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLldvcmtmbG93VmFyaWFibGVzU2VydmljZS5lZGl0VmFyaWFibGUoRWRpdE1vZGVsKVxyXG4gIH1cclxuICBzZXRFZGl0VmFyaWFibGVMb29rdXBzKGV4aXN0aW5nTG9va3VwczogYW55W10pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhpc3RpbmdMb29rdXBzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICBsZXQgb2JqZWN0QXR0cmlidXRlT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBsb29rdXBJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBsb29rdXBJRC5OYW1lID0gXCJFZGl0TG9va3VwSURcIiArIGk7XHJcbiAgICAgIGxvb2t1cElELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cElELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgbG9va3VwSUQuVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0uaURfR1VJRDtcclxuXHJcbiAgICAgIGxldCBsb29rdXBOYW1lRU4gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgbG9va3VwTmFtZUVOLk5hbWUgPSBcIkVkaXRMb29rdXBOYW1lRU5cIiArIGk7XHJcbiAgICAgIGxvb2t1cE5hbWVFTi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBsb29rdXBOYW1lRU4uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBsb29rdXBOYW1lRU4uVmFsdWUgPSBleGlzdGluZ0xvb2t1cHNbaV0ubmFtZUVOO1xyXG4gICAgICBsb29rdXBOYW1lRU4uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cE5hbWVFTi5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG5cclxuICAgICAgbGV0IGxvb2t1cE5hbWVBUiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBsb29rdXBOYW1lQVIuTmFtZSA9IFwiRWRpdExvb2t1cE5hbWVBUlwiICsgaTtcclxuICAgICAgbG9va3VwTmFtZUFSLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5WYWx1ZSA9IGV4aXN0aW5nTG9va3Vwc1tpXS5uYW1lQVI7XHJcbiAgICAgIGxvb2t1cE5hbWVBUi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgbG9va3VwTmFtZUFSLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uQXJhYmljO1xyXG4gICAgICBsb29rdXBOYW1lQVIuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgbGV0IGxvb2t1cFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIGxvb2t1cFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBWYWx1ZVwiICsgaTtcclxuICAgICAgbG9va3VwVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgbG9va3VwVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBsb29rdXBWYWx1ZS5WYWx1ZSA9IGV4aXN0aW5nTG9va3Vwc1tpXS52YWx1ZTtcclxuICAgICAgbG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIGxvb2t1cFZhbHVlLk1heExlbmd0aCA9IDIwMDA7XHJcblxyXG4gICAgICBvYmplY3RBdHRyaWJ1dGVPcHRpb25zLnB1c2gobG9va3VwSUQsIGxvb2t1cE5hbWVFTiwgbG9va3VwTmFtZUFSLCBsb29rdXBWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucy5wdXNoKG9iamVjdEF0dHJpYnV0ZU9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmVkaXRMYXN0TG9va3VwSW5kZXggKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFdGVmFyaWFibGVMb29rdXBpbkVkaXRNb2RlKCkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0gdGhpcy5pbml0aWFsaXplV0ZWYXJpYWJsZUxvb2t1cE9wdGlvbnMoZmFsc2UpO1xyXG4gICAgdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zID0gdGhpcy5lZGl0V0ZWYXJpYWJsZXNMb29rdXBPcHRpb25zLmNvbmNhdChyZXN1bHRbMF0pO1xyXG4gICAgdGhpcy5lZGl0TGFzdExvb2t1cEluZGV4ID0gcmVzdWx0WzFdO1xyXG4gIH1cclxuXHJcbiAgLy9XRiBBY3Rpdml0aXRpZXMgRnVuY3Rpb25zXHJcbiAgc2V0QWN0aXZpdHlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5BY3Rpdml0eVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVdvcmtmbG93QWN0aXZpdHkoKSB7XHJcbiAgICAvLyB0aGlzLklzd29ya2Zsb3dBY3Rpdml0eUZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3guTmFtZSA9IFwiV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94LlZhbHVlID0gdGhpcy5Xb3JrZmxvd0lkXHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJXb3JrZmxvd0FjdGl2aXR5SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIldmSURcIlxyXG4gICAgdGhpcy5Xb3JrZmxvd0FjdGl2aXR5SWRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuV29ya2Zsb3dBY3Rpdml0eUlkRmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkFjdGl2aXR5UGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQWN0aXZpdHlBcGlVcmwgKyAnR2V0V29ya2Zsb3dBY3Rpdml0eUxpc3RpbmcnO1xyXG4gICAgdGhpcy5BY3Rpdml0eVBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcIldvcmtmbG93QWN0aXZpdHlJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuRmlsdGVycyA9IFt0aGlzLldvcmtmbG93QWN0aXZpdHlJZEZpbHRlcl1cclxuICAgIHRoaXMuQWN0aXZpdHlQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgIHRoaXMuU2hvd1dvcmtmbG93RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLklzV29ya2Zsb3dWYXJpYWJsZUZpbHRlckxvYWRlZCA9IGZhbHNlXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuSXN3b3JrZmxvd0FjdGl2aXR5RmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICAgIH0sIDEwKTtcclxuXHJcbiAgICAvL3RoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuTG9hZGRyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgbGV0IEFjdGl2aXR5TGlzdCA9IHJlc3VsdCBhcyBhbnlcclxuICAgIC8vICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSBBY3Rpdml0eUxpc3RcclxuXHJcblxyXG4gICAgLy99KVxyXG4gIH1cclxuXHJcbiAgLy9BZGQgQWN0aXZpdHkgV0YgdmFyaWFibGVzXHJcbiAgc2hvd0FkZFdGVmFyaWFibGVzdG9BY3Rpdml0eSh2ZXJzaW9uSUQ6IHN0cmluZywgYWN0aXZpdHlJRDogc3RyaW5nLCB3ZlZhcmlhYmxlc01vZGFsOiBhbnkpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLmFjdGl2aXR5SUQgPSBhY3Rpdml0eUlEO1xyXG4gICAgdGhpcy5hY3Rpdml0eVdGVmFyaWFibGVPcHRpb25zID0gW107XHJcbiAgICB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleCA9IDA7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5V0ZWYXJpYWJsZXModmVyc2lvbklELCBhY3Rpdml0eUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdCA9IHJlc3VsdE9iai5hY3Rpdml0eVZhcmlhYmxlc0xpc3Q7XHJcblxyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cclxuICAgICAgdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldGFkZFdGVmFyaWFibGV0b0FjdGl2aXR5TW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldGFkZFdGVmFyaWFibGV0b0FjdGl2aXR5RnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLkFjdGl2aXR5UGFnaW5nVmlld0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsLmFjdGl2aXR5VmFyaWFibGVEVE9zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRWYXJpYWJsZSA9IG1vZGVsLmFjdGl2aXR5VmFyaWFibGVEVE9zW2ldO1xyXG4gICAgICAgIGxldCBvYmplY3RWYXJpYWJsZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGxldCBpc1N5c3RlbTogYm9vbGVhbiA9IGN1cnJlbnRWYXJpYWJsZS5pc1N5c3RlbTtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNTeXN0ZW0gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTsvL2hpZGRlblxyXG4gICAgICAgIHZhcmlhYmxlSXNTeXN0ZW0uTmFtZSA9IFwidmFyaWFibGVJc1N5c3RlbVwiICsgaTtcclxuICAgICAgICB2YXJpYWJsZUlzU3lzdGVtLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgdmFyaWFibGVJc1N5c3RlbS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdmFyaWFibGVJc1N5c3RlbS5WYWx1ZSA9IGlzU3lzdGVtO1xyXG5cclxuICAgICAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQuTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRcIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQuVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNFbmFibGVkO1xyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkLklzRGlzYWJsZWQgPSBpc1N5c3RlbTtcclxuXHJcbiAgICAgICAgLy9oaWRkZW4gZmllbGRcclxuICAgICAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRIaWRkZW5cIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4uVmFsdWUgPSBjdXJyZW50VmFyaWFibGUuaXNFbmFibGVkO1xyXG5cclxuICAgICAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5Lk5hbWUgPSBcInZhcmlhYmxlSXNNYW5kYXRvcnlcIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeS5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc01hbmRhdG9yeTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5LklzRGlzYWJsZWQgPSBpc1N5c3RlbTtcclxuXHJcbiAgICAgICAgLy9oaWRkZW4gZmllbGRcclxuICAgICAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW5cIiArIGk7XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbi5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS5pc01hbmRhdG9yeTtcclxuXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLk5hbWUgPSBcInZhcmlhYmxlSXNWaXNpYmxlXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzVmlzaWJsZTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZS5Jc0Rpc2FibGVkID0gaXNTeXN0ZW07XHJcblxyXG4gICAgICAgIC8vaGlkZGVuIGZpZWxkXHJcbiAgICAgICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLk5hbWUgPSBcInZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuXCIgKyBpO1xyXG4gICAgICAgIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlzVmlzaWJsZTtcclxuXHJcbiAgICAgICAgb2JqZWN0VmFyaWFibGVPcHRpb25zLnB1c2godmFyaWFibGVJc1N5c3RlbSwgdmFyaWFibGVJc0VuYWJsZWQsIHZhcmlhYmxlSXNFbmFibGVkSGlkZGVuLCB2YXJpYWJsZUlzTWFuZGF0b3J5LCB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLFxyXG4gICAgICAgICAgdmFyaWFibGVJc1Zpc2libGUsIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLCBpc1N5c3RlbSk7XHJcblxyXG4gICAgICAgIGlmIChpc1N5c3RlbSkge1xyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLk5hbWUgPSBcInZhcmlhYmxlTmFtZVwiICsgaTtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLklzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHZhcmlhYmxlTmFtZS5WYWx1ZSA9IGN1cnJlbnRWYXJpYWJsZS52YXJpYWJsZU5hbWU7XHJcblxyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTsvL2hpZGRlblxyXG4gICAgICAgICAgdmFyaWFibGVJRC5OYW1lID0gXCJ2YXJpYWJsZUlEXCIgKyBpO1xyXG4gICAgICAgICAgdmFyaWFibGVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB2YXJpYWJsZUlELlZhbHVlID0gY3VycmVudFZhcmlhYmxlLmlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgb2JqZWN0VmFyaWFibGVPcHRpb25zLnB1c2godmFyaWFibGVOYW1lLCB2YXJpYWJsZUlEKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhcmlhYmxlSURkcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5OYW1lID0gXCJ2YXJpYWJsZUlEZHJvcGRvd25cIjtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB2YXJpYWJsZUlEZHJvcGRvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyaWFibGVJRGRyb3Bkb3duLkRhdGFTb3VyY2UgPSB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdDtcclxuICAgICAgICAgIHZhcmlhYmxlSURkcm9wZG93bi5TZWxlY3RlZEl0ZW1zID0gY3VycmVudFZhcmlhYmxlLmlER1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICBvYmplY3RWYXJpYWJsZU9wdGlvbnMucHVzaCh2YXJpYWJsZUlEZHJvcGRvd24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMucHVzaChvYmplY3RWYXJpYWJsZU9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMubGFzdEFjdGl2aXR5V0ZWYXJpYWJsZUluZGV4ICs9IDE7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4od2ZWYXJpYWJsZXNNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0YWRkV0ZWYXJpYWJsZXRvQWN0aXZpdHlNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgbW9kZWwgPSBuZXcgV0ZBY3Rpdml0eVZhcmlhYmxlc01vZGVsKCk7XHJcbiAgICBtb2RlbC5BY3Rpdml0eUlEX0dVSUQgPSB0aGlzLmFjdGl2aXR5SUQ7XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGFzdEFjdGl2aXR5V0ZWYXJpYWJsZUluZGV4OyBqKyspIHtcclxuICAgICAgbGV0IHZhcmlhYmxlc0lzU3lzdGVtID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzU3lzdGVtXCIgKyBqXTtcclxuICAgICAgaWYgKHZhcmlhYmxlc0lzU3lzdGVtID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCB2YXJpYWJsZUlzRW5hYmxlZDogYm9vbGVhbjtcclxuICAgICAgbGV0IHZhcmlhYmxlSXNNYW5kYXRvcnk6IGJvb2xlYW47XHJcbiAgICAgIGxldCB2YXJpYWJsZUlzVmlzaWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAgIGxldCBhY3Rpdml0eVZhcmlhYmxlOiBXRkFjdGl2aXR5VmFyaWFibGVEVE8gPSBuZXcgV0ZBY3Rpdml0eVZhcmlhYmxlRFRPKCk7XHJcblxyXG4gICAgICBpZiAodmFyaWFibGVzSXNTeXN0ZW0pIHtcclxuICAgICAgICBsZXQgdmFyaWFibGVJRCA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJRFwiICsgal07XHJcbiAgICAgICAgYWN0aXZpdHlWYXJpYWJsZS5JRF9HVUlEID0gdmFyaWFibGVJRDtcclxuXHJcbiAgICAgICAgdmFyaWFibGVJc0VuYWJsZWQgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNFbmFibGVkSGlkZGVuXCIgKyBqXTtcclxuICAgICAgICB2YXJpYWJsZUlzTWFuZGF0b3J5ID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuXCIgKyBqXTtcclxuICAgICAgICB2YXJpYWJsZUlzVmlzaWJsZSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc1Zpc2libGVIaWRkZW5cIiArIGpdO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCB2YXJpYWJsZUlEID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlEZHJvcGRvd25cIiArIGpdO1xyXG4gICAgICAgIGFjdGl2aXR5VmFyaWFibGUuSURfR1VJRCA9IHZhcmlhYmxlSUQ7XHJcblxyXG4gICAgICAgIHZhcmlhYmxlSXNFbmFibGVkID0gUmVzdWx0TW9kZWxbXCJ2YXJpYWJsZUlzRW5hYmxlZFwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc01hbmRhdG9yeSA9IFJlc3VsdE1vZGVsW1widmFyaWFibGVJc01hbmRhdG9yeVwiICsgal07XHJcbiAgICAgICAgdmFyaWFibGVJc1Zpc2libGUgPSBSZXN1bHRNb2RlbFtcInZhcmlhYmxlSXNWaXNpYmxlXCIgKyBqXTtcclxuICAgICAgfVxyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzU3lzdGVtID0gdmFyaWFibGVzSXNTeXN0ZW07XHJcbiAgICAgIGFjdGl2aXR5VmFyaWFibGUuSXNFbmFibGVkID0gdmFyaWFibGVJc0VuYWJsZWQ7XHJcbiAgICAgIGFjdGl2aXR5VmFyaWFibGUuSXNNYW5kYXRvcnkgPSB2YXJpYWJsZUlzTWFuZGF0b3J5O1xyXG4gICAgICBhY3Rpdml0eVZhcmlhYmxlLklzVmlzaWJsZSA9IHZhcmlhYmxlSXNWaXNpYmxlO1xyXG4gICAgICBtb2RlbC5hY3Rpdml0eVZhcmlhYmxlRFRPcy5wdXNoKGFjdGl2aXR5VmFyaWFibGUpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKG1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRhZGRXRlZhcmlhYmxldG9BY3Rpdml0eUZ1bmN0aW9uID0gKHZhcmlhYmxlc01vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmFkZEFjdGl2aXR5V0ZWYXJpYWJsZXModmFyaWFibGVzTW9kZWwpXHJcbiAgfVxyXG4gIGRlbGV0ZUFjdGl2aXR5V0ZWYXJpYWJsZShkZWxldGVkVmFyaWFibGU6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRWYXJpYWJsZUluZGV4OiBudW1iZXIgPSB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMuaW5kZXhPZihkZWxldGVkVmFyaWFibGUpO1xyXG4gICAgaWYgKGRlbGV0ZWRWYXJpYWJsZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMuc3BsaWNlKGRlbGV0ZWRWYXJpYWJsZUluZGV4LCAxKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVkVmFyaWFibGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRWYXJpYWJsZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBhZGROZXdBY3Rpdml0eVdGVmFyaWFibGUoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmxhc3RBY3Rpdml0eVdGVmFyaWFibGVJbmRleDtcclxuXHJcbiAgICBsZXQgb2JqZWN0VmFyaWFibGVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlEZHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlEZHJvcGRvd24uTmFtZSA9IFwidmFyaWFibGVJRGRyb3Bkb3duXCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSURkcm9wZG93bi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB2YXJpYWJsZUlEZHJvcGRvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJRGRyb3Bkb3duLkRhdGFTb3VyY2UgPSB0aGlzLmFjdGl2aXR5VmFyaWFibGVzTGlzdDtcclxuXHJcbiAgICBsZXQgaXNTeXN0ZW06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc1N5c3RlbSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpOy8vaGlkZGVuXHJcbiAgICB2YXJpYWJsZUlzU3lzdGVtLk5hbWUgPSBcInZhcmlhYmxlSXNTeXN0ZW1cIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdmFyaWFibGVJc1N5c3RlbS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB2YXJpYWJsZUlzU3lzdGVtLlZhbHVlID0gaXNTeXN0ZW07XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNFbmFibGVkID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWQuTmFtZSA9IFwidmFyaWFibGVJc0VuYWJsZWRcIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc0VuYWJsZWQuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc0VuYWJsZWRIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzRW5hYmxlZEhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbi5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIGxldCB2YXJpYWJsZUlzTWFuZGF0b3J5ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc01hbmRhdG9yeS5OYW1lID0gXCJ2YXJpYWJsZUlzTWFuZGF0b3J5XCIgKyBpbmRleDtcclxuICAgIHZhcmlhYmxlSXNNYW5kYXRvcnkuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHZhcmlhYmxlSXNNYW5kYXRvcnlIaWRkZW4uTmFtZSA9IFwidmFyaWFibGVJc01hbmRhdG9yeUhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzTWFuZGF0b3J5SGlkZGVuLlZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHZhcmlhYmxlSXNWaXNpYmxlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGUuTmFtZSA9IFwidmFyaWFibGVJc1Zpc2libGVcIiArIGluZGV4O1xyXG4gICAgdmFyaWFibGVJc1Zpc2libGUuVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgdmFyaWFibGVJc1Zpc2libGVIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5OYW1lID0gXCJ2YXJpYWJsZUlzVmlzaWJsZUhpZGRlblwiICsgaW5kZXg7XHJcbiAgICB2YXJpYWJsZUlzVmlzaWJsZUhpZGRlbi5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIG9iamVjdFZhcmlhYmxlT3B0aW9ucy5wdXNoKHZhcmlhYmxlSXNTeXN0ZW0sIHZhcmlhYmxlSXNFbmFibGVkLCB2YXJpYWJsZUlzRW5hYmxlZEhpZGRlbiwgdmFyaWFibGVJc01hbmRhdG9yeSwgdmFyaWFibGVJc01hbmRhdG9yeUhpZGRlbixcclxuICAgICAgdmFyaWFibGVJc1Zpc2libGUsIHZhcmlhYmxlSXNWaXNpYmxlSGlkZGVuLCBpc1N5c3RlbSwgdmFyaWFibGVJRGRyb3Bkb3duKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2aXR5V0ZWYXJpYWJsZU9wdGlvbnMucHVzaChvYmplY3RWYXJpYWJsZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5sYXN0QWN0aXZpdHlXRlZhcmlhYmxlSW5kZXggKz0gMTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiZ2V0RGV0YWlscygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGV0YWlsc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMCAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIlNob3dXb3JrZmxvd0RldGFpbHMmJiFXb3JrZmxvd0RldGFpbHMuaXNQdWJsaXNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYnRuUHVibGlzaFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93UHVibGlzaFdGTW9kYWwoV29ya2Zsb3dEZXRhaWxzLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHVibGlzaFdvcmtmbG93XCIpfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlld1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvYT4tLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJEZXRhaWxzRm9ybVwiICpuZ0lmPVwiU2hvd1dvcmtmbG93RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJOYW1lTXVsdGlsaW5ndWFsVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJEZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRGVzY3JpcHRpb25NdWx0aWxpbmd1YWxUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiUHVibGlzaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJEZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuXHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS1QdWJsaXNoIHdvcmtmbG93IGNvbmZpcm1hdGlvbi0tPlxyXG4gICAgICAgICAgPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJwdWJsaXNoQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cInB1Ymxpc2hXRkNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cInB1Ymxpc2hDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjcHVibGlzaENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiaW5pdGlhbGl6ZVZlcnNpb24oKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZlcnNpb25zXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIldvcmtmbG93VmVyc2lvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIldvcmtmbG93SWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDaGFuZ2VcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3VycmVudFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQdWJsaXNoZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3JlYXRpb25EYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB2ZXJzaW9uIG9mIFdvcmtmbG93VmVyc2lvblBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vV29ya2Zsb3dzL1ZlcnNpb25JbmZvJyx2ZXJzaW9uLmlEX0dVSURdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFya1wiPnt7dmVyc2lvbi5jaGFuZ2VTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dmVyc2lvbi5pc0N1cnJlbnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZlcnNpb24uaXNQdWJsaXNoZWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZlcnNpb24uY3JlYXRpb25EYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIldvcmtmbG93VmVyc2lvblBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VmVyc2lvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIldvcmtmbG93VmVyc2lvblBhZ2luZ1wiIFtncm91cF09XCJXb3JrZmxvd1ZlcnNpb25Gb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjV29ya2Zsb3dWZXJzaW9uUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVXb3JrZmxvd1ZhcmlhYmxlcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZXNcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJJc1dvcmtmbG93VmFyaWFibGVGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIldvcmtmbG93VmFyaWFibGVzZWFyY2hUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlZlcmlzb25JZFRleHRCb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiV29ya2Zsb3dWYXJpYWJsZUZvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FkZFdvcmtmbG93VmFyaWFibGVNb2RhbChBZGRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtcGx1c1wiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3lzTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEYXRhVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYXJpYWJsZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IFdvcmtmbG93VmFyaWFibGUgb2YgV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cInRleHQtZGFya1wiPnt7V29ya2Zsb3dWYXJpYWJsZS5uYW1lU3RyfX08L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7V29ya2Zsb3dWYXJpYWJsZS5zeXNOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7V29ya2Zsb3dWYXJpYWJsZS5kYXRhVHlwZUl0ZW19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e1dvcmtmbG93VmFyaWFibGUudmFyaWFibGVUeXBlSXRlbX19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbChXb3JrZmxvd1ZhcmlhYmxlLmlEX0dVSUQsIEVkaXRXb3JrZmxvd1ZhcmlhYmxlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VmFyaWFibGVMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXNXb3JrZmxvd1ZhcmlhYmxlRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiV29ya2Zsb3dWYXJpYWJsZVBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIldvcmtmbG93VmFyaWFibGVGb3JtXCIgI1dvcmtmbG93VmFyaWFibGVQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6IFdpZGdldHMvQXBwbGljYXRpb25zL1VzZXIvUHJvZmlsZTMtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQWRkIE1vZGFsIC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI0FkZFdvcmtmbG93VmFyaWFibGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZU5hbWVcIiBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZVN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwiV0ZWYXJpYWJsZVR5cGVPbkNoYW5nZSgkZXZlbnQsdHJ1ZSlcIiBbb3B0aW9uc109XCJBZGRXRlZhcmlhYmxlRGF0YVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiQWRkV0ZWYXJpYWJsZUNvbnN0YW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2hvd0FkZExvb2t1cHNUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZUVOXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lQVJcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkFkZFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiQWRkV29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJBZGRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZVdGVmFyaWFibGVMb29rdXAob3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGVmFyaWFibGVMb29rdXBpbkFkZE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICNDbG9zZVdvcmtmbG93VmFyaWFibGVNb2RhbCBpZD1cIkNsb3NlV29ya2Zsb3dWYXJpYWJsZU1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRm9ybT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS1FZGl0IE1vZGFsLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRXRlZhcmlhYmxlTmFtZVwiIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFdGVmFyaWFibGVTeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJXRlZhcmlhYmxlVHlwZU9uQ2hhbmdlKCRldmVudCxmYWxzZSlcIiBbb3B0aW9uc109XCJFZGl0V0ZWYXJpYWJsZURhdGFUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0V0ZWYXJpYWJsZUNvbnN0YW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJFZGl0V29ya2Zsb3dWYXJpYWJsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNob3dFZGl0TG9va3Vwc1RhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lRU5cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVBUlwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZWRpdFdGVmFyaWFibGVzTG9va3VwT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkVkaXRXb3JrZmxvd1ZhcmlhYmxlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiRWRpdFdvcmtmbG93VmFyaWFibGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlV0ZWYXJpYWJsZUxvb2t1cChvcHRpb24sZmFsc2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGVmFyaWFibGVMb29rdXBpbkVkaXRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbCBpZD1cIkNsb3NlRWRpdFdvcmtmbG93VmFyaWFibGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVXb3JrZmxvd0FjdGl2aXR5KClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dBY3Rpdml0aWVzXCIpfX1cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJJc3dvcmtmbG93QWN0aXZpdHlGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZmlsdGVyc0NvbnRhaW5lclwiIGRhdGEtaXNsb2FkZWQ9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiV29ya2Zsb3dBY3Rpdml0eUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIndvcmtmbG93QWN0aXZpdHlGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQWRkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vV29ya2Zsb3dzL0FkZEFjdGl2aXR5JyxWZXJzaW9uSWRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgbWItOFwiICpuZ0Zvcj1cImxldCB3b3JrZmxvd0FjdGl2aXR5IG9mIEFjdGl2aXR5UGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHQtZGFyayByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnMtMiB0ZXh0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3dvcmtmbG93QWN0aXZpdHkudHlwZU5hbWVTdHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtZS0yIFwiIChjbGljayk9XCJzaG93QWRkV0ZWYXJpYWJsZXN0b0FjdGl2aXR5KHdvcmtmbG93QWN0aXZpdHkudmVyc2lvbklEX0dVSUQsd29ya2Zsb3dBY3Rpdml0eS5pRF9HVUlELHdmQWN0aXZpdHlWYXJpYWJsZXNNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ2VhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya2Zsb3dWYXJpYWJsZXNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuQWRkXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLXNtIGJ0bi1pY29uIG1lLTJcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Xb3JrZmxvd3MvRWRpdEFjdGl2aXR5Jyx3b3JrZmxvd0FjdGl2aXR5LmlEX0dVSURdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIndvcmtmbG93QWN0aXZpdHkuaXNQdWJsaXNoZWRcIiBjbGFzcz1cImZhcyBmYS1wZW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF3b3JrZmxvd0FjdGl2aXR5LmlzUHVibGlzaGVkXCIgY2xhc3M9XCJmYXMgZmEtcGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgZnctYm9sZGVyIHRleHQtZGFya1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldGT3V0Y29tZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIGZ3LWJvbGQgZnMtNSBtdC0xIG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrZmxvd1ZhcmlhYmxlc1wiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD1cImhvcml6b250YWxtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd29ya2Zsb3dBY3Rpdml0eS52YXJpYWJsZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ2VhclwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zeXNOYW1lfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3b3JrZmxvd0FjdGl2aXR5Lm91dGNvbWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWVFTiB9fToge3tpdGVtLm5leHRBY3R2aXR5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjogQ2FyZCBib2R5LS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRBY3Rpdml0eUxpc3RSZXN1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJJc3dvcmtmbG93QWN0aXZpdHlGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJBY3Rpdml0eVBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIndvcmtmbG93QWN0aXZpdHlGb3JtXCIgI0FjdGl2aXR5UGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6OiBXaWRnZXRzL0FwcGxpY2F0aW9ucy9Vc2VyL1Byb2ZpbGUzLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN3ZkFjdGl2aXR5VmFyaWFibGVzTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFdvcmtmbG93VmFyaWFibGVzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtmbG93VmFyaWFibGVzXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmFibGVkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNYW5kYXRvcnlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZpc2libGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYWN0aXZpdHlXRlZhcmlhYmxlT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gaXMgc3lzdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pZiBpcyBzeXN0bS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uWzddO2Vsc2UgdmFyaWFibGVOYW1lRERMO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS12YXJpYXZsZSBuYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bOF1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWhpZGRlbiB2YXJpYWJsZSBpZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzldXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLXZhcmlhdmxlIG5hbWUgZGRsLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFyaWFibGVOYW1lRERMPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bOF1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pcyBlbmFibGVkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiYWRkV29ya2Zsb3dWYXJpYWJsZXRvQWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1pcyBtYW5kYXRvcnktLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzNdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlzIHZpc2libGUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzVdXCIgW2dyb3VwXT1cImFkZFdvcmtmbG93VmFyaWFibGV0b0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls2XVwiIFtncm91cF09XCJhZGRXb3JrZmxvd1ZhcmlhYmxldG9BY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlmICEgaXNTeXN0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhb3B0aW9uWzddXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlQWN0aXZpdHlXRlZhcmlhYmxlKG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkTmV3QWN0aXZpdHlXRlZhcmlhYmxlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgICA8ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|