@bnsights/bbsf-admin-portal 1.1.49 → 1.1.50
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 +4 -0
- package/bnsights-bbsf-admin-portal-1.1.50.tgz +0 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +3 -3
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +1 -1
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +16 -9
- package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +3 -3
- package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +15 -22
- package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +1 -1
- package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +1 -1
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +4 -4
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +3 -3
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +167 -99
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +7 -4
- package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +1 -1
- package/esm2022/lib/Pages/departments/department/department.component.mjs +108 -30
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +1 -1
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +1 -1
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +1 -1
- package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +1 -1
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +1 -1
- package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +1 -1
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +96 -15
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +1 -1
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +1 -1
- package/esm2022/lib/Pages/home/home.component.mjs +17 -6
- package/esm2022/lib/Pages/home/home.module.mjs +1 -1
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +1 -1
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +1 -1
- package/esm2022/lib/Pages/license/license/license.component.mjs +1 -1
- package/esm2022/lib/Pages/license/license.module.mjs +1 -1
- package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +1 -1
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +1 -1
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +1 -1
- package/esm2022/lib/Pages/logs/log/log.component.mjs +1 -1
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +1 -1
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +1 -1
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +1 -1
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +85 -58
- package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +1 -1
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +55 -26
- package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +1 -1
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +68 -16
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +2 -2
- package/esm2022/lib/Pages/notifications/notifications.routing.mjs +66 -0
- package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +1 -1
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +105 -58
- package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +107 -0
- package/esm2022/lib/Pages/organization/add-organization/index.mjs +2 -0
- package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +115 -0
- package/esm2022/lib/Pages/organization/edit-organization/index.mjs +2 -0
- package/esm2022/lib/Pages/organization/index.mjs +7 -0
- package/esm2022/lib/Pages/organization/list-organization/index.mjs +2 -0
- package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +181 -0
- package/esm2022/lib/Pages/organization/organization.component.mjs +15 -0
- package/esm2022/lib/Pages/organization/organization.module.mjs +89 -0
- package/esm2022/lib/Pages/organization/organization.routing.mjs +36 -0
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +98 -43
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +1 -1
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +3 -3
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +73 -33
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +166 -105
- package/esm2022/lib/Pages/roles/roles-routing.module.mjs +24 -7
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +83 -16
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +2 -1
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -1
- package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +7 -3
- package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +6 -1
- package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +7 -3
- package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +7 -3
- package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -1
- package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -3
- package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +52 -22
- package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/organization.service.mjs +36 -0
- package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/survey.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/Services/userService.service.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +1 -1
- package/esm2022/lib/Pages/shared/config.service.mjs +17 -0
- package/esm2022/lib/Pages/shared/constants.mjs +2 -1
- package/esm2022/lib/Pages/shared/index.mjs +14 -0
- package/esm2022/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +36 -3
- package/esm2022/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/Lookups/LookupItem.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/Lookups/LookupModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +9 -6
- package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +1 -2
- package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +17 -3
- package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +17 -3
- package/esm2022/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/SectorModels/SectorModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/UserModels/AddUserModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +3 -1
- package/esm2022/lib/Pages/shared/models/UserModels/EditUserModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/UserModels/ExportedFileDTO.mjs +3 -0
- package/esm2022/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.mjs +9 -0
- package/esm2022/lib/Pages/shared/models/UserModels/UserListingViewModel.mjs +8 -0
- package/esm2022/lib/Pages/shared/models/UserModels/UserModelDTO.mjs +41 -0
- package/esm2022/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/UserModels/UsersCountsDTO.mjs +3 -0
- package/esm2022/lib/Pages/shared/models/UserModels/index.mjs +13 -0
- package/esm2022/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +1 -1
- package/esm2022/lib/Pages/shared/models/index.mjs +24 -0
- package/esm2022/lib/Pages/shared/models/organization/organization.model.mjs +15 -0
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +1 -1
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +1 -1
- package/esm2022/lib/Pages/users/users.component.mjs +143 -60
- package/esm2022/lib/Pages/users/users.module.mjs +1 -1
- package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +1 -1
- package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +1 -1
- package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +1 -1
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +1 -1
- package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +1 -1
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +1 -1
- package/esm2022/lib/masterlayout.component.mjs +8 -14
- package/esm2022/lib/masterlayout.module.mjs +2 -25
- package/esm2022/lib/masterlayout.routing.mjs +43 -0
- package/fesm2022/bnsights-bbsf-admin-portal.mjs +2516 -1136
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
- package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +5 -2
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +2 -8
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +21 -8
- package/lib/Pages/core/authentication/admin.guard.d.ts +3 -2
- package/lib/Pages/departments/department/department.component.d.ts +15 -3
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +16 -3
- package/lib/Pages/home/home.component.d.ts +5 -2
- package/lib/Pages/notifications/add-notification/add-notification.component.d.ts +16 -5
- package/lib/Pages/notifications/edit-notification/edit-notification.component.d.ts +15 -4
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +17 -5
- package/lib/Pages/notifications/notifications.module.d.ts +1 -1
- package/lib/Pages/notifications/templates/templates.component.d.ts +13 -3
- package/lib/Pages/organization/add-organization/add-organization.component.d.ts +36 -0
- package/lib/Pages/organization/add-organization/index.d.ts +1 -0
- package/lib/Pages/organization/edit-organization/edit-organization.component.d.ts +36 -0
- package/lib/Pages/organization/edit-organization/index.d.ts +1 -0
- package/lib/Pages/organization/index.d.ts +6 -0
- package/lib/Pages/organization/list-organization/index.d.ts +1 -0
- package/lib/Pages/organization/list-organization/list-organization.component.d.ts +59 -0
- package/lib/Pages/organization/organization.component.d.ts +8 -0
- package/lib/Pages/organization/organization.module.d.ts +24 -0
- package/lib/Pages/organization/organization.routing.d.ts +7 -0
- package/lib/Pages/providers/provider/provider.component.d.ts +17 -8
- package/lib/Pages/roles/permissions/permissions.component.d.ts +14 -5
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +21 -8
- package/lib/Pages/sectors/sector/sector.component.d.ts +12 -1
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +2 -1
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +2 -1
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +2 -0
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +2 -1
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +2 -1
- package/lib/Pages/shared/Services/SectorService.service.d.ts +1 -0
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +1 -1
- package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +2 -0
- package/lib/Pages/shared/Services/organization.service.d.ts +17 -0
- package/lib/Pages/shared/Services/userService.service.d.ts +4 -1
- package/lib/Pages/shared/config.service.d.ts +8 -0
- package/lib/Pages/shared/constants.d.ts +1 -0
- package/lib/Pages/shared/index.d.ts +5 -0
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +32 -28
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -0
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +1 -0
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +8 -6
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +0 -1
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +17 -5
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +20 -8
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -0
- package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +2 -0
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +1 -0
- package/lib/Pages/shared/models/UserModels/ExportedFileDTO.d.ts +4 -0
- package/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.d.ts +7 -0
- package/lib/Pages/shared/models/UserModels/UserListingViewModel.d.ts +10 -0
- package/lib/Pages/shared/models/UserModels/UserModelDTO.d.ts +38 -0
- package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +1 -0
- package/lib/Pages/shared/models/UserModels/UsersCountsDTO.d.ts +5 -0
- package/lib/Pages/shared/models/UserModels/index.d.ts +12 -0
- package/lib/Pages/shared/models/index.d.ts +2 -0
- package/lib/Pages/shared/models/organization/organization.model.d.ts +22 -0
- package/lib/Pages/users/users.component.d.ts +17 -7
- package/lib/masterlayout.component.d.ts +1 -2
- package/lib/masterlayout.module.d.ts +1 -1
- package/package.json +7 -7
- package/src/lib/assets/images/menu/organization.svg +16 -0
- package/src/lib/assets/sass/custom-styles.scss +2 -2
- package/src/lib/assets/sass/style.scss +1 -0
- package/bnsights-bbsf-admin-portal-1.1.49.tgz +0 -0
- package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
- package/esm2022/lib/masterlayout-routing.module.mjs +0 -41
- /package/lib/Pages/notifications/{notifications-routing.module.d.ts → notifications.routing.d.ts} +0 -0
- /package/lib/{masterlayout-routing.module.d.ts → masterlayout.routing.d.ts} +0 -0
|
@@ -299,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
299
299
|
type: Component,
|
|
300
300
|
args: [{ selector: 'lib-instance-info', 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-body py-3 px-0\">\r\n <form [formGroup]=\"detailsForm\" *ngIf=\"showInstanceDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"instanceName\"\r\n [group]=\"detailsForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group\">\r\n <div class=\"label-content\">\r\n <BBSF-TextBox [options]=\"instanceCreator\"\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]=\"instanceStatus\"\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 </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)=\"initializeWFVariables()\">{{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\" *ngIf=\"isWFVariablesFilterLoaded\">\r\n <form [formGroup]=\"workflowVariablesForm\">\r\n <BBSF-TextBox [options]=\"searchVariablesTextBox\" [group]=\"workflowVariablesForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"variablesInstanceIdTextBox\"\r\n [group]=\"workflowVariablesForm\" [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::variables 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(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"DataType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</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 variable of workFlowVariablesPagingResult\">\r\n <td>\r\n <span class=\"text-dark\">{{variable.nameStr}}</span>\r\n </td>\r\n <td>{{variable.dataTypeItem}}</td>\r\n <td>{{variable.value}}</td>\r\n </tr>\r\n <tr *ngIf=\"workFlowVariablesPagingResult.length == 0\">\r\n <td colspan=\"3\">\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::variables list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowVariablesListResult($event)\" *ngIf=\"isWFVariablesFilterLoaded\"\r\n [options]=\"WorkflowVariablesPaging\" [group]=\"workflowVariablesForm\"\r\n #workflowVariablesPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\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)=\"initializeTasks()\">{{utilityService.getResourceValue(\"Tasks\")}}</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=\"isWFTasksFilterLoaded\">\r\n <form [formGroup]=\"tasksForm\">\r\n <BBSF-TextBox [options]=\"searchTasksTextBox\" [group]=\"tasksForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"taskInstanceIdTextBox\"\r\n [group]=\"tasksForm\" [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::variables 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(\"ActivityName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IsCompleted\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"AssignedTo\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CompletedBy\")}}</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 task of tasksPagingResult\">\r\n <td>\r\n <span class=\"text-dark\">{{task.activity}}</span>\r\n </td>\r\n <td>\r\n <span *ngIf=\"task.IsCompleted; else notCompleted\">{{utilityService.getResourceValue(\"Yes\")}}</span>\r\n <ng-template #notCompleted>\r\n <span>{{utilityService.getResourceValue(\"No\")}}</span>\r\n </ng-template>\r\n </td>\r\n <td>{{task.creationDate}}</td>\r\n <td>{{task.taskCorrelationType}}</td>\r\n <td>{{task.assignedTo}}</td>\r\n <td>{{task.completedBy}}</td>\r\n\r\n </tr>\r\n <tr *ngIf=\"tasksPagingResult.length == 0\">\r\n <td colspan=\"6\">\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::variables list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowTasksListResult($event)\" *ngIf=\"isWFTasksFilterLoaded\"\r\n [options]=\"WorkflowTasksPaging\" [group]=\"tasksForm\"\r\n #workflowTasksPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\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)=\"initializeErrors()\">{{utilityService.getResourceValue(\"Errors\")}}</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=\"isWFErrorsFilterLoaded\">\r\n <form [formGroup]=\"errorsForm\">\r\n <BBSF-TextBox [options]=\"searchErrorsTextBox\" [group]=\"errorsForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"errorInstanceIdTextBox\"\r\n [group]=\"errorsForm\" [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::variables 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(\"ActivityName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"InstanceName\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ErrorMsg\")}}</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 error of errorsPagingResult\">\r\n <td>\r\n <span class=\"text-dark\">{{error.activityName}}</span>\r\n </td>\r\n <td>{{error.instanceName}}</td>\r\n <td>{{error.error}}</td>\r\n\r\n </tr>\r\n <tr *ngIf=\"errorsPagingResult.length == 0\">\r\n <td colspan=\"3\">\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::variables list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowErrorsListResult($event)\" *ngIf=\"isWFErrorsFilterLoaded\"\r\n [options]=\"WorkflowErrorsPaging\" [group]=\"errorsForm\"\r\n #workflowErrorsPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\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)=\"initializeLogs()\">{{utilityService.getResourceValue(\"Logs\")}}</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=\"isWFLogsFilterLoaded\">\r\n <form [formGroup]=\"logsForm\">\r\n <BBSF-TextBox [options]=\"searchLogsTextBox\" [group]=\"logsForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"logInstanceIdTextBox\"\r\n [group]=\"logsForm\" [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::variables 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(\"Activity\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Descision\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CompletedBy\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"CreationDate\")}}</th>\r\n <th class=\"min-w-150px\"></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 log of logsPagingResult\">\r\n <td>\r\n <span class=\"text-dark\">{{log.activityName}}</span>\r\n </td>\r\n <td>{{log.outcomeName}}</td>\r\n <td>{{log.completedBy}}</td>\r\n <td>{{log.created}}</td>\r\n <td>{{log.created}}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showLogVariables(log.idEncrypted, LogVariablesModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"LogVariables\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"logsPagingResult.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::variables list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setWorkflowLogsListResult($event)\" *ngIf=\"isWFLogsFilterLoaded\"\r\n [options]=\"WorkflowLogsPaging\" [group]=\"logsForm\"\r\n #workflowLogsPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Log variables Modal-->\r\n <ng-template #LogVariablesModal 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\">{{utilityService.getResourceValue(\"LogVariables\")}}</h1>\r\n </div>\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(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"VariableType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</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 logVar of logVariablesPagingResult\">\r\n <td>\r\n <span class=\"text-dark\">{{logVar.variableName}}</span>\r\n </td>\r\n <td>{{logVar.variableType}}</td>\r\n <td>{{logVar.variableValue}}</td>\r\n </tr>\r\n <tr *ngIf=\"logVariablesPagingResult.length == 0\">\r\n <td colspan=\"3\">\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 <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\r\n {{utilityService.getResourceValue(\"Close\")}}\r\n </button>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
301
301
|
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.WorkflowInstanceService }, { type: i3.ActivatedRoute }, { type: i4.PageInfoService }, { type: i1.BBSFTranslateService }, { type: i1.UtilityService }, { type: i5.WorkflowLogVariablesService }, { type: i6.NgbModal }, { type: i1.RequestHandlerService }] });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9pbnN0YW5jZS1pbmZvL2luc3RhbmNlLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvaW5zdGFuY2UtaW5mby9pbnN0YW5jZS1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHFCQUFxQjtJQTZEaEMscUJBQXFCO0lBRXJCLFlBQW9CLFdBQXdCLEVBQVUsdUJBQWdELEVBQzVGLGNBQThCLEVBQVUsZUFBZ0MsRUFBVSxvQkFBMEMsRUFDN0gsY0FBOEIsRUFBVSxxQkFBa0QsRUFDekYsWUFBc0IsRUFBVSxxQkFBNEM7UUFIbEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQzVGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDN0gsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE2QjtRQUN6RixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFqRXRGLG1CQUFtQjtRQUNuQixnQkFBVyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWhDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUVyQywwQkFBMEI7UUFDMUIsNEJBQXVCLEdBQUcsc0NBQXNDLENBQUE7UUFDaEUsMEJBQXFCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFLMUMsa0NBQTZCLEdBQVUsRUFBRSxDQUFDO1FBRTFDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUMzQyx3QkFBd0I7UUFFeEIsc0JBQXNCO1FBQ3RCLHdCQUFtQixHQUFHLGtDQUFrQyxDQUFBO1FBQ3hELGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUs5QixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFFOUIsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLG9CQUFvQjtRQUVwQix1QkFBdUI7UUFDdkIseUJBQW9CLEdBQUcsbUNBQW1DLENBQUE7UUFDMUQsZUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBSy9CLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUUvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMscUJBQXFCO1FBRXJCLHFCQUFxQjtRQUNyQix1QkFBa0IsR0FBRyx5QkFBeUIsQ0FBQTtRQUM5QyxhQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFLN0IscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBRTdCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0QyxxQkFBcUI7UUFFckIsOEJBQThCO1FBQzlCLDZCQUF3QixHQUFVLEVBQUUsQ0FBQztRQVFuQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLFVBQVU7UUFDUixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUE7UUFFdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDNUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFhLENBQUE7WUFFcEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBRWpELGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDekQsZUFBZSxDQUFDLGVBQWUsR0FBRztnQkFDaEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDakgsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ3BJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDeEwsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUM5SixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7YUFDNUQsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUE7WUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFBO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7WUFFbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFBO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQTtZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1lBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQTtZQUUzRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFBO1lBRS9ELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUE7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFHbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNsQyxlQUFlO1FBRWYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksR0FBRyx3QkFBd0IsQ0FBQTtRQUMzRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzlGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBRzVDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUE7UUFDeEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQTtRQUNoRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUNsRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFHN0QsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksR0FBRyw0QkFBNEIsQ0FBQTtRQUNuRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUNoRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDckQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO1FBRXZELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEdBQUcsNEJBQTRCLENBQUE7UUFDNUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQTtRQUNoRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUNsRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFFN0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsNkJBQTZCLENBQUM7UUFDMUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDZCQUE2QixHQUFHLENBQUMsd0JBQXdCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQTtRQUNySCxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQ3JHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBRTFGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFFZCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELDhCQUE4QixDQUFDLE1BQU07UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsTUFBTSxDQUFBO0lBRTdDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQTtRQUN0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFBO1FBRWxDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDbEMsZUFBZTtRQUVmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUE7UUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUMxRixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUd4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFBO1FBQy9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUE7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7UUFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFBO1FBR3hELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUE7UUFDekQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQ2hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUVsRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxHQUFHLHVCQUF1QixDQUFBO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUE7UUFDNUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFBO1FBRXpELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLG9CQUFvQixFQUFFLHVCQUF1QixDQUFDLENBQUE7UUFDeEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUN4RixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUV0RixVQUFVLENBQUMsR0FBRyxFQUFFO1lBRWQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFNO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQTtJQUVqQyxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLGdCQUFnQjtRQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQTtRQUN0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUE7UUFFbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNsQyxlQUFlO1FBRWYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQTtRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBR3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUE7UUFDakUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQTtRQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFHekQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksR0FBRyx3QkFBd0IsQ0FBQTtRQUMzRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO1FBRW5ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUE7UUFDckUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQTtRQUM3RCxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFFMUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsMEJBQTBCLENBQUM7UUFDakcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixHQUFHLENBQUMscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQTtRQUMzRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQzNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBRXZGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFFZCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELDJCQUEyQixDQUFDLE1BQU07UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFBO0lBRWxDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUdsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ2xDLGVBQWU7UUFFZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFBO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQTtRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDekYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFHdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQTtRQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFBO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUd2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFBO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQTtRQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUE7UUFFakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQTtRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFBO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUV4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztRQUMzRixJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFBO1FBQ3JHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDckYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFFckYsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUVkLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQseUJBQXlCLENBQUMsTUFBTTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUE7SUFFaEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWEsRUFBRSxpQkFBc0I7UUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3JFLElBQUksZ0JBQWdCLEdBQUcsTUFBZSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUVqRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBQ0QsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FuWFUscUJBQXFCO2tHQUFyQixxQkFBcUIseURDZmxDLG85a0JBbVZBOzsyRkRwVWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dJbnN0YW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dJbnN0YW5jZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93TG9nVmFyaWFibGVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0xvZ1ZhcmlhYmxlc1NlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1pbnN0YW5jZS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5zdGFuY2UtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5zdGFuY2UtaW5mby5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluc3RhbmNlSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gRGV0YWlscyBDb250cm9sc1xyXG4gIGRldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgaW5zdGFuY2VEZXRhaWxzOiBhbnk7XHJcbiAgaW5zdGFuY2VJRDogc3RyaW5nO1xyXG4gIGluc3RhbmNlTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgaW5zdGFuY2VDcmVhdG9yOiBUZXh0Qm94T3B0aW9ucztcclxuICBpbnN0YW5jZVN0YXR1czogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0luc3RhbmNlRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL1N0YXJ0IFdvcmtGbG93IHZhcmlhYmxlc1xyXG4gIHdvcmtGbG93VmFyaWFibGVzQXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93SW5zdGFuY2VWYXJpYWJsZS9cIlxyXG4gIHdvcmtmbG93VmFyaWFibGVzRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB2YXJpYWJsZUluc3RhbmNlSWRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc2VhcmNoVmFyaWFibGVzVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdmFyaWFibGVzVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHdvcmtGbG93VmFyaWFibGVzUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFdvcmtmbG93VmFyaWFibGVzUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvL0VuZCBXb3JrRmxvdyB2YXJpYWJsZXNcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyB0YXNrc1xyXG4gIHdvcmtGbG93VGFza3NBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dJbnN0YW5jZVRhc2svXCJcclxuICB0YXNrc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUYXNrc1RleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHRhc2tUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgdGFza0luc3RhbmNlSWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB0YXNrSW5zdGFuY2VJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICB0YXNrc1BhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBXb3JrZmxvd1Rhc2tzUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzV0ZUYXNrc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vRW5kIFdvcmtGbG93IHRhc2tzXHJcblxyXG4gIC8vU3RhcnQgV29ya0Zsb3cgZXJyb3JzXHJcbiAgd29ya0Zsb3dFcnJvcnNBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dJbnN0YW5jZUVycm9yL1wiXHJcbiAgZXJyb3JzRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaEVycm9yc1RleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVycm9yVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGVycm9ySW5zdGFuY2VJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVycm9ySW5zdGFuY2VJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBlcnJvcnNQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dFcnJvcnNQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNXRkVycm9yc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vRW5kIFdvcmtGbG93IGVycm9yc1xyXG5cclxuICAvL1N0YXJ0IFdvcmtGbG93IGxvZ3NcclxuICB3b3JrRmxvd0xvZ3NBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dMb2cvXCJcclxuICBsb2dzRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaExvZ3NUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBsb2dUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgbG9nSW5zdGFuY2VJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGxvZ0luc3RhbmNlSWRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgbG9nc1BhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBXb3JrZmxvd0xvZ3NQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNXRkxvZ3NGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvL0VuZCBXb3JrRmxvdyBlcnJvcnNcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyBsb2cgdmFyaWFibGVzXHJcbiAgbG9nVmFyaWFibGVzUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ0lEOiBzdHJpbmc7XHJcbiAgLy9FbmQgV29ya0Zsb3cgZXJyb3JzXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHdvcmtGbG93SW5zdGFuY2VTZXJ2aWNlOiBXb3JrZmxvd0luc3RhbmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgd2ZMb2dWYXJpYWJsZXNTZXJ2aWNlOiBXb3JrZmxvd0xvZ1ZhcmlhYmxlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmluc3RhbmNlSUQgPSBwYXJhbXNbJ2lkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXREZXRhaWxzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiBpbnN0YW5jZSBmdW5jdGlvbnNcclxuICBnZXREZXRhaWxzKCkge1xyXG4gICAgdGhpcy5zaG93SW5zdGFuY2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG5cclxuICAgIHRoaXMud29ya0Zsb3dJbnN0YW5jZVNlcnZpY2UuZ2V0RGV0YWlscyh0aGlzLmluc3RhbmNlSUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VEZXRhaWxzID0gcmVzdWx0IGFzIGFueVxyXG5cclxuICAgICAgdmFyIE5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBOYW1lLmFyYWJpYyA9IHRoaXMuaW5zdGFuY2VEZXRhaWxzLm5hbWUuYXJhYmljO1xyXG4gICAgICBOYW1lLmVuZ2xpc2ggPSB0aGlzLmluc3RhbmNlRGV0YWlscy5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy5pbnN0YW5jZURldGFpbHMubmFtZVN0cjtcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtGbG93c1wiKSwgcGF0aDogJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMuaW5zdGFuY2VEZXRhaWxzLndvcmtmbG93TmFtZVN0ciwgcGF0aDogYC9BZG1pbi9Xb3JrZmxvd3MvdGFicy8ke3RoaXMuaW5zdGFuY2VEZXRhaWxzLndvcmtGbG93SUR9LyR7dGhpcy5pbnN0YW5jZURldGFpbHMudmVyc2lvbklEfWAsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy5pbnN0YW5jZURldGFpbHMudmVyc2lvbk5hbWVTdHIsIHBhdGg6IGAvQWRtaW4vV29ya2Zsb3dzL1ZlcnNpb25JbmZvLyR7dGhpcy5pbnN0YW5jZURldGFpbHMudmVyc2lvbklERW5jfWAsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgICAgXTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLmluc3RhbmNlTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlTmFtZS5uYW1lID0gXCJpbnN0YW5jZU5hbWVcIjtcclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VOYW1lLnZhbHVlID0gTmFtZTtcclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUuaXNEaXNhYmxlZCA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VDcmVhdG9yID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VDcmVhdG9yLm5hbWUgPSBcImluc3RhbmNlQ3JlYXRvclwiXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VDcmVhdG9yLmxhYmVsS2V5ID0gXCJDcmVhdGVkQnlcIlxyXG4gICAgICB0aGlzLmluc3RhbmNlQ3JlYXRvci50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5pbnN0YW5jZUNyZWF0b3IuaXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5pbnN0YW5jZUNyZWF0b3IudmFsdWUgPSB0aGlzLmluc3RhbmNlRGV0YWlscy5jcmVhdGVkQnlcclxuXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5pbnN0YW5jZVN0YXR1cy5uYW1lID0gXCJpbnN0YW5jZVN0YXR1c1wiXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMubGFiZWxLZXkgPSBcIlN0YXR1c1wiXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMudHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMuaXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5pbnN0YW5jZVN0YXR1cy52YWx1ZSA9IHRoaXMuaW5zdGFuY2VEZXRhaWxzLmluc3RhbmNlU3RhdHVzXHJcblxyXG4gICAgICB0aGlzLmlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLnNob3dJbnN0YW5jZURldGFpbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL1dGIHZhcmlhYmxlcyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVXRlZhcmlhYmxlcygpIHtcclxuICAgIHRoaXMuc2hvd0luc3RhbmNlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZUYXNrc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuXHJcbiAgICB0aGlzLnNlYXJjaFZhcmlhYmxlc1RleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVmFyaWFibGVzVGV4dEJveC5uYW1lID0gXCJzZWFyY2hWYXJpYWJsZXNUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVmFyaWFibGVzVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVmFyaWFibGVzVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hWYXJpYWJsZXNUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuXHJcblxyXG4gICAgdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hWYXJpYWJsZXNUZXh0Qm94XCJcclxuICAgIHRoaXMudmFyaWFibGVzVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMudmFyaWFibGVzVGV4dElucHV0RmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcblxyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveC5uYW1lID0gXCJ2YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLnZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMudmFyaWFibGVzSW5zdGFuY2VJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94LnZhbHVlID0gdGhpcy5pbnN0YW5jZUlEXHJcblxyXG4gICAgdGhpcy52YXJpYWJsZUluc3RhbmNlSWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy52YXJpYWJsZUluc3RhbmNlSWRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJ2YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLnZhcmlhYmxlSW5zdGFuY2VJZEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJpbnN0YW5jZUlEXCJcclxuICAgIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLnZhcmlhYmxlSW5zdGFuY2VJZEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzUGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLndvcmtGbG93VmFyaWFibGVzQXBpVXJsICsgJ0dldEluc3RhbmNlVmFyaWFibGVzTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzUGFnaW5nLm9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVmFyaWFibGVzVGV4dEJveFwiLCBcInZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94XCJdXHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIsIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyXVxyXG4gICAgdGhpcy5Xb3JrZmxvd1ZhcmlhYmxlc1BhZ2luZy52YWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICBzZXRXb3JrZmxvd1ZhcmlhYmxlc0xpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB0aGlzLndvcmtGbG93VmFyaWFibGVzUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiB0YXNrcyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVUYXNrcygpIHtcclxuICAgIHRoaXMuc2hvd0luc3RhbmNlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuaXNXRlRhc2tzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuXHJcbiAgICB0aGlzLnNlYXJjaFRhc2tzVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUYXNrc1RleHRCb3gubmFtZSA9IFwic2VhcmNoVGFza3NUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGFza3NUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUYXNrc1RleHRCb3gucGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIilcclxuICAgIHRoaXMuc2VhcmNoVGFza3NUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuXHJcblxyXG4gICAgdGhpcy50YXNrVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMudGFza1RleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRhc2tzVGV4dEJveFwiXHJcbiAgICB0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMudGFza1RleHRJbnB1dEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG5cclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnRhc2tJbnN0YW5jZUlkVGV4dEJveC5uYW1lID0gXCJ0YXNrSW5zdGFuY2VJZFRleHRCb3hcIlxyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZFRleHRCb3guaGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnRhc2tJbnN0YW5jZUlkVGV4dEJveC52YWx1ZSA9IHRoaXMuaW5zdGFuY2VJRFxyXG5cclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInRhc2tJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLnRhc2tJbnN0YW5jZUlkRmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcImluc3RhbmNlSURcIlxyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd1Rhc2tzUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dUYXNrc1BhZ2luZy5hY3Rpb25Qb3N0VVJMID0gdGhpcy53b3JrRmxvd1Rhc2tzQXBpVXJsICsgJ0dldEluc3RhbmNlVGFza3NMaXN0aW5nJztcclxuICAgIHRoaXMuV29ya2Zsb3dUYXNrc1BhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRhc2tzVGV4dEJveFwiLCBcInRhc2tJbnN0YW5jZUlkVGV4dEJveFwiXVxyXG4gICAgdGhpcy5Xb3JrZmxvd1Rhc2tzUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy50YXNrVGV4dElucHV0RmlsdGVyLCB0aGlzLnRhc2tJbnN0YW5jZUlkRmlsdGVyXVxyXG4gICAgdGhpcy5Xb3JrZmxvd1Rhc2tzUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNXRlRhc2tzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgc2V0V29ya2Zsb3dUYXNrc0xpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRhc2tzUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiBlcnJvcnMgZnVuY3Rpb25cclxuICBpbml0aWFsaXplRXJyb3JzKCkge1xyXG4gICAgdGhpcy5zaG93SW5zdGFuY2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5pc1dGVGFza3NGaWx0ZXJMb2FkZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5pc1dGRXJyb3JzRmlsdGVyTG9hZGVkID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuXHJcbiAgICB0aGlzLnNlYXJjaEVycm9yc1RleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoRXJyb3JzVGV4dEJveC5uYW1lID0gXCJzZWFyY2hFcnJvcnNUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoRXJyb3JzVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoRXJyb3JzVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hFcnJvcnNUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuXHJcblxyXG4gICAgdGhpcy5lcnJvclRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLmVycm9yVGV4dElucHV0RmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoRXJyb3JzVGV4dEJveFwiXHJcbiAgICB0aGlzLmVycm9yVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5lcnJvclRleHRJbnB1dEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5lcnJvclRleHRJbnB1dEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG5cclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRUZXh0Qm94Lm5hbWUgPSBcImVycm9ySW5zdGFuY2VJZFRleHRCb3hcIlxyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkVGV4dEJveC52YWx1ZSA9IHRoaXMuaW5zdGFuY2VJRFxyXG5cclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IFwiZXJyb3JJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLmVycm9ySW5zdGFuY2VJZEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJpbnN0YW5jZUlEXCJcclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmVycm9ySW5zdGFuY2VJZEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd0Vycm9yc1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93RXJyb3JzUGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLndvcmtGbG93RXJyb3JzQXBpVXJsICsgJ0dldEluc3RhbmNlRXJyb3JzTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93RXJyb3JzUGFnaW5nLm9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoRXJyb3JzVGV4dEJveFwiLCBcImVycm9ySW5zdGFuY2VJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dFcnJvcnNQYWdpbmcuZmlsdGVycyA9IFt0aGlzLmVycm9yVGV4dElucHV0RmlsdGVyLCB0aGlzLmVycm9ySW5zdGFuY2VJZEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dFcnJvcnNQYWdpbmcudmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5pc1dGRXJyb3JzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgc2V0V29ya2Zsb3dFcnJvcnNMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgdGhpcy5lcnJvcnNQYWdpbmdSZXN1bHQgPSByZXN1bHRcclxuXHJcbiAgfVxyXG5cclxuICAvL1dGIGxvZ3MgZnVuY3Rpb25cclxuICBpbml0aWFsaXplTG9ncygpIHtcclxuICAgIHRoaXMuc2hvd0luc3RhbmNlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZUYXNrc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGRXJyb3JzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZMb2dzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIC8vIFRleHRCb3ggaW50aVxyXG5cclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3gubmFtZSA9IFwic2VhcmNoTG9nc1RleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hMb2dzVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3gucGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIilcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3guaGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICB0aGlzLmxvZ1RleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLmxvZ1RleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaExvZ3NUZXh0Qm94XCJcclxuICAgIHRoaXMubG9nVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMubG9nVGV4dElucHV0RmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcblxyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkVGV4dEJveC5uYW1lID0gXCJsb2dJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94LnZhbHVlID0gdGhpcy5pbnN0YW5jZUlEXHJcblxyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcImxvZ0luc3RhbmNlSWRUZXh0Qm94XCJcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJpbnN0YW5jZUlEXCJcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLldvcmtmbG93TG9nc1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93TG9nc1BhZ2luZy5hY3Rpb25Qb3N0VVJMID0gdGhpcy53b3JrRmxvd0xvZ3NBcGlVcmwgKyAnR2V0SW5zdGFuY2VMb2dzTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93TG9nc1BhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaExvZ3NUZXh0Qm94XCIsIFwibG9nSW5zdGFuY2VJZFRleHRCb3hcIl1cclxuICAgIHRoaXMuV29ya2Zsb3dMb2dzUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIsIHRoaXMubG9nSW5zdGFuY2VJZEZpbHRlcl1cclxuICAgIHRoaXMuV29ya2Zsb3dMb2dzUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNXRkxvZ3NGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICBzZXRXb3JrZmxvd0xvZ3NMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgdGhpcy5sb2dzUGFnaW5nUmVzdWx0ID0gcmVzdWx0XHJcblxyXG4gIH1cclxuXHJcbiAgc2hvd0xvZ1ZhcmlhYmxlcyhsb2dJRDogc3RyaW5nLCBsb2dWYXJpYWJsZXNNb2RhbDogYW55KSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMud2ZMb2dWYXJpYWJsZXNTZXJ2aWNlLmdldExvZ1ZhcmlhYmxlcyhsb2dJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IGxvZ1ZhcmlhYmxlc0xpc3QgPSByZXN1bHQgYXMgYW55W107XHJcbiAgICAgIHRoaXMubG9nVmFyaWFibGVzUGFnaW5nUmVzdWx0ID0gbG9nVmFyaWFibGVzTGlzdDtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obG9nVmFyaWFibGVzTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWxpbmUtdGFicy0yeCBib3JkZXItdHJhbnNwYXJlbnQgZnMtNSBmdy1ib2xkZXJcIj5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJnZXREZXRhaWxzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZXRhaWxzXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJkZXRhaWxzRm9ybVwiICpuZ0lmPVwic2hvd0luc3RhbmNlRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJpbnN0YW5jZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImluc3RhbmNlQ3JlYXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiaW5zdGFuY2VTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImRldGFpbHNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6IFdpZGdldHMvQXBwbGljYXRpb25zL1VzZXIvUHJvZmlsZTMtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiaW5pdGlhbGl6ZVdGVmFyaWFibGVzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrRmxvd1ZhcmlhYmxlc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3JrZmxvd1ZhcmlhYmxlc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFZhcmlhYmxlc1RleHRCb3hcIiBbZ3JvdXBdPVwid29ya2Zsb3dWYXJpYWJsZXNGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJ2YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwid29ya2Zsb3dWYXJpYWJsZXNGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGF0YVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHZhcmlhYmxlIG9mIHdvcmtGbG93VmFyaWFibGVzUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPnt7dmFyaWFibGUubmFtZVN0cn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t2YXJpYWJsZS5kYXRhVHlwZUl0ZW19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZhcmlhYmxlLnZhbHVlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIndvcmtGbG93VmFyaWFibGVzUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tZW5kOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd1ZhcmlhYmxlc0xpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiV29ya2Zsb3dWYXJpYWJsZXNQYWdpbmdcIiBbZ3JvdXBdPVwid29ya2Zsb3dWYXJpYWJsZXNGb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjd29ya2Zsb3dWYXJpYWJsZXNQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVUYXNrcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGFza3NcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc1dGVGFza3NGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ0YXNrc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRhc2tzVGV4dEJveFwiIFtncm91cF09XCJ0YXNrc0Zvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInRhc2tJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwidGFza3NGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2aXR5TmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJc0NvbXBsZXRlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDcmVhdGlvbkRhdGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBc3NpZ25lZFRvXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbXBsZXRlZEJ5XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB0YXNrIG9mIHRhc2tzUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPnt7dGFzay5hY3Rpdml0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YXNrLklzQ29tcGxldGVkOyBlbHNlIG5vdENvbXBsZXRlZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlllc1wiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Q29tcGxldGVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9cIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0YXNrLmNyZWF0aW9uRGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGFzay50YXNrQ29ycmVsYXRpb25UeXBlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0YXNrLmFzc2lnbmVkVG99fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Rhc2suY29tcGxldGVkQnl9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cInRhc2tzUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tZW5kOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd1Rhc2tzTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc1dGVGFza3NGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIldvcmtmbG93VGFza3NQYWdpbmdcIiBbZ3JvdXBdPVwidGFza3NGb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjd29ya2Zsb3dUYXNrc1BhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiaW5pdGlhbGl6ZUVycm9ycygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JzXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiaXNXRkVycm9yc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVycm9yc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaEVycm9yc1RleHRCb3hcIiBbZ3JvdXBdPVwiZXJyb3JzRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZXJyb3JJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZXJyb3JzRm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpdml0eU5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5zdGFuY2VOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVycm9yTXNnXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tlcnJvci5hY3Rpdml0eU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZXJyb3IuaW5zdGFuY2VOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlcnJvci5lcnJvcn19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZXJyb3JzUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tZW5kOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd0Vycm9yc0xpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNXRkVycm9yc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiV29ya2Zsb3dFcnJvcnNQYWdpbmdcIiBbZ3JvdXBdPVwiZXJyb3JzRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3dvcmtmbG93RXJyb3JzUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJpbml0aWFsaXplTG9ncygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTG9nc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzV0ZMb2dzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9nc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaExvZ3NUZXh0Qm94XCIgW2dyb3VwXT1cImxvZ3NGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJsb2dJbnN0YW5jZUlkVGV4dEJveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwibG9nc0Zvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6dmFyaWFibGVzIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZpdHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzY2lzaW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbXBsZXRlZEJ5XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNyZWF0aW9uRGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2cgb2YgbG9nc1BhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e2xvZy5hY3Rpdml0eU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG9nLm91dGNvbWVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb2cuY29tcGxldGVkQnl9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvZy5jcmVhdGVkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb2cuY3JlYXRlZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dMb2dWYXJpYWJsZXMobG9nLmlkRW5jcnlwdGVkLCBMb2dWYXJpYWJsZXNNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTG9nVmFyaWFibGVzXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJsb2dzUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tZW5kOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRXb3JrZmxvd0xvZ3NMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzV0ZMb2dzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJXb3JrZmxvd0xvZ3NQYWdpbmdcIiBbZ3JvdXBdPVwibG9nc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICN3b3JrZmxvd0xvZ3NQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8IS0tTG9nIHZhcmlhYmxlcyBNb2RhbC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNMb2dWYXJpYWJsZXNNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMb2dWYXJpYWJsZXNcIil9fTwvaDE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYXJpYWJsZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2dWYXIgb2YgbG9nVmFyaWFibGVzUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e2xvZ1Zhci52YXJpYWJsZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvZ1Zhci52YXJpYWJsZVR5cGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG9nVmFyLnZhcmlhYmxlVmFsdWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImxvZ1ZhcmlhYmxlc1BhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNsb3NlXCIpfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICA8L3VsPlxyXG4gICAgICA8ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9pbnN0YW5jZS1pbmZvL2luc3RhbmNlLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvaW5zdGFuY2UtaW5mby9pbnN0YW5jZS1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHFCQUFxQjtJQTZEaEMscUJBQXFCO0lBRXJCLFlBQW9CLFdBQXdCLEVBQVUsdUJBQWdELEVBQzVGLGNBQThCLEVBQVUsZUFBZ0MsRUFBVSxvQkFBMEMsRUFDN0gsY0FBOEIsRUFBVSxxQkFBa0QsRUFDekYsWUFBc0IsRUFBVSxxQkFBNEM7UUFIbEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQzVGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDN0gsbUJBQWMsR0FBZCxjQUFjLENBQWdC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QUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FuWFUscUJBQXFCO2tHQUFyQixxQkFBcUIseURDZmxDLG85a0JBbVZBOzsyRkRwVWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dJbnN0YW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dJbnN0YW5jZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93TG9nVmFyaWFibGVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0xvZ1ZhcmlhYmxlc1NlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1pbnN0YW5jZS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5zdGFuY2UtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5zdGFuY2UtaW5mby5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluc3RhbmNlSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gRGV0YWlscyBDb250cm9sc1xyXG4gIGRldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgaW5zdGFuY2VEZXRhaWxzOiBhbnk7XHJcbiAgaW5zdGFuY2VJRDogc3RyaW5nO1xyXG4gIGluc3RhbmNlTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgaW5zdGFuY2VDcmVhdG9yOiBUZXh0Qm94T3B0aW9ucztcclxuICBpbnN0YW5jZVN0YXR1czogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0luc3RhbmNlRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL1N0YXJ0IFdvcmtGbG93IHZhcmlhYmxlc1xyXG4gIHdvcmtGbG93VmFyaWFibGVzQXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93SW5zdGFuY2VWYXJpYWJsZS9cIjtcclxuICB3b3JrZmxvd1ZhcmlhYmxlc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICB2YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNlYXJjaFZhcmlhYmxlc1RleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHZhcmlhYmxlc1RleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICB3b3JrRmxvd1ZhcmlhYmxlc1BhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBXb3JrZmxvd1ZhcmlhYmxlc1BhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBpc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9FbmQgV29ya0Zsb3cgdmFyaWFibGVzXHJcblxyXG4gIC8vU3RhcnQgV29ya0Zsb3cgdGFza3NcclxuICB3b3JrRmxvd1Rhc2tzQXBpVXJsID0gXCIvYXBpL2FkbWluL1dvcmtmbG93SW5zdGFuY2VUYXNrL1wiO1xyXG4gIHRhc2tzRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaFRhc2tzVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdGFza1RleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICB0YXNrSW5zdGFuY2VJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHRhc2tJbnN0YW5jZUlkRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHRhc2tzUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIFdvcmtmbG93VGFza3NQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNXRlRhc2tzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9FbmQgV29ya0Zsb3cgdGFza3NcclxuXHJcbiAgLy9TdGFydCBXb3JrRmxvdyBlcnJvcnNcclxuICB3b3JrRmxvd0Vycm9yc0FwaVVybCA9IFwiL2FwaS9hZG1pbi9Xb3JrZmxvd0luc3RhbmNlRXJyb3IvXCI7XHJcbiAgZXJyb3JzRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaEVycm9yc1RleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVycm9yVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGVycm9ySW5zdGFuY2VJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVycm9ySW5zdGFuY2VJZEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBlcnJvcnNQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dFcnJvcnNQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgaXNXRkVycm9yc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vRW5kIFdvcmtGbG93IGVycm9yc1xyXG5cclxuICAvL1N0YXJ0IFdvcmtGbG93IGxvZ3NcclxuICB3b3JrRmxvd0xvZ3NBcGlVcmwgPSBcIi9hcGkvYWRtaW4vV29ya2Zsb3dMb2cvXCI7XHJcbiAgbG9nc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hMb2dzVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgbG9nVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGxvZ0luc3RhbmNlSWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBsb2dJbnN0YW5jZUlkRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGxvZ3NQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgV29ya2Zsb3dMb2dzUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzV0ZMb2dzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9FbmQgV29ya0Zsb3cgZXJyb3JzXHJcblxyXG4gIC8vU3RhcnQgV29ya0Zsb3cgbG9nIHZhcmlhYmxlc1xyXG4gIGxvZ1ZhcmlhYmxlc1BhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBsb2dJRDogc3RyaW5nO1xyXG4gIC8vRW5kIFdvcmtGbG93IGVycm9yc1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSB3b3JrRmxvd0luc3RhbmNlU2VydmljZTogV29ya2Zsb3dJbnN0YW5jZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHdmTG9nVmFyaWFibGVzU2VydmljZTogV29ya2Zsb3dMb2dWYXJpYWJsZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5pbnN0YW5jZUlEID0gcGFyYW1zWydpZCddO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldERldGFpbHMoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvL1dGIGluc3RhbmNlIGZ1bmN0aW9uc1xyXG4gIGdldERldGFpbHMoKSB7XHJcbiAgICB0aGlzLnNob3dJbnN0YW5jZURldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMud29ya0Zsb3dJbnN0YW5jZVNlcnZpY2UuZ2V0RGV0YWlscyh0aGlzLmluc3RhbmNlSUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VEZXRhaWxzID0gcmVzdWx0IGFzIGFueTtcclxuXHJcbiAgICAgIHZhciBOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgTmFtZS5hcmFiaWMgPSB0aGlzLmluc3RhbmNlRGV0YWlscy5uYW1lLmFyYWJpYztcclxuICAgICAgTmFtZS5lbmdsaXNoID0gdGhpcy5pbnN0YW5jZURldGFpbHMubmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMuaW5zdGFuY2VEZXRhaWxzLm5hbWVTdHI7XHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrRmxvd3NcIiksIHBhdGg6ICcvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93JywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLmluc3RhbmNlRGV0YWlscy53b3JrZmxvd05hbWVTdHIsIHBhdGg6IGAvQWRtaW4vV29ya2Zsb3dzL3RhYnMvJHt0aGlzLmluc3RhbmNlRGV0YWlscy53b3JrRmxvd0lEfS8ke3RoaXMuaW5zdGFuY2VEZXRhaWxzLnZlcnNpb25JRH1gLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMuaW5zdGFuY2VEZXRhaWxzLnZlcnNpb25OYW1lU3RyLCBwYXRoOiBgL0FkbWluL1dvcmtmbG93cy9WZXJzaW9uSW5mby8ke3RoaXMuaW5zdGFuY2VEZXRhaWxzLnZlcnNpb25JREVuY31gLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUubmFtZSA9IFwiaW5zdGFuY2VOYW1lXCI7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VOYW1lLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VOYW1lLnZhbHVlID0gTmFtZTtcclxuICAgICAgdGhpcy5pbnN0YW5jZU5hbWUuaXNEaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmluc3RhbmNlQ3JlYXRvciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlQ3JlYXRvci5uYW1lID0gXCJpbnN0YW5jZUNyZWF0b3JcIjtcclxuICAgICAgdGhpcy5pbnN0YW5jZUNyZWF0b3IubGFiZWxLZXkgPSBcIkNyZWF0ZWRCeVwiO1xyXG4gICAgICB0aGlzLmluc3RhbmNlQ3JlYXRvci50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VDcmVhdG9yLmlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmluc3RhbmNlQ3JlYXRvci52YWx1ZSA9IHRoaXMuaW5zdGFuY2VEZXRhaWxzLmNyZWF0ZWRCeTtcclxuXHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5pbnN0YW5jZVN0YXR1cy5uYW1lID0gXCJpbnN0YW5jZVN0YXR1c1wiO1xyXG4gICAgICB0aGlzLmluc3RhbmNlU3RhdHVzLmxhYmVsS2V5ID0gXCJTdGF0dXNcIjtcclxuICAgICAgdGhpcy5pbnN0YW5jZVN0YXR1cy50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMuaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2VTdGF0dXMudmFsdWUgPSB0aGlzLmluc3RhbmNlRGV0YWlscy5pbnN0YW5jZVN0YXR1cztcclxuXHJcbiAgICAgIHRoaXMuaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dJbnN0YW5jZURldGFpbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL1dGIHZhcmlhYmxlcyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVXRlZhcmlhYmxlcygpIHtcclxuICAgIHRoaXMuc2hvd0luc3RhbmNlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZUYXNrc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgLy8gVGV4dEJveCBpbnRpXHJcblxyXG4gICAgdGhpcy5zZWFyY2hWYXJpYWJsZXNUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFZhcmlhYmxlc1RleHRCb3gubmFtZSA9IFwic2VhcmNoVmFyaWFibGVzVGV4dEJveFwiO1xyXG4gICAgdGhpcy5zZWFyY2hWYXJpYWJsZXNUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuc2VhcmNoVmFyaWFibGVzVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuICAgIHRoaXMuc2VhcmNoVmFyaWFibGVzVGV4dEJveC5oaWRlTGFiZWwgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLnZhcmlhYmxlc1RleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnZhcmlhYmxlc1RleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFZhcmlhYmxlc1RleHRCb3hcIjtcclxuICAgIHRoaXMudmFyaWFibGVzVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMudmFyaWFibGVzVGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveC5uYW1lID0gXCJ2YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveFwiO1xyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveC5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy52YXJpYWJsZXNJbnN0YW5jZUlkVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLnZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94LnZhbHVlID0gdGhpcy5pbnN0YW5jZUlEO1xyXG5cclxuICAgIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IFwidmFyaWFibGVzSW5zdGFuY2VJZFRleHRCb3hcIjtcclxuICAgIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcImluc3RhbmNlSURcIjtcclxuICAgIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy52YXJpYWJsZUluc3RhbmNlSWRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNQYWdpbmcuYWN0aW9uUG9zdFVSTCA9IHRoaXMud29ya0Zsb3dWYXJpYWJsZXNBcGlVcmwgKyAnR2V0SW5zdGFuY2VWYXJpYWJsZXNMaXN0aW5nJztcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hWYXJpYWJsZXNUZXh0Qm94XCIsIFwidmFyaWFibGVzSW5zdGFuY2VJZFRleHRCb3hcIl07XHJcbiAgICB0aGlzLldvcmtmbG93VmFyaWFibGVzUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy52YXJpYWJsZXNUZXh0SW5wdXRGaWx0ZXIsIHRoaXMudmFyaWFibGVJbnN0YW5jZUlkRmlsdGVyXTtcclxuICAgIHRoaXMuV29ya2Zsb3dWYXJpYWJsZXNQYWdpbmcudmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIHNldFdvcmtmbG93VmFyaWFibGVzTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMud29ya0Zsb3dWYXJpYWJsZXNQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9XRiB0YXNrcyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVUYXNrcygpIHtcclxuICAgIHRoaXMuc2hvd0luc3RhbmNlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZUYXNrc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuXHJcbiAgICB0aGlzLnNlYXJjaFRhc2tzVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUYXNrc1RleHRCb3gubmFtZSA9IFwic2VhcmNoVGFza3NUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaFRhc2tzVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLnNlYXJjaFRhc2tzVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuICAgIHRoaXMuc2VhcmNoVGFza3NUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuICAgIHRoaXMudGFza1RleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUYXNrc1RleHRCb3hcIjtcclxuICAgIHRoaXMudGFza1RleHRJbnB1dEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCI7XHJcbiAgICB0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRUZXh0Qm94Lm5hbWUgPSBcInRhc2tJbnN0YW5jZUlkVGV4dEJveFwiO1xyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZFRleHRCb3guaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRUZXh0Qm94LnZhbHVlID0gdGhpcy5pbnN0YW5jZUlEO1xyXG5cclxuICAgIHRoaXMudGFza0luc3RhbmNlSWRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInRhc2tJbnN0YW5jZUlkVGV4dEJveFwiO1xyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJpbnN0YW5jZUlEXCI7XHJcbiAgICB0aGlzLnRhc2tJbnN0YW5jZUlkRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy50YXNrSW5zdGFuY2VJZEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dUYXNrc1BhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLldvcmtmbG93VGFza3NQYWdpbmcuYWN0aW9uUG9zdFVSTCA9IHRoaXMud29ya0Zsb3dUYXNrc0FwaVVybCArICdHZXRJbnN0YW5jZVRhc2tzTGlzdGluZyc7XHJcbiAgICB0aGlzLldvcmtmbG93VGFza3NQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUYXNrc1RleHRCb3hcIiwgXCJ0YXNrSW5zdGFuY2VJZFRleHRCb3hcIl07XHJcbiAgICB0aGlzLldvcmtmbG93VGFza3NQYWdpbmcuZmlsdGVycyA9IFt0aGlzLnRhc2tUZXh0SW5wdXRGaWx0ZXIsIHRoaXMudGFza0luc3RhbmNlSWRGaWx0ZXJdO1xyXG4gICAgdGhpcy5Xb3JrZmxvd1Rhc2tzUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmlzV0ZUYXNrc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIHNldFdvcmtmbG93VGFza3NMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgdGhpcy50YXNrc1BhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuXHJcbiAgfVxyXG5cclxuICAvL1dGIGVycm9ycyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVFcnJvcnMoKSB7XHJcbiAgICB0aGlzLnNob3dJbnN0YW5jZURldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dGVGFza3NGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXRkVycm9yc0ZpbHRlckxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICAvLyBUZXh0Qm94IGludGlcclxuXHJcbiAgICB0aGlzLnNlYXJjaEVycm9yc1RleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoRXJyb3JzVGV4dEJveC5uYW1lID0gXCJzZWFyY2hFcnJvcnNUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaEVycm9yc1RleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hFcnJvcnNUZXh0Qm94LnBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpO1xyXG4gICAgdGhpcy5zZWFyY2hFcnJvcnNUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuICAgIHRoaXMuZXJyb3JUZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5lcnJvclRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaEVycm9yc1RleHRCb3hcIjtcclxuICAgIHRoaXMuZXJyb3JUZXh0SW5wdXRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiO1xyXG4gICAgdGhpcy5lcnJvclRleHRJbnB1dEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3JUZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLmVycm9ySW5zdGFuY2VJZFRleHRCb3gubmFtZSA9IFwiZXJyb3JJbnN0YW5jZUlkVGV4dEJveFwiO1xyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLmVycm9ySW5zdGFuY2VJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRUZXh0Qm94LnZhbHVlID0gdGhpcy5pbnN0YW5jZUlEO1xyXG5cclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IFwiZXJyb3JJbnN0YW5jZUlkVGV4dEJveFwiO1xyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiaW5zdGFuY2VJRFwiO1xyXG4gICAgdGhpcy5lcnJvckluc3RhbmNlSWRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLmVycm9ySW5zdGFuY2VJZEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMuV29ya2Zsb3dFcnJvcnNQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0Vycm9yc1BhZ2luZy5hY3Rpb25Qb3N0VVJMID0gdGhpcy53b3JrRmxvd0Vycm9yc0FwaVVybCArICdHZXRJbnN0YW5jZUVycm9yc0xpc3RpbmcnO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0Vycm9yc1BhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaEVycm9yc1RleHRCb3hcIiwgXCJlcnJvckluc3RhbmNlSWRUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0Vycm9yc1BhZ2luZy5maWx0ZXJzID0gW3RoaXMuZXJyb3JUZXh0SW5wdXRGaWx0ZXIsIHRoaXMuZXJyb3JJbnN0YW5jZUlkRmlsdGVyXTtcclxuICAgIHRoaXMuV29ya2Zsb3dFcnJvcnNQYWdpbmcudmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNXRkVycm9yc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIHNldFdvcmtmbG93RXJyb3JzTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMuZXJyb3JzUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG5cclxuICB9XHJcblxyXG4gIC8vV0YgbG9ncyBmdW5jdGlvblxyXG4gIGluaXRpYWxpemVMb2dzKCkge1xyXG4gICAgdGhpcy5zaG93SW5zdGFuY2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZWYXJpYWJsZXNGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXRlRhc2tzRmlsdGVyTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV0ZFcnJvcnNGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXRkxvZ3NGaWx0ZXJMb2FkZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIC8vIFRleHRCb3ggaW50aVxyXG5cclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3gubmFtZSA9IFwic2VhcmNoTG9nc1RleHRCb3hcIjtcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hMb2dzVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuICAgIHRoaXMuc2VhcmNoTG9nc1RleHRCb3guaGlkZUxhYmVsID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hMb2dzVGV4dEJveFwiO1xyXG4gICAgdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiO1xyXG4gICAgdGhpcy5sb2dUZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLmxvZ1RleHRJbnB1dEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuXHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94Lm5hbWUgPSBcImxvZ0luc3RhbmNlSWRUZXh0Qm94XCI7XHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZFRleHRCb3gudmFsdWUgPSB0aGlzLmluc3RhbmNlSUQ7XHJcblxyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMubG9nSW5zdGFuY2VJZEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcImxvZ0luc3RhbmNlSWRUZXh0Qm94XCI7XHJcbiAgICB0aGlzLmxvZ0luc3RhbmNlSWRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiaW5zdGFuY2VJRFwiO1xyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG4gICAgdGhpcy5Xb3JrZmxvd0xvZ3NQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0xvZ3NQYWdpbmcuYWN0aW9uUG9zdFVSTCA9IHRoaXMud29ya0Zsb3dMb2dzQXBpVXJsICsgJ0dldEluc3RhbmNlTG9nc0xpc3RpbmcnO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0xvZ3NQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hMb2dzVGV4dEJveFwiLCBcImxvZ0luc3RhbmNlSWRUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5Xb3JrZmxvd0xvZ3NQYWdpbmcuZmlsdGVycyA9IFt0aGlzLmxvZ1RleHRJbnB1dEZpbHRlciwgdGhpcy5sb2dJbnN0YW5jZUlkRmlsdGVyXTtcclxuICAgIHRoaXMuV29ya2Zsb3dMb2dzUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmlzV0ZMb2dzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgc2V0V29ya2Zsb3dMb2dzTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIHRoaXMubG9nc1BhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuXHJcbiAgfVxyXG5cclxuICBzaG93TG9nVmFyaWFibGVzKGxvZ0lEOiBzdHJpbmcsIGxvZ1ZhcmlhYmxlc01vZGFsOiBhbnkpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy53ZkxvZ1ZhcmlhYmxlc1NlcnZpY2UuZ2V0TG9nVmFyaWFibGVzKGxvZ0lEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgbG9nVmFyaWFibGVzTGlzdCA9IHJlc3VsdCBhcyBhbnlbXTtcclxuICAgICAgdGhpcy5sb2dWYXJpYWJsZXNQYWdpbmdSZXN1bHQgPSBsb2dWYXJpYWJsZXNMaXN0O1xyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihsb2dWYXJpYWJsZXNNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImdldERldGFpbHMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRldGFpbHNcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImRldGFpbHNGb3JtXCIgKm5nSWY9XCJzaG93SW5zdGFuY2VEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImluc3RhbmNlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJkZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiaW5zdGFuY2VDcmVhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJkZXRhaWxzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJpbnN0YW5jZVN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tZW5kOjogV2lkZ2V0cy9BcHBsaWNhdGlvbnMvVXNlci9Qcm9maWxlMy0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJpbml0aWFsaXplV0ZWYXJpYWJsZXMoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtGbG93VmFyaWFibGVzXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiaXNXRlZhcmlhYmxlc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndvcmtmbG93VmFyaWFibGVzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVmFyaWFibGVzVGV4dEJveFwiIFtncm91cF09XCJ3b3JrZmxvd1ZhcmlhYmxlc0Zvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInZhcmlhYmxlc0luc3RhbmNlSWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJ3b3JrZmxvd1ZhcmlhYmxlc0Zvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6dmFyaWFibGVzIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEYXRhVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdmFyaWFibGUgb2Ygd29ya0Zsb3dWYXJpYWJsZXNQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrXCI+e3t2YXJpYWJsZS5uYW1lU3RyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZhcmlhYmxlLmRhdGFUeXBlSXRlbX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dmFyaWFibGUudmFsdWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwid29ya0Zsb3dWYXJpYWJsZXNQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VmFyaWFibGVzTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc1dGVmFyaWFibGVzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJXb3JrZmxvd1ZhcmlhYmxlc1BhZ2luZ1wiIFtncm91cF09XCJ3b3JrZmxvd1ZhcmlhYmxlc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICN3b3JrZmxvd1ZhcmlhYmxlc1BhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwiaW5pdGlhbGl6ZVRhc2tzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUYXNrc1wiKX19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTUgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzV0ZUYXNrc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInRhc2tzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGFza3NUZXh0Qm94XCIgW2dyb3VwXT1cInRhc2tzRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwidGFza0luc3RhbmNlSWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJ0YXNrc0Zvcm1cIiBbaGlkZGVuXT1cInRydWVcIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6dmFyaWFibGVzIGxpc3QtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZpdHlOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIklzQ29tcGxldGVkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNyZWF0aW9uRGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFzc2lnbmVkVG9cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29tcGxldGVkQnlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHRhc2sgb2YgdGFza3NQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrXCI+e3t0YXNrLmFjdGl2aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhc2suSXNDb21wbGV0ZWQ7IGVsc2Ugbm90Q29tcGxldGVkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RDb21wbGV0ZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOb1wiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Rhc2suY3JlYXRpb25EYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0YXNrLnRhc2tDb3JyZWxhdGlvblR5cGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Rhc2suYXNzaWduZWRUb319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGFzay5jb21wbGV0ZWRCeX19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwidGFza3NQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93VGFza3NMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cImlzV0ZUYXNrc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiV29ya2Zsb3dUYXNrc1BhZ2luZ1wiIFtncm91cF09XCJ0YXNrc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICN3b3JrZmxvd1Rhc2tzUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiIChjbGljayk9XCJpbml0aWFsaXplRXJyb3JzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFcnJvcnNcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc1dGRXJyb3JzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZXJyb3JzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoRXJyb3JzVGV4dEJveFwiIFtncm91cF09XCJlcnJvcnNGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlcnJvckluc3RhbmNlSWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJlcnJvcnNGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2aXR5TmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbnN0YW5jZU5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNc2dcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9yc1BhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e2Vycm9yLmFjdGl2aXR5TmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlcnJvci5pbnN0YW5jZU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2Vycm9yLmVycm9yfX08L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJlcnJvcnNQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93RXJyb3JzTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc1dGRXJyb3JzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJXb3JrZmxvd0Vycm9yc1BhZ2luZ1wiIFtncm91cF09XCJlcnJvcnNGb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjd29ya2Zsb3dFcnJvcnNQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImluaXRpYWxpemVMb2dzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMb2dzXCIpfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiaXNXRkxvZ3NGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dzRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoTG9nc1RleHRCb3hcIiBbZ3JvdXBdPVwibG9nc0Zvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImxvZ0luc3RhbmNlSWRUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJsb2dzRm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjp2YXJpYWJsZXMgbGlzdC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpdml0eVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZXNjaXNpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29tcGxldGVkQnlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3JlYXRpb25EYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGxvZyBvZiBsb2dzUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPnt7bG9nLmFjdGl2aXR5TmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb2cub3V0Y29tZU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvZy5jb21wbGV0ZWRCeX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG9nLmNyZWF0ZWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvZy5jcmVhdGVkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0xvZ1ZhcmlhYmxlcyhsb2cuaWRFbmNyeXB0ZWQsIExvZ1ZhcmlhYmxlc01vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMb2dWYXJpYWJsZXNcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImxvZ3NQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OnZhcmlhYmxlcyBsaXN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFdvcmtmbG93TG9nc0xpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNXRkxvZ3NGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIldvcmtmbG93TG9nc1BhZ2luZ1wiIFtncm91cF09XCJsb2dzRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3dvcmtmbG93TG9nc1BhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwhLS1Mb2cgdmFyaWFibGVzIE1vZGFsLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI0xvZ1ZhcmlhYmxlc01vZGFsIGxldC1tb2RhbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxvZ1ZhcmlhYmxlc1wiKX19PC9oMT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhcmlhYmxlVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGxvZ1ZhciBvZiBsb2dWYXJpYWJsZXNQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFya1wiPnt7bG9nVmFyLnZhcmlhYmxlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG9nVmFyLnZhcmlhYmxlVHlwZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb2dWYXIudmFyaWFibGVWYWx1ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwibG9nVmFyaWFibGVzUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2xvc2VcIil9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|