@bnsights/bbsf-admin-portal 1.0.5 → 1.0.9
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/bnsights-bbsf-admin-portal-1.0.9.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +8876 -3684
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +316 -258
- package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +367 -222
- package/esm2015/lib/Pages/ActiveDirectories/active-directory.module.js +16 -4
- package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
- package/esm2015/lib/Pages/_layout/components/topbar/topbar.component.js +5 -7
- package/esm2015/lib/Pages/anonymouslayout/activation/activation.component.js +92 -0
- package/esm2015/lib/Pages/anonymouslayout/anonymouslayout-routing.module.js +35 -0
- package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.component.js +45 -0
- package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.module.js +75 -0
- package/esm2015/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.js +55 -0
- package/esm2015/lib/Pages/anonymouslayout/login/login.component.js +26 -0
- package/esm2015/lib/Pages/anonymouslayout/rest-password/rest-password.component.js +90 -0
- package/esm2015/lib/Pages/anonymouslayout/upload-license/upload-license.component.js +71 -0
- package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +32 -15
- package/esm2015/lib/Pages/core/authentication/admin.guard.js +17 -0
- package/esm2015/lib/Pages/core/authentication/auth.guard.js +22 -3
- package/esm2015/lib/Pages/core/authentication/auth.service.js +1 -2
- package/esm2015/lib/Pages/departments/department/department.component.js +13 -9
- package/esm2015/lib/Pages/departments/department-info/department-info.component.js +1 -1
- package/esm2015/lib/Pages/departments/departments.module.js +6 -4
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +9 -9
- package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +9 -9
- package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +9 -9
- package/esm2015/lib/Pages/home/home.component.js +3 -3
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +1 -1
- package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +1 -1
- package/esm2015/lib/Pages/localizations/localizations.component.js +26 -10
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +9 -9
- package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +5 -5
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +5 -5
- package/esm2015/lib/Pages/notifications/add/add.component.js +11 -13
- package/esm2015/lib/Pages/notifications/edit/edit.component.js +11 -13
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +1 -1
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +5 -5
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +9 -9
- package/esm2015/lib/Pages/providers/provider/provider.component.js +1 -1
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +78 -84
- package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +1 -1
- package/esm2015/lib/Pages/roles/permissions/permissions.component.js +5 -5
- package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +5 -5
- package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +1 -1
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +5 -5
- package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +1 -1
- package/esm2015/lib/Pages/shared/Enums/ADType.js +6 -0
- package/esm2015/lib/Pages/shared/Enums/ADWindowsType.js +6 -0
- package/esm2015/lib/Pages/shared/Enums/ConditionRHSType.js +6 -0
- package/esm2015/lib/Pages/shared/Enums/WFActivityType.js +12 -0
- package/esm2015/lib/Pages/shared/Enums/WFVariableDataType.js +14 -0
- package/esm2015/lib/Pages/shared/Services/AccountService.service.js +26 -1
- package/esm2015/lib/Pages/shared/Services/ActiveDirectoryService.service.js +18 -18
- package/esm2015/lib/Pages/shared/Services/AnonymousLayoutService.service.js +29 -0
- package/esm2015/lib/Pages/shared/Services/ConfigurationsService.service.js +2 -2
- package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +3 -3
- package/esm2015/lib/Pages/shared/Services/GlobalErrorHandler.service.js +1 -14
- package/esm2015/lib/Pages/shared/Services/HelpCenterService.service.js +2 -2
- package/esm2015/lib/Pages/shared/Services/HttpErrorInterceptor.service.js +1 -1
- package/esm2015/lib/Pages/shared/Services/LookupService.service.js +2 -2
- package/esm2015/lib/Pages/shared/Services/PermissionSetService.service.js +2 -2
- package/esm2015/lib/Pages/shared/Services/SectorService.service.js +3 -3
- package/esm2015/lib/Pages/shared/Services/WorkFlowVersionService.service.js +24 -0
- package/esm2015/lib/Pages/shared/Services/WorkflowActivityService.service.js +32 -5
- package/esm2015/lib/Pages/shared/Services/WorkflowInstanceService.service.js +24 -0
- package/esm2015/lib/Pages/shared/Services/WorkflowLogVariablesService.service.js +24 -0
- package/esm2015/lib/Pages/shared/Services/WorkflowService.service.js +12 -4
- package/esm2015/lib/Pages/shared/Services/WorkflowVariablesService.service.js +12 -6
- package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +6 -3
- package/esm2015/lib/Pages/shared/Services/provider.service.js +3 -3
- package/esm2015/lib/Pages/shared/Services/userService.service.js +3 -3
- package/esm2015/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +28 -4
- package/esm2015/lib/Pages/shared/models/UserModels/ActivationModel.js +3 -0
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.js +8 -0
- package/esm2015/lib/Pages/shared/models/user.registration.js +1 -1
- package/esm2015/lib/Pages/shared/stylesbundle.service.js +3 -3
- package/esm2015/lib/Pages/users/users.component.js +6 -6
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +535 -0
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +852 -0
- package/esm2015/lib/Pages/workflows/instance-info/instance-info.component.js +309 -0
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +611 -430
- package/esm2015/lib/Pages/workflows/version-info/version-info.component.js +143 -0
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +136 -148
- package/esm2015/lib/Pages/workflows/workflows-routing.module.js +9 -1
- package/esm2015/lib/Pages/workflows/workflows.module.js +7 -3
- package/esm2015/lib/masterlayout-routing.module.js +4 -4
- package/esm2015/lib/masterlayout.component.js +2 -2
- package/esm2015/lib/masterlayout.module.js +24 -9
- package/esm2015/public-api.js +5 -5
- package/fesm2015/bnsights-bbsf-admin-portal.js +12883 -7769
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +65 -56
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +70 -43
- package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +4 -1
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +2 -1
- package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -0
- package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -0
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +18 -0
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +19 -0
- package/lib/Pages/{account → anonymouslayout}/forgot-password/forgot-password.component.d.ts +4 -1
- package/lib/Pages/{account → anonymouslayout}/login/login.component.d.ts +3 -2
- package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -0
- package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -0
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +3 -1
- package/lib/Pages/core/authentication/admin.guard.d.ts +9 -0
- package/lib/Pages/core/authentication/auth.guard.d.ts +1 -0
- package/lib/Pages/departments/department/department.component.d.ts +3 -2
- package/lib/Pages/departments/department-info/department-info.component.d.ts +1 -1
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +1 -1
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +1 -1
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +1 -1
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +1 -1
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +6 -6
- package/lib/Pages/localizations/localizations.component.d.ts +2 -1
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +1 -1
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +1 -1
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +1 -1
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +1 -1
- package/lib/Pages/notifications/templates/templates.component.d.ts +1 -1
- package/lib/Pages/providers/provider/provider.component.d.ts +1 -1
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +12 -15
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +1 -1
- package/lib/Pages/roles/permissions/permissions.component.d.ts +1 -1
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +1 -1
- package/lib/Pages/sectors/department-info/department-info.component.d.ts +1 -1
- package/lib/Pages/sectors/sector/sector.component.d.ts +1 -1
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +1 -1
- package/lib/Pages/shared/Enums/ADType.d.ts +4 -0
- package/lib/Pages/shared/Enums/ADWindowsType.d.ts +4 -0
- package/lib/Pages/shared/Enums/ConditionRHSType.d.ts +4 -0
- package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -0
- package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +12 -0
- package/lib/Pages/shared/Services/AccountService.service.d.ts +9 -1
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +9 -9
- package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -0
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -7
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +7 -7
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
- package/lib/Pages/shared/Services/JobsService.service.d.ts +1 -1
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
- package/lib/Pages/shared/Services/LogsService.d.ts +1 -1
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
- package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -14
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -5
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +6 -6
- package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -20
- package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -0
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +9 -3
- package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -0
- package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -0
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +5 -3
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +5 -4
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +13 -12
- package/lib/Pages/shared/Services/provider.service.d.ts +10 -10
- package/lib/Pages/shared/Services/userService.service.d.ts +14 -14
- package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +11 -6
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +1 -0
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +8 -8
- package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -0
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -0
- package/lib/Pages/users/users.component.d.ts +1 -1
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -0
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +83 -0
- package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -0
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +73 -80
- package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -0
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +26 -29
- package/lib/Pages/workflows/workflows.module.d.ts +19 -15
- package/lib/masterlayout.module.d.ts +2 -2
- package/package.json +5 -3
- package/public-api.d.ts +4 -4
- package/src/lib/assets/css/anonymousBundle-Dark-RTL.css +4 -0
- package/src/lib/assets/css/anonymousBundle-Dark.css +4 -0
- package/src/lib/assets/css/anonymousBundle-light-RTL.css +4 -0
- package/src/lib/assets/css/anonymousBundle-light.css +18 -0
- package/src/lib/assets/css/login.css +74671 -0
- package/src/lib/assets/sass/custom-styles-rtl.scss +13 -3
- package/src/lib/assets/sass/custom-styles.scss +38 -11
- package/bnsights-bbsf-admin-portal-1.0.5.tgz +0 -0
- package/esm2015/lib/Pages/account/account-routing.module.js +0 -28
- package/esm2015/lib/Pages/account/account.component.js +0 -27
- package/esm2015/lib/Pages/account/account.module.js +0 -56
- package/esm2015/lib/Pages/account/forgot-password/forgot-password.component.js +0 -48
- package/esm2015/lib/Pages/account/login/login.component.js +0 -25
- package/esm2015/lib/Pages/account/register/register.component.js +0 -48
- package/lib/Pages/account/account-routing.module.d.ts +0 -7
- package/lib/Pages/account/account.component.d.ts +0 -12
- package/lib/Pages/account/account.module.d.ts +0 -16
- package/lib/Pages/account/register/register.component.d.ts +0 -21
|
@@ -519,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
519
519
|
type: ViewChild,
|
|
520
520
|
args: ['ConfirmationModalControl', { static: false }]
|
|
521
521
|
}] } });
|
|
522
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzUSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxNQUFNLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRbkMsTUFBTSxPQUFPLGlCQUFpQjtJQXNFNUIsWUFFVSxlQUFnQyxFQUNoQyxZQUFzQixFQUN0QixXQUF3QixFQUN4QixvQkFBMEMsRUFDM0MsY0FBOEIsRUFDN0IsZUFBZ0MsRUFDaEMscUJBQTRDO1FBTjVDLG9CQUFlLEdBQWYsZUFB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QUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQ1Usd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBQYWdpbmdPcHRpb25zLCBSYWRpb0J1dHRvbk9wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIFJhZGlvQnV0dG9uSXRlbSwgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL3Byb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm92aWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9Qcm92aWRlck1vZGVsJztcclxuaW1wb3J0IHsgUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCc7XHJcbmltcG9ydCB7IERlZmF1bHRQcm92aWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9EZWZhdWx0UHJvdmlkZXJNb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgc2F2ZUFzfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm92aWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3ZpZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vUHJvdmlkZXIvXCI7XHJcblxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHByb3ZpZGVyVHlwZXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc29ydGluZ0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNvcnRpbmdGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQcm92aWRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBQcm92aWRlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUHJvdmlkZXJUeXBlc0ZpbHRlckxpc3Q6IGFueVtdID0gW107XHJcbiAgU29ydGluZ0ZpbHRlckxpc3Q6IGFueVtdID0gW107XHJcbiAgVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvYWRlZFByb3ZpZGVyczogYW55W10gPSBbXTtcclxuICBPcmdhbml6YXRpb25zTGlzdCA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ3Byb3ZpZGVyVHlwZXNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvdmlkZXJUeXBlc0RETDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzb3J0aW5nRmlsdGVyRERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNvcnRpbmdGaWx0ZXJEREw6IEVsZW1lbnRSZWY7XHJcblxyXG5cclxuICAvL1Byb3ZpZGVyIGF0dHJpYnV0ZXNcclxuICBQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIFByb3ZpZGVyQXR0cmlidXRlc0NvdW50Om51bWJlcj0wO1xyXG4gIElzQXR0cmlidXRlc0xvYWRlZDpib29sZWFuPWZhbHNlO1xyXG5cclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRQcm92aWRlckZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIEFkZE5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZERlc2NyaXB0aW9uOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQWRkT3JnYW5pemF0aW9uT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkUHJvdmlkZXJUeXBlSXRlbUlEOiBudW1iZXIgPSAwO1xyXG5cclxuICAvLy8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0UHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBFZGl0TmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdERlc2NyaXB0aW9uOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRDogbnVtYmVyID0gMDtcclxuICBFZGl0UHJvdmlkZXJPcmdhbml6YXRpb25JRDogbnVtYmVyPTA7XHJcbiAgRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIFByb3ZpZGVySWQ6IG51bWJlcjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlUHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIC8vU2VsZWN0IERlZmF1bHQgUHJvdmlkZXJzXHJcbiAgRGVmYXVsdFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIERlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIERlZmF1bHRQcm92aWRlcnM6IGFueVtdID0gW107XHJcbiAgRGVmYXVsdFByb3ZpZGVyc1JhZGlvQnRuT3B0aW9uczogUmFkaW9CdXR0b25PcHRpb25zW107XHJcblxyXG4gIGNvbnN0cnVjdG9yXHJcbiAgICAoXHJcbiAgICBwcml2YXRlIFByb3ZpZGVyU2VydmljZTogUHJvdmlkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgLy9QYWdlIGhlYWRlciAoYnJlYWRjcnVtYiBhbmQgdGl0bGUpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlPXRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlcnZpY2VQcm92aWRlcnNcIilcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnM9W1xyXG4gICAgICAge3RpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpICwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICAge3RpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2V9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgIC8vb24gbGFuZyBjaGFuZ2VkXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KT0+e1xyXG4gICAgICB0aGlzLlNob3dQYWdlQ29udGVudD1mYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIC8vIFByb3ZpZGVyIFR5cGVzIEZpbHRlciBJbml0ICAgXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTmFtZSA9IFwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTGFiZWxLZXkgPSBcIlByb3ZpZGVyVHlwZXNcIlxyXG4gICAgdGhpcy5wcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uLlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VydmljZVByb3ZpZGVyVHlwZVwiKTtcclxuXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5wcm92aWRlclR5cGVzRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwidHlwZXNcIlxyXG4gICAgdGhpcy5wcm92aWRlclR5cGVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG5cclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5OYW1lID0gXCJzb3J0aW5nRmlsdGVyT3B0aW9uXCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5MYWJlbEtleSA9IFwiU29ydFwiXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXJPcHRpb24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5QbGFjZWhvbGRlciA9IFwiXCI7XHJcblxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIlxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNvcnRJRFwiXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3Q7XHJcblxyXG5cclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gIHRoaXMuQXBpVXJsICsgJ0dldFByb3ZpZGVyc0J5RmlsdGVyJztcclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCIsIFwic29ydGluZ0ZpbHRlck9wdGlvblwiXTtcclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlciwgdGhpcy5wcm92aWRlclR5cGVzRmlsdGVyLCB0aGlzLnNvcnRpbmdGaWx0ZXJdXHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL0xvYWQgZmlsdGVycyBsaXN0c1xyXG4gIGxvYWRMaXN0cygpIHtcclxuICAgIGlmICghdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuTG9hZGRyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgbGV0IERyb3Bkb3duTGlzdHMgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgICAgLy90aGlzLk9yZ2FuaXphdGlvbnNMaXN0ID0gRHJvcGRvd25MaXN0cy5vcmdhbml6YXRpb25zO1xyXG4gICAgICAgIC8vdGhpcy5UeXBlc0xpc3QgPSBEcm9wZG93bkxpc3RzLnByb3ZpZGVyVHlwZXM7XHJcbiAgICAgICAgdGhpcy5Qcm92aWRlclR5cGVzRmlsdGVyTGlzdCA9IERyb3Bkb3duTGlzdHMucHJvdmlkZXJUeXBlc0ZpbHRlcjtcclxuICAgICAgICB0aGlzLlNvcnRpbmdGaWx0ZXJMaXN0ID0gRHJvcGRvd25MaXN0cy5zb3J0aW5nRmlsdGVyTGlzdDtcclxuXHJcbiAgICAgICAgbGV0IHByb3ZpZGVyVHlwZXNFbGVtZW50ID0gdGhpcy5wcm92aWRlclR5cGVzRERMIGFzIGFueTtcclxuICAgICAgICBsZXQgc29ydGluZ0ZpbHRlckVsZW1lbnQgPSB0aGlzLnNvcnRpbmdGaWx0ZXJEREwgYXMgYW55O1xyXG5cclxuXHJcbiAgICAgICAgcHJvdmlkZXJUeXBlc0VsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLlByb3ZpZGVyVHlwZXNGaWx0ZXJMaXN0KTtcclxuXHJcbiAgICAgICAgc29ydGluZ0ZpbHRlckVsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLlNvcnRpbmdGaWx0ZXJMaXN0KTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuSXNGaWx0ZXJEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRQcm92aWRlckxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9dHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb25cIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Qcm92aWRlckZvcm0uY29udHJvbHNbXCJzb3J0aW5nRmlsdGVyT3B0aW9uXCJdLnNldFZhbHVlKFtdKTtcclxuICAgIHRoaXMuUHJvdmlkZXJGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvdmlkZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5Qcm92aWRlclBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vQXR0cmlidXRlc0Z1bmN0aW9uXHJcbiAgc2V0QWRkUHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSl7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZXRQcm92aWRlckF0dHJpYnV0ZXModHlwZUZ1bGxOYW1lKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgLy9TZXQgUHJvdmlkZXIgdHlwZSBpZCBvbiB0eXBlIGNoYW5nZVxyXG4gICAgICB0aGlzLkxvYWRlZFByb3ZpZGVycyA9IHJlc3VsdE9iai5sb2FkZWRQcm92aWRlcnM7XHJcbiAgICAgIGxldCBzZWxlY3RlZFByb3ZpZGVyVHlwZSA9IHRoaXMuTG9hZGVkUHJvdmlkZXJzLmZpbmQob2JqID0+IHtcclxuICAgICAgICByZXR1cm4gb2JqLmZ1bGxOYW1lID09PSB0eXBlRnVsbE5hbWVcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJUeXBlSXRlbUlEID0gc2VsZWN0ZWRQcm92aWRlclR5cGUucHJvdmlkZXJUeXBlO1xyXG5cclxuICAgICAgLy9TZXQgYXR0cmlidXRlcyBhbmQgY291bnRcclxuICAgICAgbGV0IGF0dHJpYnV0ZXMgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IFtdO1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zKGF0dHJpYnV0ZXMsIHRydWUpO1xyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBkYXRhWzBdO1xyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gZGF0YVsxXTtcclxuICAgICAgdGhpcy5Jc0F0dHJpYnV0ZXNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIH0pO1xyXG59XHJcblxyXG4gIHNldEVkaXRQcm92aWRlckF0dHJpYnV0ZXModHlwZUZ1bGxOYW1lKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldFByb3ZpZGVyQXR0cmlidXRlcyh0eXBlRnVsbE5hbWUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAvL1NldCBQcm92aWRlciB0eXBlIGlkIG9uIHR5cGUgY2hhbmdlXHJcbiAgICAgIHRoaXMuTG9hZGVkUHJvdmlkZXJzID0gcmVzdWx0T2JqLmxvYWRlZFByb3ZpZGVycztcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvdmlkZXJUeXBlID0gdGhpcy5Mb2FkZWRQcm92aWRlcnMuZmluZChvYmogPT4ge1xyXG4gICAgICAgIHJldHVybiBvYmouZnVsbE5hbWUgPT09IHR5cGVGdWxsTmFtZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJUeXBlSXRlbUlEID0gc2VsZWN0ZWRQcm92aWRlclR5cGUucHJvdmlkZXJUeXBlO1xyXG5cclxuICAgICAgLy9TZXQgYXR0cmlidXRlcyBhbmQgY291bnRcclxuICAgICAgbGV0IGF0dHJpYnV0ZXMgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMuZ2V0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyhhdHRyaWJ1dGVzLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBkYXRhWzBdO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNDb3VudCA9IGRhdGFbMV07XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zKHByb3ZpZGVyQXR0cmlidXRlczogYW55W10sIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgYXR0cmlidXRlc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgYXR0cmlidXRlc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGFjdGlvbkluZGljYXRlOiBzdHJpbmcgPSBpc0FkZCA/IFwiQWRkXCIgOiBcIkVkaXRcIjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvdmlkZXJBdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICBsZXQgb2JqZWN0QXR0cmlidXRlT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgICAgbGV0IGlzRW5jcnlwdGVkOiBib29sZWFuID0gcHJvdmlkZXJBdHRyaWJ1dGVzW2ldLmlzRW5jcnlwdGVkO1xyXG5cclxuICAgICAgbGV0IEF0dHJpYnV0ZU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQXR0cmlidXRlTmFtZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkF0dHJpYnV0ZU5hbWVcIiArIGk7XHJcbiAgICAgIEF0dHJpYnV0ZU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQXR0cmlidXRlTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIEF0dHJpYnV0ZU5hbWUuVmFsdWUgPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0ubmFtZTtcclxuXHJcblxyXG4gICAgICBsZXQgQXR0cmlidXRlVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuTmFtZSA9IGFjdGlvbkluZGljYXRlICsgXCJBdHRyaWJ1dGVWYWx1ZVwiICsgaTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuVHlwZSA9IGlzRW5jcnlwdGVkID8gSW5wdXRUeXBlLlBhc3N3b3JkIDogSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIEF0dHJpYnV0ZVZhbHVlLlZhbHVlID0gcHJvdmlkZXJBdHRyaWJ1dGVzW2ldLnZhbHVlO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5SZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBdHRyaWJ1dGVFbmNyeXB0ZWQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEF0dHJpYnV0ZUVuY3J5cHRlZC5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkF0dHJpYnV0ZUVuY3J5cHRlZFwiICsgaTtcclxuICAgICAgQXR0cmlidXRlRW5jcnlwdGVkLlZhbHVlID0gcHJvdmlkZXJBdHRyaWJ1dGVzW2ldLmlzRW5jcnlwdGVkO1xyXG5cclxuICAgICAgb2JqZWN0QXR0cmlidXRlT3B0aW9ucy5wdXNoKEF0dHJpYnV0ZU5hbWUsIEF0dHJpYnV0ZVZhbHVlLCBBdHRyaWJ1dGVFbmNyeXB0ZWQpO1xyXG4gICAgICBhdHRyaWJ1dGVzT3B0aW9ucy5wdXNoKG9iamVjdEF0dHJpYnV0ZU9wdGlvbnMpO1xyXG4gICAgICBhdHRyaWJ1dGVzQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2F0dHJpYnV0ZXNPcHRpb25zLCBhdHRyaWJ1dGVzQ291bnRdO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQXR0cmlidXRlKGRlbGV0ZWRBdHRyaWJ1dGU6IGFueSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGxldCBkZWxldGVkQXR0ckluZGV4OiBudW1iZXIgPSB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQXR0cmlidXRlKTtcclxuICAgICAgaWYgKGRlbGV0ZWRBdHRySW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLnNwbGljZShkZWxldGVkQXR0ckluZGV4LCAxKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBdHRyaWJ1dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEF0dHJpYnV0ZVtpXS5OYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZGVsZXRlZEF0dHJJbmRleDogbnVtYmVyID0gdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBdHRyaWJ1dGUpO1xyXG4gICAgICBpZiAoZGVsZXRlZEF0dHJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLnNwbGljZShkZWxldGVkQXR0ckluZGV4LCAxKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBdHRyaWJ1dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRBdHRyaWJ1dGVbaV0uTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmNyeXB0ZWRDaGFuZ2UoaXNDaGVja2VkLCBvcHRpb24sIGlzQWRkKSB7XHJcbiAgICBsZXQgdmFsdWVBdHRyaWJ1dGVJbmRpY2F0b3IgPSBpc0FkZCA/IFwiQWRkQXR0cmlidXRlVmFsdWVcIiA6IFwiRWRpdEF0dHJpYnV0ZVZhbHVlXCI7XHJcbiAgICBsZXQgcmVhbHRlZFZhbHVlT3B0aW9uID0gb3B0aW9uLmZpbmQob2JqID0+IHtcclxuICAgICAgcmV0dXJuIG9iai5OYW1lLnN0YXJ0c1dpdGgodmFsdWVBdHRyaWJ1dGVJbmRpY2F0b3IpXHJcbiAgICB9KTtcclxuICAgIGlmIChpc0NoZWNrZWQpXHJcbiAgICAgIHJlYWx0ZWRWYWx1ZU9wdGlvbi5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgZWxzZVxyXG4gICAgICByZWFsdGVkVmFsdWVPcHRpb24uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvL0FkZCBwcm92aWRlclxyXG4gIHNob3dBZGRQcm92aWRlck1vZGFsKGFkZFByb3ZpZGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuT3JnYW5pemF0aW9uc0xpc3QgPSByZXN1bHRPYmoub3JnYW5pemF0aW9ucztcclxuICAgICAgdGhpcy5UeXBlc0xpc3QgPSByZXN1bHRPYmoucHJvdmlkZXJUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5Jc0F0dHJpYnV0ZXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRQcm92aWRlckZvcm1cclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFByb3ZpZGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZFByb3ZpZGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIHRoaXMuQWRkTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuTmFtZSA9IFwiQWRkTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuTGFiZWxLZXkgPSBcIlByb3ZpZGVyTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbiA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5OYW1lID0gXCJBZGREZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLkxhYmVsS2V5ID0gXCJQcm92aWRlckRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uVmFsdWUgPSBudWxsO1xyXG5cclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuTmFtZSA9IFwiQWRkT3JnYW5pemF0aW9uT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5MYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCJcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLk9yZ2FuaXphdGlvbnNMaXN0XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLk5hbWUgPSBcIkFkZFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiUHJvdmlkZXJUeXBlXCJcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5UeXBlc0xpc3RcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oYWRkUHJvdmlkZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gICAgXHJcblxyXG4gIH1cclxuICBnZXRBZGRQcm92aWRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFByb3ZpZGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBBZGRNb2RlbDogUHJvdmlkZXJNb2RlbCA9IG5ldyBQcm92aWRlck1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Qcm92aWRlck5hbWUgPSBSZXN1bHRNb2RlbC5BZGROYW1lO1xyXG4gICAgQWRkTW9kZWwuRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5BZGREZXNjcmlwdGlvbjtcclxuICAgIGxldCBvcmdBcnIgPSBSZXN1bHRNb2RlbC5BZGRPcmdhbml6YXRpb25PcHRpb25zO1xyXG4gICAgbGV0IG9yZ2FuaXphdGlvbklEOiBudW1iZXI7XHJcbiAgICBvcmdhbml6YXRpb25JRCA9IE51bWJlcihvcmdBcnIpO1xyXG5cclxuICAgIEFkZE1vZGVsLk9yZ2FuaXphdGlvbklEID0gUmVzdWx0TW9kZWwuQWRkT3JnYW5pemF0aW9uT3B0aW9ucyAhPSBudWxsID8gb3JnYW5pemF0aW9uSUQgOiBudWxsO1xyXG4gICAgQWRkTW9kZWwuUHJvdmlkZXJUeXBlSXRlbUlEID0gdGhpcy5BZGRQcm92aWRlclR5cGVJdGVtSUQ7XHJcbiAgICBBZGRNb2RlbC5UeXBlRnVsbE5hbWUgPSBSZXN1bHRNb2RlbC5BZGRUeXBlT3B0aW9ucztcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBhZGRBdHRyaWJ1dGVOYW1lID0gUmVzdWx0TW9kZWxbXCJBZGRBdHRyaWJ1dGVOYW1lXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZEF0dHJpYnV0ZU5hbWUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBhZGRBdHRyaWJ1dGVWYWx1ZSA9IFJlc3VsdE1vZGVsW1wiQWRkQXR0cmlidXRlVmFsdWVcIiArIGpdO1xyXG4gICAgICBsZXQgYWRkQXR0cmlidXRlRW5jcnlwdGVkID0gUmVzdWx0TW9kZWxbXCJBZGRBdHRyaWJ1dGVFbmNyeXB0ZWRcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IHByb3ZpZGVyQXR0cjogUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCA9IG5ldyBQcm92aWRlckF0dHJpYnV0ZU1vZGVsKCk7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5OYW1lID0gYWRkQXR0cmlidXRlTmFtZTtcclxuICAgICAgcHJvdmlkZXJBdHRyLlZhbHVlID0gYWRkQXR0cmlidXRlVmFsdWU7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5Jc0VuY3J5cHRlZCA9IGFkZEF0dHJpYnV0ZUVuY3J5cHRlZDtcclxuICAgICAgQWRkTW9kZWwuUHJvdmlkZXJBdHRyaWJ1dGVzLnB1c2gocHJvdmlkZXJBdHRyKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRQcm92aWRlckZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5BZGRQcm92aWRlcihBZGRNb2RlbClcclxuICB9XHJcblxyXG4gLy9FZGl0IHByb3ZpZGVyXHJcbiAgc2hvd0VkaXRQcm92aWRlck1vZGFsKHByb3ZpZGVySUQ6IG51bWJlciwgcHJvdmlkZXJJREVuYzogc3RyaW5nLCBlZGl0UHJvdmlkZXJNb2RhbCkge1xyXG4gICAgdGhpcy5Qcm92aWRlcklkID0gcHJvdmlkZXJJRDtcclxuXHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZXRFZGl0UHJvdmlkZXJEYXRhKHByb3ZpZGVySURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgcHJvdmlkZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5UeXBlc0xpc3QgPSBsaXN0cy5wcm92aWRlclR5cGVzO1xyXG5cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRQcm92aWRlckZvcm1cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UHJvdmlkZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRQcm92aWRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5OYW1lID0gXCJFZGl0TmFtZVwiOyAgXHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTGFiZWxLZXkgPSBcIlByb3ZpZGVyTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5WYWx1ZSA9IHByb3ZpZGVyLnByb3ZpZGVyTmFtZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5OYW1lID0gXCJFZGl0RGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gcHJvdmlkZXIuZGVzY3JpcHRpb247XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlclR5cGUgPSB0aGlzLlR5cGVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IHByb3ZpZGVyLnR5cGVGdWxsTmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcblxyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuTmFtZSA9IFwiRWRpdFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuTGFiZWxLZXkgPSBcIlByb3ZpZGVyVHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLlR5cGVzTGlzdFxyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFByb3ZpZGVyVHlwZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRCA9IHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1JRDtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJPcmdhbml6YXRpb25JRCA9IHByb3ZpZGVyLm9yZ2FuaXphdGlvbklEO1xyXG5cclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMocHJvdmlkZXIucHJvdmlkZXJBdHRyaWJ1dGVzLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBlZGl0QXR0cmlidXRlc1Jlc3VsdFswXTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSBlZGl0QXR0cmlidXRlc1Jlc3VsdFsxXTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0UHJvdmlkZXJNb2RhbCk7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcbiAgZ2V0RWRpdFByb3ZpZGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFByb3ZpZGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgUHJvdmlkZXJNb2RlbCgpO1xyXG5cclxuICAgIEVkaXRNb2RlbC5JRCA9IE51bWJlcih0aGlzLlByb3ZpZGVySWQpO1xyXG4gICAgRWRpdE1vZGVsLlByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkVkaXROYW1lOyAvLygjIzEpXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5FZGl0RGVzY3JpcHRpb25cclxuICAgIEVkaXRNb2RlbC5UeXBlRnVsbE5hbWUgPSBSZXN1bHRNb2RlbC5FZGl0VHlwZU9wdGlvbnM7XHJcbiAgICBFZGl0TW9kZWwuUHJvdmlkZXJUeXBlSXRlbUlEID0gdGhpcy5FZGl0UHJvdmlkZXJUeXBlSXRlbUlEO1xyXG4gICAgRWRpdE1vZGVsLk9yZ2FuaXphdGlvbklEID0gdGhpcy5FZGl0UHJvdmlkZXJPcmdhbml6YXRpb25JRDtcclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVOYW1lID0gUmVzdWx0TW9kZWxbXCJFZGl0QXR0cmlidXRlTmFtZVwiICsgal07XHJcbiAgICAgIC8vIGlmIChpc1VuZGVmaW5lZChlZGl0QXR0cmlidXRlTmFtZSkpXHJcbiAgICAgIC8vICAgY29udGludWU7XHJcbiAgICAgIGxldCBlZGl0QXR0cmlidXRlVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkVkaXRBdHRyaWJ1dGVWYWx1ZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0QXR0cmlidXRlRW5jcnlwdGVkID0gUmVzdWx0TW9kZWxbXCJFZGl0QXR0cmlidXRlRW5jcnlwdGVkXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBwcm92aWRlckF0dHI6IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwgPSBuZXcgUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCgpO1xyXG4gICAgICBwcm92aWRlckF0dHIuTmFtZSA9IGVkaXRBdHRyaWJ1dGVOYW1lO1xyXG4gICAgICBwcm92aWRlckF0dHIuVmFsdWUgPSBlZGl0QXR0cmlidXRlVmFsdWU7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5Jc0VuY3J5cHRlZCA9IGVkaXRBdHRyaWJ1dGVFbmNyeXB0ZWQ7XHJcbiAgICAgIEVkaXRNb2RlbC5Qcm92aWRlckF0dHJpYnV0ZXMucHVzaChwcm92aWRlckF0dHIpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRQcm92aWRlckZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Qcm92aWRlclNlcnZpY2UuRWRpdFByb3ZpZGVyKEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gICAvL0RlbGV0ZSBwcm92aWRlclxyXG4gIHNob3dEZWxldGVQcm92aWRlck1vZGFsKHByb3ZpZGVySUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVQcm92aWRlcklkID0gcHJvdmlkZXJJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVQcm92aWRlcklkKTtcclxuXHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVQcm92aWRlcjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVByb3ZpZGVyID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkRlbGV0ZVByb3ZpZGVyKGlkKTtcclxuICB9XHJcblxyXG4gIC8vRGVmYXVsdCBwcm92aWRlclxyXG4gIHNob3dEZWZhdWx0UHJvdmlkZXJNb2RhbChkZWZhdWx0UHJvdmlkZXJNb2RhbCkge1xyXG4gICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJzID0gW107XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZXREZWZhdWx0UHJvdmlkZXJzKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IGxpc3QgPSByZXN1bHQgYXMgYW55O1xyXG5cclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybVxyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldERlZmF1bHRQcm92aWRlck1vZGVsO1xyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RGVmYXVsdFByb3ZpZGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcHJvdmlkZXI6IGFueSA9IGxpc3RbaV07XHJcblxyXG4gICAgICAgIGxldCBQcm92aWRlck9wdGlvbiA9IG5ldyBSYWRpb0J1dHRvbk9wdGlvbnMoKTtcclxuICAgICAgICBQcm92aWRlck9wdGlvbi5OYW1lID0gXCJwcm92aWRlck9wdGlvbl9cIiArIHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1JRDtcclxuICAgICAgICBQcm92aWRlck9wdGlvbi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgIGxldCBpdGVtczogUmFkaW9CdXR0b25JdGVtW10gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHByb3ZpZGVyLnByb3ZpZGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHByb3ZpZGVySXRlbSA9IHByb3ZpZGVyLnByb3ZpZGVyc1tqXTtcclxuICAgICAgICAgIGxldCBpdGVtID0gbmV3IFJhZGlvQnV0dG9uSXRlbSgpO1xyXG4gICAgICAgICAgaXRlbS5UZXh0ID0gcHJvdmlkZXJJdGVtLnRleHQ7XHJcbiAgICAgICAgICBpdGVtLlZhbHVlID0gcHJvdmlkZXJJdGVtLnZhbHVlO1xyXG4gICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIFByb3ZpZGVyT3B0aW9uLkl0ZW1zPWl0ZW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHNlbGVjdGVkUHJvdmlkZXIgPSBwcm92aWRlci5wcm92aWRlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLnNlbGVjdGVkID09IHRydWU7IH0pWzBdO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLlZhbHVlID0ge1xyXG4gICAgICAgICAgVGV4dDogc2VsZWN0ZWRQcm92aWRlci50ZXh0LFxyXG4gICAgICAgICAgVmFsdWU6IHNlbGVjdGVkUHJvdmlkZXIudmFsdWVcclxuICAgICAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgICAgIGxldCBkZWZQcm92aWRlciA9IHtcclxuICAgICAgICAgIE5hbWU6IHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1OYW1lLFxyXG4gICAgICAgICAgSUQ6IHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1JRCxcclxuICAgICAgICAgIFByb3ZpZGVyc09wdGlvbjogUHJvdmlkZXJPcHRpb25cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVycy5wdXNoKGRlZlByb3ZpZGVyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGRlZmF1bHRQcm92aWRlck1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXREZWZhdWx0UHJvdmlkZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IGRlZmF1bHRQcm92aWRlcnNNb2RlbDogRGVmYXVsdFByb3ZpZGVyTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5EZWZhdWx0UHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwcm92aWRlcklEID0gdGhpcy5EZWZhdWx0UHJvdmlkZXJzW2ldLklEO1xyXG4gICAgICBsZXQgc2VsZWN0ZWREZWZQcm92aWRlcklEID0gUmVzdWx0TW9kZWxbXCJwcm92aWRlck9wdGlvbl9cIiArIHByb3ZpZGVySURdO1xyXG4gICAgICBsZXQgZGVmUHJvdmlkZU1vZGVsOiBEZWZhdWx0UHJvdmlkZXJNb2RlbCA9IHtcclxuICAgICAgICBQcm92aWRlclR5cGVJdGVtSUQ6IHByb3ZpZGVySUQsXHJcbiAgICAgICAgU2VsZWN0ZWRQcm92aWRlcklEOiBOdW1iZXIoc2VsZWN0ZWREZWZQcm92aWRlcklEKSxcclxuICAgICAgICBQcm92aWRlclR5cGVJdGVtTmFtZTogXCJcIixcclxuICAgICAgICBQcm92aWRlcnM6IFtdXHJcbiAgICAgIH07XHJcbiAgICAgIGRlZmF1bHRQcm92aWRlcnNNb2RlbC5wdXNoKGRlZlByb3ZpZGVNb2RlbCk7XHJcblxyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGRlZmF1bHRQcm92aWRlcnNNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRQcm92aWRlckZ1bmN0aW9uID0gKERlZmF1bHRQcm92aWRlck1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5TdWJtaXREZWZhdWx0UHJvdmlkZXJzKERlZmF1bHRQcm92aWRlck1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9HZW5lcmF0ZSBwcm92aWRlciBqc29uXHJcbiAgZ2VuZXJhdGVQcm92aWRlckpzb24oKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZW5lcmF0ZVByb3ZpZGVySnNvbigpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBGaWxlRFRPID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW0ZpbGVEVE9dLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiIH0pO1xyXG4gICAgICBsZXQgZmlsZU5hbWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlcnNcIikgKyBcIi5qc29uXCI7XHJcbiAgICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IChPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBTaG93UGFnZUNvbnRlbnQ9PXRydWU/J2Jsb2NrJzonbm9uZSd9XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRMaXN0cygpXCIgbmdiRHJvcGRvd25Ub2dnbGUgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGlkPVwiRmlsdGVyc0Ryb3Bkb3duXCIgdGl0bGU9XCJGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWx0ZXJcIil9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiIGNsYXNzPVwiIGZpbHRlci1jb250YWluZXIgbWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1ncmF5LTgwMCBtZW51LXN0YXRlLWJnLWxpZ2h0LXByaW1hcnkgIHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgXCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC03IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI3Byb3ZpZGVyVHlwZXNEREwgW29wdGlvbnNdPVwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiIFtncm91cF09XCJQcm92aWRlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjc29ydGluZ0ZpbHRlckRETCBbb3B0aW9uc109XCJzb3J0aW5nRmlsdGVyT3B0aW9uXCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBwdi1yZXNldCBidG4tc21cIiBkPVwiYXBwbHlGaWx0ZXJzQnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b24gaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJnZW5lcmF0ZVByb3ZpZGVySnNvbigpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgYm5zaWdodHMtYnRuLWV4cG9ydFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLWV4cG9ydCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZVByb3ZpZGVySnNvblwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT0ndXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKScgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgXCIgKGNsaWNrKT1cInNob3dEZWZhdWx0UHJvdmlkZXJNb2RhbChEZWZhdWx0UHJvdmlkZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaGFuZC1wb2ludGVyIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPSd1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpJyBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd0FkZFByb3ZpZGVyTW9kYWwoQWRkUHJvdmlkZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+ICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gZW5kOjpIZWFkZXIgLS0+XHJcbiAgICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdGF0dXNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlZmF1bHRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiAqbmdGb3I9XCJsZXQgcHJvdmlkZXJHcm91cCBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlckdyb3VwLnByb3ZpZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYXJrXCI+e3twcm92aWRlci5wcm92aWRlck5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt7cHJvdmlkZXIuZGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCIgKm5nSWY9XCJwcm92aWRlci5pc1J1bm5pbmc7ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVubmluZ1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcl9jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdG9wcGVkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIGZ3LWJvbGRlclwiICpuZ0lmPVwicHJvdmlkZXIuaXNEZWZhdWx0O2Vsc2UgZGVmYXVsdF9ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlllc1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0X25vPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOb1wiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dFZGl0UHJvdmlkZXJNb2RhbChwcm92aWRlci5pZCxwcm92aWRlci5pZEVuY3J5cHRlZCAsIEVkaXRQcm92aWRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZVByb3ZpZGVyTW9kYWwocHJvdmlkZXIuaWRFbmNyeXB0ZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJwcm92aWRlckdyb3VwLnByb3ZpZGVycy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8dGJvZHkgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UHJvdmlkZXJMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiUHJvdmlkZXJQYWdpbmdcIiBbZ3JvdXBdPVwiUHJvdmlkZXJGb3JtXCIgI1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tZW5kOjpQcm92aWRlcnMgbGlzdC0tPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gQWRkIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZFByb3ZpZGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRQcm92aWRlckZvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZE5hbWVcIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJBZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkT3JnYW5pemF0aW9uT3B0aW9uc1wiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFR5cGVPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJzZXRBZGRQcm92aWRlckF0dHJpYnV0ZXMoJGV2ZW50KVwiPlxyXG4gICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiSXNBdHRyaWJ1dGVzTG9hZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZU5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyQXR0cmlidXRlVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuY3J5cHRlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCIgKE9uQ2hhbmdlKT1cImVuY3J5cHRlZENoYW5nZSgkZXZlbnQsb3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVBdHRyaWJ1dGUob3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VQcm92aWRlck1vZGFsIGlkPVwiQ2xvc2VBZGRQcm92aWRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjwhLS0gRWRpdCBtb2RlbCAtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0UHJvdmlkZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0UHJvdmlkZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0TmFtZVwiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRUeXBlT3B0aW9uc1wiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCIgKE9uQ2hhbmdlKT1cInNldEVkaXRQcm92aWRlckF0dHJpYnV0ZXMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyQXR0cmlidXRlTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJBdHRyaWJ1dGVWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5jcnlwdGVkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIiAoT25DaGFuZ2UpPVwiZW5jcnlwdGVkQ2hhbmdlKCRldmVudCxvcHRpb24sdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZUF0dHJpYnV0ZShvcHRpb24sdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0UHJvdmlkZXJNb2RhbCBpZD1cIkNsb3NlRWRpdFByb3ZpZGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tZGVsZXRlIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLURlZmF1bHQgUHJvdmlkZXIgIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRGVmYXVsdFByb3ZpZGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJEZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBkZWZQcm92aWRlciBvZiBEZWZhdWx0UHJvdmlkZXJzO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1tdXRlZCBtYi00IGZ3LWJvbGRlc3RcIj57e2RlZlByb3ZpZGVyLk5hbWV9fTwvaDM+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIHZhbHVlPVwie3tkZWZQcm92aWRlci5JRH19XCIgLz5cclxuICAgICAgICAgIDxCQlNGLVJhZGlvQnV0dG9uIFtvcHRpb25zXT1cImRlZlByb3ZpZGVyLlByb3ZpZGVyc09wdGlvblwiIFtncm91cF09XCJEZWZhdWx0UHJvdmlkZXJGb3JtXCI+PC9CQlNGLVJhZGlvQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZURlZmF1bHRQcm92aWRlck1vZGFsIGlkPVwiQ2xvc2VEZWZhdWx0UHJvdmlkZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzUSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxNQUFNLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRbkMsTUFBTSxPQUFPLGlCQUFpQjtJQXNFNUIsWUFFVSxlQUFnQyxFQUNoQyxZQUFzQixFQUN0QixXQUF3QixFQUN4QixvQkFBMEMsRUFDM0MsY0FBOEIsRUFDN0IsZUFBZ0MsRUFDaEMscUJBQTRDO1FBTjVDLG9CQUFlLEdBQWYsZUFB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QUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQ1Usd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBQYWdpbmdPcHRpb25zLCBSYWRpb0J1dHRvbk9wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIFJhZGlvQnV0dG9uSXRlbSwgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL3Byb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm92aWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9Qcm92aWRlck1vZGVsJztcclxuaW1wb3J0IHsgUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCc7XHJcbmltcG9ydCB7IERlZmF1bHRQcm92aWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9EZWZhdWx0UHJvdmlkZXJNb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgc2F2ZUFzfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm92aWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3ZpZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vUHJvdmlkZXIvXCI7XHJcblxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHByb3ZpZGVyVHlwZXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc29ydGluZ0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNvcnRpbmdGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQcm92aWRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBQcm92aWRlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBQcm92aWRlclR5cGVzRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBTb3J0aW5nRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBUeXBlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9hZGVkUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIE9yZ2FuaXphdGlvbnNMaXN0ID0gW107XHJcbiAgQFZpZXdDaGlsZCgncHJvdmlkZXJUeXBlc0RETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm92aWRlclR5cGVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3NvcnRpbmdGaWx0ZXJEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgc29ydGluZ0ZpbHRlckRETDogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIC8vUHJvdmlkZXIgYXR0cmlidXRlc1xyXG4gIFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ6bnVtYmVyPTA7XHJcbiAgSXNBdHRyaWJ1dGVzTG9hZGVkOmJvb2xlYW49ZmFsc2U7XHJcblxyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZFByb3ZpZGVyRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgQWRkTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgQWRkRGVzY3JpcHRpb246IFRleHRBcmVhT3B0aW9ucztcclxuICBBZGRPcmdhbml6YXRpb25PcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkVHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRQcm92aWRlclR5cGVJdGVtSUQ6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRQcm92aWRlckZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIEVkaXROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0RGVzY3JpcHRpb246IFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0VHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0UHJvdmlkZXJUeXBlSXRlbUlEOiBudW1iZXIgPSAwO1xyXG4gIEVkaXRQcm92aWRlck9yZ2FuaXphdGlvbklEOiBudW1iZXI9MDtcclxuICBFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgUHJvdmlkZXJJZDogbnVtYmVyO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVQcm92aWRlcklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9TZWxlY3QgRGVmYXVsdCBQcm92aWRlcnNcclxuICBEZWZhdWx0UHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgRGVmYXVsdFByb3ZpZGVyczogYW55W10gPSBbXTtcclxuICBEZWZhdWx0UHJvdmlkZXJzUmFkaW9CdG5PcHRpb25zOiBSYWRpb0J1dHRvbk9wdGlvbnNbXTtcclxuXHJcbiAgY29uc3RydWN0b3JcclxuICAgIChcclxuICAgIHByaXZhdGUgUHJvdmlkZXJTZXJ2aWNlOiBQcm92aWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VydmljZVByb3ZpZGVyc1wiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icz1bXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIikgLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgLy9vbiBsYW5nIGNoYW5nZWRcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PWZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG5cclxuICAgIC8vaW5pdGlhbGl6ZSBwYWdlXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgZmlsdGVycyBhbmQgcGFnaW5nXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgLy8gUHJvdmlkZXIgVHlwZXMgRmlsdGVyIEluaXQgICBcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbi5OYW1lID0gXCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCJcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbi5MYWJlbEtleSA9IFwiUHJvdmlkZXJUeXBlc1wiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uUGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZXJ2aWNlUHJvdmlkZXJUeXBlXCIpO1xyXG5cclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCJcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJ0eXBlc1wiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLk5hbWUgPSBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIlxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLkxhYmVsS2V5ID0gXCJTb3J0XCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic29ydGluZ0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic29ydElEXCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkRyb3Bkb3duTGlzdDtcclxuXHJcblxyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkFjdGlvblBvc3RVUkwgPSAgdGhpcy5BcGlVcmwgKyAnR2V0UHJvdmlkZXJzQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl07XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb25cIiwgXCJzb3J0aW5nRmlsdGVyT3B0aW9uXCJdO1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIsIHRoaXMuc29ydGluZ0ZpbHRlcl1cclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTtcclxuXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vTG9hZCBmaWx0ZXJzIGxpc3RzXHJcbiAgbG9hZExpc3RzKCkge1xyXG4gICAgaWYgKCF0aGlzLklzRmlsdGVyRGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5Mb2FkZHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgICAvL3RoaXMuT3JnYW5pemF0aW9uc0xpc3QgPSBEcm9wZG93bkxpc3RzLm9yZ2FuaXphdGlvbnM7XHJcbiAgICAgICAgLy90aGlzLlR5cGVzTGlzdCA9IERyb3Bkb3duTGlzdHMucHJvdmlkZXJUeXBlcztcclxuICAgICAgICB0aGlzLlByb3ZpZGVyVHlwZXNGaWx0ZXJMaXN0ID0gRHJvcGRvd25MaXN0cy5wcm92aWRlclR5cGVzRmlsdGVyO1xyXG4gICAgICAgIHRoaXMuU29ydGluZ0ZpbHRlckxpc3QgPSBEcm9wZG93bkxpc3RzLnNvcnRpbmdGaWx0ZXJMaXN0O1xyXG5cclxuICAgICAgICBsZXQgcHJvdmlkZXJUeXBlc0VsZW1lbnQgPSB0aGlzLnByb3ZpZGVyVHlwZXNEREwgYXMgYW55O1xyXG4gICAgICAgIGxldCBzb3J0aW5nRmlsdGVyRWxlbWVudCA9IHRoaXMuc29ydGluZ0ZpbHRlckRETCBhcyBhbnk7XHJcblxyXG5cclxuICAgICAgICBwcm92aWRlclR5cGVzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMuUHJvdmlkZXJUeXBlc0ZpbHRlckxpc3QpO1xyXG5cclxuICAgICAgICBzb3J0aW5nRmlsdGVyRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMuU29ydGluZ0ZpbHRlckxpc3QpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldFByb3ZpZGVyTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudD10cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgfVxyXG4gIHJlc2V0RmlsdGVycygpIHtcclxuICAgIHRoaXMuUHJvdmlkZXJGb3JtLmNvbnRyb2xzW1wicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiXS5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInNvcnRpbmdGaWx0ZXJPcHRpb25cIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Qcm92aWRlckZvcm0uY29udHJvbHNbXCJzZWFyY2hUZXh0Qm94XCJdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICB9XHJcbiAgc2VhcmNoQ2xpZW50U2lkZShzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQuZmlsdGVyKFxyXG4gICAgICAgIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS5wcm92aWRlck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLlByb3ZpZGVyUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy9BdHRyaWJ1dGVzRnVuY3Rpb25cclxuICBzZXRBZGRQcm92aWRlckF0dHJpYnV0ZXModHlwZUZ1bGxOYW1lKXtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldFByb3ZpZGVyQXR0cmlidXRlcyh0eXBlRnVsbE5hbWUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAvL1NldCBQcm92aWRlciB0eXBlIGlkIG9uIHR5cGUgY2hhbmdlXHJcbiAgICAgIHRoaXMuTG9hZGVkUHJvdmlkZXJzID0gcmVzdWx0T2JqLmxvYWRlZFByb3ZpZGVycztcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvdmlkZXJUeXBlID0gdGhpcy5Mb2FkZWRQcm92aWRlcnMuZmluZChvYmogPT4ge1xyXG4gICAgICAgIHJldHVybiBvYmouZnVsbE5hbWUgPT09IHR5cGVGdWxsTmFtZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5BZGRQcm92aWRlclR5cGVJdGVtSUQgPSBzZWxlY3RlZFByb3ZpZGVyVHlwZS5wcm92aWRlclR5cGU7XHJcblxyXG4gICAgICAvL1NldCBhdHRyaWJ1dGVzIGFuZCBjb3VudFxyXG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gW107XHJcbiAgICAgIGxldCBkYXRhOiBhbnkgPSB0aGlzLmdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMoYXR0cmlidXRlcywgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSBkYXRhWzFdO1xyXG4gICAgICB0aGlzLklzQXR0cmlidXRlc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbn1cclxuXHJcbiAgc2V0RWRpdFByb3ZpZGVyQXR0cmlidXRlcyh0eXBlRnVsbE5hbWUpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2V0UHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vU2V0IFByb3ZpZGVyIHR5cGUgaWQgb24gdHlwZSBjaGFuZ2VcclxuICAgICAgdGhpcy5Mb2FkZWRQcm92aWRlcnMgPSByZXN1bHRPYmoubG9hZGVkUHJvdmlkZXJzO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlclR5cGUgPSB0aGlzLkxvYWRlZFByb3ZpZGVycy5maW5kKG9iaiA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5mdWxsTmFtZSA9PT0gdHlwZUZ1bGxOYW1lXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlclR5cGVJdGVtSUQgPSBzZWxlY3RlZFByb3ZpZGVyVHlwZS5wcm92aWRlclR5cGU7XHJcblxyXG4gICAgICAvL1NldCBhdHRyaWJ1dGVzIGFuZCBjb3VudFxyXG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IFtdO1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zKGF0dHJpYnV0ZXMsIGZhbHNlKTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gZGF0YVsxXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMocHJvdmlkZXJBdHRyaWJ1dGVzOiBhbnlbXSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBhdHRyaWJ1dGVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBhdHRyaWJ1dGVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgYWN0aW9uSW5kaWNhdGU6IHN0cmluZyA9IGlzQWRkID8gXCJBZGRcIiA6IFwiRWRpdFwiO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm92aWRlckF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgIGxldCBvYmplY3RBdHRyaWJ1dGVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBsZXQgaXNFbmNyeXB0ZWQ6IGJvb2xlYW4gPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0uaXNFbmNyeXB0ZWQ7XHJcblxyXG4gICAgICBsZXQgQXR0cmlidXRlTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiQXR0cmlidXRlTmFtZVwiICsgaTtcclxuICAgICAgQXR0cmlidXRlTmFtZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQXR0cmlidXRlTmFtZS5WYWx1ZSA9IHByb3ZpZGVyQXR0cmlidXRlc1tpXS5uYW1lO1xyXG5cclxuXHJcbiAgICAgIGxldCBBdHRyaWJ1dGVWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkF0dHJpYnV0ZVZhbHVlXCIgKyBpO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5UeXBlID0gaXNFbmNyeXB0ZWQgPyBJbnB1dFR5cGUuUGFzc3dvcmQgOiBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuVmFsdWUgPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0udmFsdWU7XHJcbiAgICAgIEF0dHJpYnV0ZVZhbHVlLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEF0dHJpYnV0ZUVuY3J5cHRlZCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgQXR0cmlidXRlRW5jcnlwdGVkLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiQXR0cmlidXRlRW5jcnlwdGVkXCIgKyBpO1xyXG4gICAgICBBdHRyaWJ1dGVFbmNyeXB0ZWQuVmFsdWUgPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0uaXNFbmNyeXB0ZWQ7XHJcblxyXG4gICAgICBvYmplY3RBdHRyaWJ1dGVPcHRpb25zLnB1c2goQXR0cmlidXRlTmFtZSwgQXR0cmlidXRlVmFsdWUsIEF0dHJpYnV0ZUVuY3J5cHRlZCk7XHJcbiAgICAgIGF0dHJpYnV0ZXNPcHRpb25zLnB1c2gob2JqZWN0QXR0cmlidXRlT3B0aW9ucyk7XHJcbiAgICAgIGF0dHJpYnV0ZXNDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbYXR0cmlidXRlc09wdGlvbnMsIGF0dHJpYnV0ZXNDb3VudF07XHJcbiAgfVxyXG5cclxuICBkZWxldGVBdHRyaWJ1dGUoZGVsZXRlZEF0dHJpYnV0ZTogYW55LCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgbGV0IGRlbGV0ZWRBdHRySW5kZXg6IG51bWJlciA9IHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBdHRyaWJ1dGUpO1xyXG4gICAgICBpZiAoZGVsZXRlZEF0dHJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRBdHRySW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEF0dHJpYnV0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkQXR0cmlidXRlW2ldLk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBkZWxldGVkQXR0ckluZGV4OiBudW1iZXIgPSB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLmluZGV4T2YoZGVsZXRlZEF0dHJpYnV0ZSk7XHJcbiAgICAgIGlmIChkZWxldGVkQXR0ckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRBdHRySW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEF0dHJpYnV0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEF0dHJpYnV0ZVtpXS5OYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuY3J5cHRlZENoYW5nZShpc0NoZWNrZWQsIG9wdGlvbiwgaXNBZGQpIHtcclxuICAgIGxldCB2YWx1ZUF0dHJpYnV0ZUluZGljYXRvciA9IGlzQWRkID8gXCJBZGRBdHRyaWJ1dGVWYWx1ZVwiIDogXCJFZGl0QXR0cmlidXRlVmFsdWVcIjtcclxuICAgIGxldCByZWFsdGVkVmFsdWVPcHRpb24gPSBvcHRpb24uZmluZChvYmogPT4ge1xyXG4gICAgICByZXR1cm4gb2JqLk5hbWUuc3RhcnRzV2l0aCh2YWx1ZUF0dHJpYnV0ZUluZGljYXRvcilcclxuICAgIH0pO1xyXG4gICAgaWYgKGlzQ2hlY2tlZClcclxuICAgICAgcmVhbHRlZFZhbHVlT3B0aW9uLlR5cGUgPSBJbnB1dFR5cGUuUGFzc3dvcmQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWx0ZWRWYWx1ZU9wdGlvbi5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIC8vQWRkIHByb3ZpZGVyXHJcbiAgc2hvd0FkZFByb3ZpZGVyTW9kYWwoYWRkUHJvdmlkZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5Pcmdhbml6YXRpb25zTGlzdCA9IHJlc3VsdE9iai5vcmdhbml6YXRpb25zO1xyXG4gICAgICB0aGlzLlR5cGVzTGlzdCA9IHJlc3VsdE9iai5wcm92aWRlclR5cGVzO1xyXG5cclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLklzQXR0cmlidXRlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFByb3ZpZGVyRm9ybVxyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkUHJvdmlkZXJNb2RlbDtcclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkUHJvdmlkZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgICAgdGhpcy5BZGROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5OYW1lID0gXCJBZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5MYWJlbEtleSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLk5hbWUgPSBcIkFkZERlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTGFiZWxLZXkgPSBcIlByb3ZpZGVyRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5OYW1lID0gXCJBZGRPcmdhbml6YXRpb25PcHRpb25zXCJcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLkxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIlxyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuT3JnYW5pemF0aW9uc0xpc3RcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuTmFtZSA9IFwiQWRkVHlwZU9wdGlvbnNcIlxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLkxhYmVsS2V5ID0gXCJQcm92aWRlclR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLlR5cGVzTGlzdFxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihhZGRQcm92aWRlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuXHJcbiAgfVxyXG4gIGdldEFkZFByb3ZpZGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkUHJvdmlkZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBQcm92aWRlck1vZGVsID0gbmV3IFByb3ZpZGVyTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkFkZE5hbWU7XHJcbiAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbiA9IFJlc3VsdE1vZGVsLkFkZERlc2NyaXB0aW9uO1xyXG4gICAgbGV0IG9yZ0FyciA9IFJlc3VsdE1vZGVsLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnM7XHJcbiAgICBsZXQgb3JnYW5pemF0aW9uSUQ6IG51bWJlcjtcclxuICAgIG9yZ2FuaXphdGlvbklEID0gTnVtYmVyKG9yZ0Fycik7XHJcblxyXG4gICAgQWRkTW9kZWwuT3JnYW5pemF0aW9uSUQgPSBSZXN1bHRNb2RlbC5BZGRPcmdhbml6YXRpb25PcHRpb25zICE9IG51bGwgPyBvcmdhbml6YXRpb25JRCA6IG51bGw7XHJcbiAgICBBZGRNb2RlbC5Qcm92aWRlclR5cGVJdGVtSUQgPSB0aGlzLkFkZFByb3ZpZGVyVHlwZUl0ZW1JRDtcclxuICAgIEFkZE1vZGVsLlR5cGVGdWxsTmFtZSA9IFJlc3VsdE1vZGVsLkFkZFR5cGVPcHRpb25zO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGFkZEF0dHJpYnV0ZU5hbWUgPSBSZXN1bHRNb2RlbFtcIkFkZEF0dHJpYnV0ZU5hbWVcIiArIGpdO1xyXG4gICAgICBpZiAoYWRkQXR0cmlidXRlTmFtZSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IGFkZEF0dHJpYnV0ZVZhbHVlID0gUmVzdWx0TW9kZWxbXCJBZGRBdHRyaWJ1dGVWYWx1ZVwiICsgal07XHJcbiAgICAgIGxldCBhZGRBdHRyaWJ1dGVFbmNyeXB0ZWQgPSBSZXN1bHRNb2RlbFtcIkFkZEF0dHJpYnV0ZUVuY3J5cHRlZFwiICsgal07XHJcblxyXG4gICAgICBsZXQgcHJvdmlkZXJBdHRyOiBQcm92aWRlckF0dHJpYnV0ZU1vZGVsID0gbmV3IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwoKTtcclxuICAgICAgcHJvdmlkZXJBdHRyLk5hbWUgPSBhZGRBdHRyaWJ1dGVOYW1lO1xyXG4gICAgICBwcm92aWRlckF0dHIuVmFsdWUgPSBhZGRBdHRyaWJ1dGVWYWx1ZTtcclxuICAgICAgcHJvdmlkZXJBdHRyLklzRW5jcnlwdGVkID0gYWRkQXR0cmlidXRlRW5jcnlwdGVkO1xyXG4gICAgICBBZGRNb2RlbC5Qcm92aWRlckF0dHJpYnV0ZXMucHVzaChwcm92aWRlckF0dHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZFByb3ZpZGVyRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkFkZFByb3ZpZGVyKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcbiAvL0VkaXQgcHJvdmlkZXJcclxuICBzaG93RWRpdFByb3ZpZGVyTW9kYWwocHJvdmlkZXJJRDogbnVtYmVyLCBwcm92aWRlcklERW5jOiBzdHJpbmcsIGVkaXRQcm92aWRlck1vZGFsKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVySWQgPSBwcm92aWRlcklEO1xyXG5cclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldEVkaXRQcm92aWRlckRhdGEocHJvdmlkZXJJREVuYykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIGxldCBwcm92aWRlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlR5cGVzTGlzdCA9IGxpc3RzLnByb3ZpZGVyVHlwZXM7XHJcblxyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdFByb3ZpZGVyRm9ybVxyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRQcm92aWRlck1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFByb3ZpZGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLk5hbWUgPSBcIkVkaXROYW1lXCI7ICBcclxuICAgICAgdGhpcy5FZGl0TmFtZS5MYWJlbEtleSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLlZhbHVlID0gcHJvdmlkZXIucHJvdmlkZXJOYW1lO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkVkaXREZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5MYWJlbEtleSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBwcm92aWRlci5kZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZFByb3ZpZGVyVHlwZSA9IHRoaXMuVHlwZXNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gcHJvdmlkZXIudHlwZUZ1bGxOYW1lOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5OYW1lID0gXCJFZGl0VHlwZU9wdGlvbnNcIlxyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiUHJvdmlkZXJUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuVHlwZXNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuU2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUHJvdmlkZXJUeXBlO1xyXG5cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJUeXBlSXRlbUlEID0gcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlEO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlck9yZ2FuaXphdGlvbklEID0gcHJvdmlkZXIub3JnYW5pemF0aW9uSUQ7XHJcblxyXG4gICAgICBsZXQgZWRpdEF0dHJpYnV0ZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyhwcm92aWRlci5wcm92aWRlckF0dHJpYnV0ZXMsIGZhbHNlKTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IGVkaXRBdHRyaWJ1dGVzUmVzdWx0WzBdO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNDb3VudCA9IGVkaXRBdHRyaWJ1dGVzUmVzdWx0WzFdO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGVkaXRQcm92aWRlck1vZGFsKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuICBnZXRFZGl0UHJvdmlkZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0UHJvdmlkZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBQcm92aWRlck1vZGVsKCk7XHJcblxyXG4gICAgRWRpdE1vZGVsLklEID0gTnVtYmVyKHRoaXMuUHJvdmlkZXJJZCk7XHJcbiAgICBFZGl0TW9kZWwuUHJvdmlkZXJOYW1lID0gUmVzdWx0TW9kZWwuRWRpdE5hbWU7IC8vKCMjMSlcclxuICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbiA9IFJlc3VsdE1vZGVsLkVkaXREZXNjcmlwdGlvblxyXG4gICAgRWRpdE1vZGVsLlR5cGVGdWxsTmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRUeXBlT3B0aW9ucztcclxuICAgIEVkaXRNb2RlbC5Qcm92aWRlclR5cGVJdGVtSUQgPSB0aGlzLkVkaXRQcm92aWRlclR5cGVJdGVtSUQ7XHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSUQgPSB0aGlzLkVkaXRQcm92aWRlck9yZ2FuaXphdGlvbklEO1xyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ7IGorKykge1xyXG4gICAgICBsZXQgZWRpdEF0dHJpYnV0ZU5hbWUgPSBSZXN1bHRNb2RlbFtcIkVkaXRBdHRyaWJ1dGVOYW1lXCIgKyBqXTtcclxuICAgICAgLy8gaWYgKGlzVW5kZWZpbmVkKGVkaXRBdHRyaWJ1dGVOYW1lKSlcclxuICAgICAgLy8gICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVWYWx1ZSA9IFJlc3VsdE1vZGVsW1wiRWRpdEF0dHJpYnV0ZVZhbHVlXCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVFbmNyeXB0ZWQgPSBSZXN1bHRNb2RlbFtcIkVkaXRBdHRyaWJ1dGVFbmNyeXB0ZWRcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IHByb3ZpZGVyQXR0cjogUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCA9IG5ldyBQcm92aWRlckF0dHJpYnV0ZU1vZGVsKCk7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5OYW1lID0gZWRpdEF0dHJpYnV0ZU5hbWU7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5WYWx1ZSA9IGVkaXRBdHRyaWJ1dGVWYWx1ZTtcclxuICAgICAgcHJvdmlkZXJBdHRyLklzRW5jcnlwdGVkID0gZWRpdEF0dHJpYnV0ZUVuY3J5cHRlZDtcclxuICAgICAgRWRpdE1vZGVsLlByb3ZpZGVyQXR0cmlidXRlcy5wdXNoKHByb3ZpZGVyQXR0cik7XHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFByb3ZpZGVyRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5FZGl0UHJvdmlkZXIoRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgIC8vRGVsZXRlIHByb3ZpZGVyXHJcbiAgc2hvd0RlbGV0ZVByb3ZpZGVyTW9kYWwocHJvdmlkZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZVByb3ZpZGVySWQgPSBwcm92aWRlcklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZVByb3ZpZGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZVByb3ZpZGVyO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUHJvdmlkZXIgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Qcm92aWRlclNlcnZpY2UuRGVsZXRlUHJvdmlkZXIoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9EZWZhdWx0IHByb3ZpZGVyXHJcbiAgc2hvd0RlZmF1bHRQcm92aWRlck1vZGFsKGRlZmF1bHRQcm92aWRlck1vZGFsKSB7XHJcbiAgICB0aGlzLkRlZmF1bHRQcm92aWRlcnMgPSBbXTtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldERlZmF1bHRQcm92aWRlcnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgbGlzdCA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtXHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RGVmYXVsdFByb3ZpZGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXREZWZhdWx0UHJvdmlkZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBwcm92aWRlcjogYW55ID0gbGlzdFtpXTtcclxuXHJcbiAgICAgICAgbGV0IFByb3ZpZGVyT3B0aW9uID0gbmV3IFJhZGlvQnV0dG9uT3B0aW9ucygpO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLk5hbWUgPSBcInByb3ZpZGVyT3B0aW9uX1wiICsgcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlEO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgbGV0IGl0ZW1zOiBSYWRpb0J1dHRvbkl0ZW1bXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcHJvdmlkZXIucHJvdmlkZXJzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBsZXQgcHJvdmlkZXJJdGVtID0gcHJvdmlkZXIucHJvdmlkZXJzW2pdO1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBuZXcgUmFkaW9CdXR0b25JdGVtKCk7XHJcbiAgICAgICAgICBpdGVtLlRleHQgPSBwcm92aWRlckl0ZW0udGV4dDtcclxuICAgICAgICAgIGl0ZW0uVmFsdWUgPSBwcm92aWRlckl0ZW0udmFsdWU7XHJcbiAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgUHJvdmlkZXJPcHRpb24uSXRlbXM9aXRlbXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlciA9IHByb3ZpZGVyLnByb3ZpZGVycy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0uc2VsZWN0ZWQgPT0gdHJ1ZTsgfSlbMF07XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uVmFsdWUgPSB7XHJcbiAgICAgICAgICBUZXh0OiBzZWxlY3RlZFByb3ZpZGVyLnRleHQsXHJcbiAgICAgICAgICBWYWx1ZTogc2VsZWN0ZWRQcm92aWRlci52YWx1ZVxyXG4gICAgICAgIH07XHJcblxyXG5cclxuXHJcbiAgICAgICAgbGV0IGRlZlByb3ZpZGVyID0ge1xyXG4gICAgICAgICAgTmFtZTogcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbU5hbWUsXHJcbiAgICAgICAgICBJRDogcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlELFxyXG4gICAgICAgICAgUHJvdmlkZXJzT3B0aW9uOiBQcm92aWRlck9wdGlvblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJzLnB1c2goZGVmUHJvdmlkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZGVmYXVsdFByb3ZpZGVyTW9kYWwpO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldERlZmF1bHRQcm92aWRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgZGVmYXVsdFByb3ZpZGVyc01vZGVsOiBEZWZhdWx0UHJvdmlkZXJNb2RlbFtdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLkRlZmF1bHRQcm92aWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHByb3ZpZGVySUQgPSB0aGlzLkRlZmF1bHRQcm92aWRlcnNbaV0uSUQ7XHJcbiAgICAgIGxldCBzZWxlY3RlZERlZlByb3ZpZGVySUQgPSBSZXN1bHRNb2RlbFtcInByb3ZpZGVyT3B0aW9uX1wiICsgcHJvdmlkZXJJRF07XHJcbiAgICAgIGxldCBkZWZQcm92aWRlTW9kZWw6IERlZmF1bHRQcm92aWRlck1vZGVsID0ge1xyXG4gICAgICAgIFByb3ZpZGVyVHlwZUl0ZW1JRDogcHJvdmlkZXJJRCxcclxuICAgICAgICBTZWxlY3RlZFByb3ZpZGVySUQ6IE51bWJlcihzZWxlY3RlZERlZlByb3ZpZGVySUQpLFxyXG4gICAgICAgIFByb3ZpZGVyVHlwZUl0ZW1OYW1lOiBcIlwiLFxyXG4gICAgICAgIFByb3ZpZGVyczogW11cclxuICAgICAgfTtcclxuICAgICAgZGVmYXVsdFByb3ZpZGVyc01vZGVsLnB1c2goZGVmUHJvdmlkZU1vZGVsKTtcclxuXHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goZGVmYXVsdFByb3ZpZGVyc01vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFByb3ZpZGVyRnVuY3Rpb24gPSAoRGVmYXVsdFByb3ZpZGVyTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLlN1Ym1pdERlZmF1bHRQcm92aWRlcnMoRGVmYXVsdFByb3ZpZGVyTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0dlbmVyYXRlIHByb3ZpZGVyIGpzb25cclxuICBnZW5lcmF0ZVByb3ZpZGVySnNvbigpIHtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdlbmVyYXRlUHJvdmlkZXJKc29uKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IEZpbGVEVE8gPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbRmlsZURUT10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSk7XHJcbiAgICAgIGxldCBmaWxlTmFtZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyc1wiKSArIFwiLmpzb25cIjtcclxuICAgICAgc2F2ZUFzKGZpbGUsIGZpbGVOYW1lKTtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6TWVudSAtLT5cclxuICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IFNob3dQYWdlQ29udGVudD09dHJ1ZT8nYmxvY2snOidub25lJ31cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZExpc3RzKClcIiBuZ2JEcm9wZG93blRvZ2dsZSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaWQ9XCJGaWx0ZXJzRHJvcGRvd25cIiB0aXRsZT1cIkZpbHRlclwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkZpbHRlclwiKX19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiRmlsdGVyc0Ryb3Bkb3duXCIgY2xhc3M9XCIgZmlsdGVyLWNvbnRhaW5lciBtZW51IG1lbnUtc3ViIG1lbnUtc3ViLWRyb3Bkb3duIG1lbnUtY29sdW1uIG1lbnUtcm91bmRlZCBtZW51LWdyYXktODAwIG1lbnUtc3RhdGUtYmctbGlnaHQtcHJpbWFyeSAgdy0yNTBweCB3LW1kLTUwMHB4IGZ3LWJvbGQgcHktMyBcIj5cclxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTcgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjcHJvdmlkZXJUeXBlc0RETCBbb3B0aW9uc109XCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNzb3J0aW5nRmlsdGVyRERMIFtvcHRpb25zXT1cInNvcnRpbmdGaWx0ZXJPcHRpb25cIiBbZ3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB2LXJlc2V0IGJ0bi1zbVwiIGQ9XCJhcHBseUZpbHRlcnNCdG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvbiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImdlbmVyYXRlUHJvdmlkZXJKc29uKClcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtMyBibnNpZ2h0cy1idG4tZXhwb3J0XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtZXhwb3J0IG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlUHJvdmlkZXJKc29uXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPSd1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VsZWN0RGVmYXVsdFByb3ZpZGVyXCIpJyBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtMyBcIiAoY2xpY2spPVwic2hvd0RlZmF1bHRQcm92aWRlck1vZGFsKERlZmF1bHRQcm92aWRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1oYW5kLXBvaW50ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VsZWN0RGVmYXVsdFByb3ZpZGVyXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9J3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIiknIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93QWRkUHJvdmlkZXJNb2RhbChBZGRQcm92aWRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgICAgPCEtLSBiZWdpbjo6Qm9keSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXR1c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVmYXVsdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBwcm92aWRlckdyb3VwIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHByb3ZpZGVyIG9mIHByb3ZpZGVyR3JvdXAucHJvdmlkZXJzXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e3Byb3ZpZGVyLnByb3ZpZGVyTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3twcm92aWRlci5kZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIiAqbmdJZj1cInByb3ZpZGVyLmlzUnVubmluZztlbHNlIG90aGVyX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSdW5uaW5nXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0b3BwZWRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgZnctYm9sZGVyXCIgKm5nSWY9XCJwcm92aWRlci5pc0RlZmF1bHQ7ZWxzZSBkZWZhdWx0X25vXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRfbm8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBmdy1ib2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5vXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2hvd0VkaXRQcm92aWRlck1vZGFsKHByb3ZpZGVyLmlkLHByb3ZpZGVyLmlkRW5jcnlwdGVkICwgRWRpdFByb3ZpZGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlUHJvdmlkZXJNb2RhbChwcm92aWRlci5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cInByb3ZpZGVyR3JvdXAucHJvdmlkZXJzLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDx0Ym9keSAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRQcm92aWRlckxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJQcm92aWRlclBhZ2luZ1wiIFtncm91cF09XCJQcm92aWRlckZvcm1cIiAjUHJvdmlkZXJQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS1lbmQ6OlByb3ZpZGVycyBsaXN0LS0+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBBZGQgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkUHJvdmlkZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZFByb3ZpZGVyRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkTmFtZVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRPcmdhbml6YXRpb25PcHRpb25zXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCIgKE9uQ2hhbmdlKT1cInNldEFkZFByb3ZpZGVyQXR0cmlidXRlcygkZXZlbnQpXCI+XHJcbiAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJJc0F0dHJpYnV0ZXNMb2FkZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyQXR0cmlidXRlTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJBdHRyaWJ1dGVWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5jcnlwdGVkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIiAoT25DaGFuZ2UpPVwiZW5jcnlwdGVkQ2hhbmdlKCRldmVudCxvcHRpb24sdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZUF0dHJpYnV0ZShvcHRpb24sdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZUFkZFByb3ZpZGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPCEtLSBFZGl0IG1vZGVsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRQcm92aWRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRQcm92aWRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXROYW1lXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJFZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFR5cGVPcHRpb25zXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIiAoT25DaGFuZ2UpPVwic2V0RWRpdFByb3ZpZGVyQXR0cmlidXRlcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJBdHRyaWJ1dGVOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZVZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmNyeXB0ZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJlbmNyeXB0ZWRDaGFuZ2UoJGV2ZW50LG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlQXR0cmlidXRlKG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cIkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRQcm92aWRlck1vZGFsIGlkPVwiQ2xvc2VFZGl0UHJvdmlkZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCIgI0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG48IS0tRGVmYXVsdCBQcm92aWRlciAgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNEZWZhdWx0UHJvdmlkZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VsZWN0RGVmYXVsdFByb3ZpZGVyXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nRm9yPVwibGV0IGRlZlByb3ZpZGVyIG9mIERlZmF1bHRQcm92aWRlcnM7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTQgZnctYm9sZGVzdFwiPnt7ZGVmUHJvdmlkZXIuTmFtZX19PC9oMz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgdmFsdWU9XCJ7e2RlZlByb3ZpZGVyLklEfX1cIiAvPlxyXG4gICAgICAgICAgPEJCU0YtUmFkaW9CdXR0b24gW29wdGlvbnNdPVwiZGVmUHJvdmlkZXIuUHJvdmlkZXJzT3B0aW9uXCIgW2dyb3VwXT1cIkRlZmF1bHRQcm92aWRlckZvcm1cIj48L0JCU0YtUmFkaW9CdXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZURlZmF1bHRQcm92aWRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuIl19
|