@bnsights/bbsf-admin-portal 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
- package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
- package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
- package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
- package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
- package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
- package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
- package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
- package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
- package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
- package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
- package/esm2022/lib/Pages/home/home.component.mjs +158 -0
- package/esm2022/lib/Pages/home/home.module.mjs +48 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
- package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
- package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
- package/esm2022/lib/Pages/license/license.module.mjs +71 -0
- package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
- package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
- package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
- package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
- package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
- package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
- package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
- package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
- package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
- package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
- package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
- package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
- package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
- package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
- package/esm2022/lib/Pages/shared/constants.mjs +130 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
- package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
- package/esm2022/lib/Pages/users/users.component.mjs +806 -0
- package/esm2022/lib/Pages/users/users.module.mjs +86 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
- package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
- package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
- package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
- package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
- package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
- package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
- package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
- package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
- package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
- package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
- package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
- package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
- package/esm2022/lib/masterlayout.module.mjs +188 -0
- package/{esm2020 → esm2022}/public-api.mjs +48 -48
- package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
- package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
- package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
- package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
- package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
- package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
- package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
- package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
- package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
- package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
- package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
- package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
- package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
- package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
- package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
- package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
- package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
- package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
- package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
- package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
- package/lib/Pages/authentication/authentication.component.d.ts +8 -8
- package/lib/Pages/authentication/authentication.module.d.ts +12 -12
- package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
- package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
- package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
- package/lib/Pages/configurations/configurations.component.d.ts +8 -8
- package/lib/Pages/configurations/configurations.module.d.ts +24 -24
- package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
- package/lib/Pages/configurations/index.d.ts +6 -6
- package/lib/Pages/core/auth.module.d.ts +8 -8
- package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
- package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
- package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
- package/lib/Pages/departments/department/department.component.d.ts +66 -68
- package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
- package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
- package/lib/Pages/departments/departments.component.d.ts +8 -8
- package/lib/Pages/departments/departments.module.d.ts +21 -21
- package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
- package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
- package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
- package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
- package/lib/Pages/documents/documents.component.d.ts +8 -8
- package/lib/Pages/documents/documents.module.d.ts +27 -27
- package/lib/Pages/documents/documents.routing.d.ts +7 -7
- package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
- package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
- package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
- package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
- package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
- package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
- package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
- package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
- package/lib/Pages/home/filter-pipe.d.ts +7 -7
- package/lib/Pages/home/home.component.d.ts +19 -19
- package/lib/Pages/home/home.module.d.ts +14 -14
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
- package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
- package/lib/Pages/jobs/jobs.module.d.ts +17 -17
- package/lib/Pages/license/license/license.component.d.ts +59 -59
- package/lib/Pages/license/license.module.d.ts +15 -15
- package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
- package/lib/Pages/localizations/localizations.component.d.ts +108 -110
- package/lib/Pages/localizations/localizations.module.d.ts +18 -18
- package/lib/Pages/logs/log/log.component.d.ts +34 -34
- package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
- package/lib/Pages/logs/logs.component.d.ts +8 -8
- package/lib/Pages/logs/logs.module.d.ts +20 -20
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
- package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
- package/lib/Pages/lookups/lookups.component.d.ts +8 -8
- package/lib/Pages/lookups/lookups.module.d.ts +24 -24
- package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
- package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
- package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
- package/lib/Pages/notifications/notifications.component.d.ts +8 -8
- package/lib/Pages/notifications/notifications.module.d.ts +28 -28
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
- package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
- package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
- package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
- package/lib/Pages/providers/providers.component.d.ts +8 -8
- package/lib/Pages/providers/providers.module.d.ts +21 -21
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
- package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
- package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
- package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
- package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
- package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
- package/lib/Pages/roles/roles.component.d.ts +8 -8
- package/lib/Pages/roles/roles.module.d.ts +24 -24
- package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
- package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
- package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
- package/lib/Pages/sectors/sectors.component.d.ts +8 -8
- package/lib/Pages/sectors/sectors.module.d.ts +23 -23
- package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
- package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
- package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
- package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
- package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
- package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
- package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
- package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
- package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
- package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
- package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
- package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
- package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/data.service.d.ts +9 -9
- package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
- package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
- package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
- package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
- package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
- package/lib/Pages/shared/base.service.d.ts +4 -4
- package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
- package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
- package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
- package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
- package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
- package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
- package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
- package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
- package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
- package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
- package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
- package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
- package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
- package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
- package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
- package/lib/Pages/shared/config/environment.d.ts +1 -1
- package/lib/Pages/shared/constants.d.ts +129 -129
- package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
- package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
- package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
- package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
- package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
- package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
- package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
- package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
- package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
- package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
- package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
- package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
- package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
- package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
- package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
- package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
- package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
- package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
- package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
- package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
- package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
- package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
- package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
- package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
- package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
- package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
- package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
- package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
- package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
- package/lib/Pages/shared/models/user.registration.d.ts +6 -6
- package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
- package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
- package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
- package/lib/Pages/shared/shared.module.d.ts +8 -8
- package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
- package/lib/Pages/start/index/index.component.d.ts +15 -15
- package/lib/Pages/start/start-routing.module.d.ts +7 -7
- package/lib/Pages/start/start.module.d.ts +11 -11
- package/lib/Pages/users/users.component.d.ts +138 -139
- package/lib/Pages/users/users.module.d.ts +18 -18
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
- package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
- package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
- package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
- package/lib/Pages/workflows/workflows.component.d.ts +8 -8
- package/lib/Pages/workflows/workflows.module.d.ts +27 -27
- package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
- package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
- package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
- package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
- package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
- package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
- package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
- package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
- package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
- package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
- package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
- package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
- package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
- package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
- package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
- package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
- package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
- package/lib/_metronic/core/services/layout.service.d.ts +38 -38
- package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
- package/lib/masterlayout-routing.module.d.ts +11 -13
- package/lib/masterlayout.component.d.ts +63 -63
- package/lib/masterlayout.module.d.ts +34 -34
- package/package.json +25 -30
- package/public-api.d.ts +41 -41
- package/src/lib/assets/images/menu/Tools.svg +10 -4
- package/src/lib/assets/images/menu/authentication.svg +9 -0
- package/src/lib/assets/sass/style-rtl.scss +3 -3
- package/src/lib/assets/sass/style.scss +3 -3
- package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
- package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
- package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
- package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
- package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
- package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
- package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
- package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
- package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
- package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
- package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
- package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
- package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
- package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
- package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
- package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
- package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
- package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
- package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
- package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
- package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
- package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
- package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
- package/esm2020/lib/Pages/home/home.component.mjs +0 -153
- package/esm2020/lib/Pages/home/home.module.mjs +0 -48
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
- package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
- package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
- package/esm2020/lib/Pages/license/license.module.mjs +0 -71
- package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
- package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
- package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
- package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
- package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
- package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
- package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
- package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
- package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
- package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
- package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
- package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
- package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
- package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
- package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
- package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
- package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
- package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
- package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
- package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
- package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
- package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
- package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
- package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
- package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
- package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
- package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
- package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
- package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
- package/esm2020/lib/Pages/shared/constants.mjs +0 -130
- package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
- package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
- package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
- package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
- package/esm2020/lib/Pages/users/users.component.mjs +0 -806
- package/esm2020/lib/Pages/users/users.module.mjs +0 -86
- package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
- package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
- package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
- package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
- package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
- package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
- package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
- package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
- package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
- package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
- package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
- package/esm2020/lib/masterlayout.module.mjs +0 -188
- package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
- package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
|
@@ -1,624 +1,624 @@
|
|
|
1
|
-
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
-
import { FormGroup, Validators } from '@angular/forms';
|
|
4
|
-
import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions, } from '@bnsights/bbsf-controls';
|
|
5
|
-
import { of } from 'rxjs';
|
|
6
|
-
import { AudienceType, SurveyOptionType } from '../../../../Enums/Enums';
|
|
7
|
-
import { SurveyQuestionDTO } from '../../../../models/SurveyModels/survey-question';
|
|
8
|
-
import { SurveyQuestionOptionDTO } from '../../../../models/SurveyModels/survey-question-option';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../../../Services/survey-question.service";
|
|
11
|
-
import * as i2 from "ng-wizard";
|
|
12
|
-
import * as i3 from "@angular/common";
|
|
13
|
-
import * as i4 from "@bnsights/bbsf-controls";
|
|
14
|
-
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
15
|
-
import * as i6 from "@angular/cdk/drag-drop";
|
|
16
|
-
import * as i7 from "ng-inline-svg";
|
|
17
|
-
export class AddQuestionComponent extends AppBaseComponent {
|
|
18
|
-
constructor(injector, surveyQuestionService, ngWizardService) {
|
|
19
|
-
super(injector);
|
|
20
|
-
this.injector = injector;
|
|
21
|
-
this.surveyQuestionService = surveyQuestionService;
|
|
22
|
-
this.ngWizardService = ngWizardService;
|
|
23
|
-
this.audienceType = AudienceType;
|
|
24
|
-
this.isNumber = false;
|
|
25
|
-
this.isText = false;
|
|
26
|
-
this.isFile = false;
|
|
27
|
-
this.isMultiFile = false;
|
|
28
|
-
this.isImage = false;
|
|
29
|
-
this.isSelect = false;
|
|
30
|
-
this.SizeList = [];
|
|
31
|
-
this.addModelForm = new FormGroup({});
|
|
32
|
-
this.addSurveyQuestionFormOptions = new FormOptions();
|
|
33
|
-
this.numberValidation = new CustomValidation();
|
|
34
|
-
this.addOptionForm = new FormGroup({});
|
|
35
|
-
this.optionList = [];
|
|
36
|
-
this.showScoreOption = false;
|
|
37
|
-
this.showOptions = false;
|
|
38
|
-
this.errorMessage = null;
|
|
39
|
-
this.totalScore = 0;
|
|
40
|
-
this.showOptionList = true;
|
|
41
|
-
this.addModal = (surveyId, audienceType) => {
|
|
42
|
-
this.surveyID = surveyId;
|
|
43
|
-
this.audienceTypeID = audienceType;
|
|
44
|
-
this.isNumber = false;
|
|
45
|
-
this.isText = false;
|
|
46
|
-
this.isFile = false;
|
|
47
|
-
this.isMultiFile = false;
|
|
48
|
-
this.isSelect = false;
|
|
49
|
-
this.isImage = false;
|
|
50
|
-
this.optionList = [];
|
|
51
|
-
this.errorMessage = null;
|
|
52
|
-
this.surveyQuestionService
|
|
53
|
-
.loadAddDropdown(this.surveyID)
|
|
54
|
-
.subscribe((res) => {
|
|
55
|
-
let result = res;
|
|
56
|
-
this.Questions = result.questions;
|
|
57
|
-
this.addModelForm = new FormGroup({});
|
|
58
|
-
this.addOptionForm = new FormGroup({});
|
|
59
|
-
this.addSurveyQuestionFormOptions = new FormOptions();
|
|
60
|
-
this.addSurveyQuestionFormOptions.FormGroup = this.addModelForm;
|
|
61
|
-
this.addSurveyQuestionFormOptions.GetModelFunction = this.getAddModel;
|
|
62
|
-
this.addSurveyQuestionFormOptions.ServiceSubmitFunction =
|
|
63
|
-
this.getAddFunction;
|
|
64
|
-
this.addSurveyQuestionFormOptions.PagingReference = this.pagingElement;
|
|
65
|
-
this.addSurveyQuestionFormOptions.OnSuccessHandler =
|
|
66
|
-
this.onSuccessAddHandler;
|
|
67
|
-
this.addSurveyQuestionFormOptions.DisableSuccessNotification = true;
|
|
68
|
-
this.addQuestion = new MultiLingualTextBoxOptions();
|
|
69
|
-
this.addQuestion.Name = 'Text';
|
|
70
|
-
this.addQuestion.ArabicLabelKey = 'QuestionInArabic';
|
|
71
|
-
this.addQuestion.EnglishLabelKey = 'QuestionInEnglish';
|
|
72
|
-
this.addQuestion.IsRequired = true;
|
|
73
|
-
this.addQuestion.MaxLength = 4000;
|
|
74
|
-
this.addQuestion.LanguageMode = this.getLanguageModeValue();
|
|
75
|
-
this.addDescription = new MultiLingualTextAreaOptions();
|
|
76
|
-
this.addDescription.Name = 'Description';
|
|
77
|
-
this.addDescription.ArabicLabelKey = 'DescriptionInArabic';
|
|
78
|
-
this.addDescription.EnglishLabelKey = 'DescriptionInEnglish';
|
|
79
|
-
this.addDescription.IsRequired = false;
|
|
80
|
-
this.addDescription.MaxLength = 250;
|
|
81
|
-
this.addDescription.Rows = 2;
|
|
82
|
-
this.addDescription.LanguageMode = this.getLanguageModeValue();
|
|
83
|
-
this.addDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
|
|
84
|
-
this.addDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
|
|
85
|
-
this.addQuestionType = new DropdownOptions();
|
|
86
|
-
this.addQuestionType.Name = 'QuestionTypeItemID';
|
|
87
|
-
this.addQuestionType.LabelKey = 'Type';
|
|
88
|
-
this.addQuestionType.IsRequired = true;
|
|
89
|
-
this.addQuestionType.AllowSearchFilter = true;
|
|
90
|
-
this.addQuestionType.DataSource = result.optionTypes;
|
|
91
|
-
this.addQuestionType.SingleSelection = true;
|
|
92
|
-
this.addQuestionType.NotFoundText = this.l('NoResultFound');
|
|
93
|
-
this.audience = new DropdownOptions();
|
|
94
|
-
this.audience.Name = 'AudienceItemID';
|
|
95
|
-
this.audience.LabelKey = 'Audience';
|
|
96
|
-
this.audience.IsRequired = true;
|
|
97
|
-
this.audience.ViewType = ControlLayout.Vertical;
|
|
98
|
-
this.audience.SingleSelection = true;
|
|
99
|
-
this.audience.ShowCheckbox = false;
|
|
100
|
-
this.audience.DataSource = result.audiences;
|
|
101
|
-
this.audience.SelectedItems = audienceType;
|
|
102
|
-
this.audience.LabelDescription = this.l('AudienceDescriptionHint');
|
|
103
|
-
this.addSize = new DropdownOptions();
|
|
104
|
-
this.addSize.Name = 'Size';
|
|
105
|
-
this.addSize.LabelKey = 'Size';
|
|
106
|
-
this.addSize.IsRequired = true;
|
|
107
|
-
this.addSize.AllowSearchFilter = true;
|
|
108
|
-
this.addSize.DataSource = this.SizeList;
|
|
109
|
-
this.addSize.SingleSelection = true;
|
|
110
|
-
this.addSize.SelectedItems = 12;
|
|
111
|
-
this.addSize.NotFoundText = this.l('NoResultFound');
|
|
112
|
-
this.addRequired = new ToggleSlideOptions();
|
|
113
|
-
this.addRequired.Name = 'IsRequired';
|
|
114
|
-
this.addRequired.LabelKey = 'IsRequired';
|
|
115
|
-
this.addRequired.LabelDescription = this.l('RequiredDescriptionHint');
|
|
116
|
-
this.addAllowScore = new ToggleSlideOptions();
|
|
117
|
-
this.addAllowScore.Name = 'IsAllowScoring';
|
|
118
|
-
this.addAllowScore.LabelKey = 'AllowScore';
|
|
119
|
-
this.addAllowScore.LabelDescription = this.l('AllowScoreDescription');
|
|
120
|
-
this.addHasSearch = new ToggleSlideOptions();
|
|
121
|
-
this.addHasSearch.Name = 'HasSearch';
|
|
122
|
-
this.addHasSearch.LabelKey = 'HasSearch';
|
|
123
|
-
this.addIsActive = new ToggleSlideOptions();
|
|
124
|
-
this.addIsActive.Name = 'IsVisible';
|
|
125
|
-
this.addIsActive.LabelKey = 'Visible';
|
|
126
|
-
this.addIsActive.Value = true;
|
|
127
|
-
this.addIsActive.LabelDescription = this.l('GenericVisibleHint');
|
|
128
|
-
this.addMaxLength = new TextBoxOptions();
|
|
129
|
-
this.addMaxLength.Name = 'MaxLength';
|
|
130
|
-
this.addMaxLength.LabelKey = 'MaxLength';
|
|
131
|
-
this.addMaxLength.IsRequired = true;
|
|
132
|
-
this.addMaxLength.NumberRange = new RangeNumber();
|
|
133
|
-
this.addMaxLength.Type = InputType.Number;
|
|
134
|
-
this.addMaxLength.LabelDescription = this.l('MaxHint');
|
|
135
|
-
this.addMinLength = new TextBoxOptions();
|
|
136
|
-
this.addMinLength.Name = 'MinLength';
|
|
137
|
-
this.addMinLength.LabelKey = 'MinLength';
|
|
138
|
-
this.addMinLength.IsRequired = true;
|
|
139
|
-
this.addMinLength.NumberRange = new RangeNumber();
|
|
140
|
-
this.addMinLength.Type = InputType.Number;
|
|
141
|
-
this.addMinLength.LabelDescription = this.l('MinHint');
|
|
142
|
-
this.addRowsNumber = new TextBoxOptions();
|
|
143
|
-
this.addRowsNumber.Name = 'Rows';
|
|
144
|
-
this.addRowsNumber.LabelKey = 'Rows';
|
|
145
|
-
this.addRowsNumber.IsRequired = true;
|
|
146
|
-
this.addRowsNumber.NumberRange = new RangeNumber();
|
|
147
|
-
this.addRowsNumber.NumberRange.From = 1;
|
|
148
|
-
this.addRowsNumber.NumberRange.To = 20;
|
|
149
|
-
this.addRowsNumber.Type = InputType.Number;
|
|
150
|
-
this.addMaxFileSize = new TextBoxOptions();
|
|
151
|
-
this.addMaxFileSize.Name = 'MaxFileSizeInMB';
|
|
152
|
-
this.addMaxFileSize.LabelKey = 'MaxFileSizeInMB';
|
|
153
|
-
this.addMaxFileSize.IsRequired = true;
|
|
154
|
-
this.addMaxFileSize.NumberRange = new RangeNumber();
|
|
155
|
-
this.addMaxFileSize.NumberRange.From = 1;
|
|
156
|
-
this.addMaxFileSize.NumberRange.To = 100;
|
|
157
|
-
this.addMaxFileSize.Type = InputType.Number;
|
|
158
|
-
this.addMaxFileCount = new TextBoxOptions();
|
|
159
|
-
this.addMaxFileCount.Name = 'MaxFileCount';
|
|
160
|
-
this.addMaxFileCount.LabelKey = 'MaxFilesCount';
|
|
161
|
-
this.addMaxFileCount.IsRequired = true;
|
|
162
|
-
this.addMaxFileCount.NumberRange = new RangeNumber();
|
|
163
|
-
this.addMaxFileCount.NumberRange.From = 1;
|
|
164
|
-
this.addMaxFileCount.NumberRange.To = 50;
|
|
165
|
-
this.addMaxFileCount.Type = InputType.Number;
|
|
166
|
-
this.addMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
|
|
167
|
-
this.addMaxFileCount.CustomValidation = [this.numberValidation];
|
|
168
|
-
this.addFilesExtensions = new DropdownOptions();
|
|
169
|
-
this.addFilesExtensions.Name = 'AllowedExtensions';
|
|
170
|
-
this.addFilesExtensions.LabelKey = 'Extensions';
|
|
171
|
-
this.addFilesExtensions.IsRequired = true;
|
|
172
|
-
this.addFilesExtensions.AllowSearchFilter = true;
|
|
173
|
-
this.addFilesExtensions.DataSource = result.extensions;
|
|
174
|
-
this.addFilesExtensions.SingleSelection = false;
|
|
175
|
-
this.addFilesExtensions.LabelDescription = this.l('ExtensionHint');
|
|
176
|
-
this.addFilesExtensions.NotFoundText = this.l('NoResultFound');
|
|
177
|
-
this.addModelForm.addValidators(this.fromTo('MinLength', 'MaxLength'));
|
|
178
|
-
this.addNameOption = new MultiLingualTextBoxOptions();
|
|
179
|
-
this.addNameOption.Name = 'NameOption';
|
|
180
|
-
this.addNameOption.ArabicLabelKey = 'NameInArabic';
|
|
181
|
-
this.addNameOption.EnglishLabelKey = 'NameInEnglish';
|
|
182
|
-
this.addNameOption.IsRequired = true;
|
|
183
|
-
this.addNameOption.MaxLength = 225;
|
|
184
|
-
this.addNameOption.LanguageMode = this.getLanguageModeValue();
|
|
185
|
-
this.displayOrderOption = new TextBoxOptions();
|
|
186
|
-
this.displayOrderOption.Name = 'DisplayOrder';
|
|
187
|
-
this.scoreNumber = new TextBoxOptions();
|
|
188
|
-
this.scoreNumber.Name = 'Score';
|
|
189
|
-
this.scoreNumber.LabelKey = 'Score';
|
|
190
|
-
this.scoreNumber.IsRequired = true;
|
|
191
|
-
this.scoreNumber.Type = InputType.Number;
|
|
192
|
-
let rangeNumber = new RangeNumber();
|
|
193
|
-
rangeNumber.To = 1000000;
|
|
194
|
-
rangeNumber.From = 1;
|
|
195
|
-
this.scoreNumber.NumberRange = rangeNumber;
|
|
196
|
-
this.addOptionLinkedQuestions = new DropdownOptions();
|
|
197
|
-
this.addOptionLinkedQuestions.Name = 'LinkedQuestions';
|
|
198
|
-
this.addOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
|
|
199
|
-
this.addOptionLinkedQuestions.AllowSearchFilter = true;
|
|
200
|
-
this.addOptionLinkedQuestions.DataSource = result.questions;
|
|
201
|
-
this.addOptionLinkedQuestions.SingleSelection = false;
|
|
202
|
-
this.addOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
|
|
203
|
-
this.addOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
|
|
204
|
-
this.openModal(this.AddModal, 'xl');
|
|
205
|
-
this.stopBlockUI();
|
|
206
|
-
});
|
|
207
|
-
};
|
|
208
|
-
this.getAddModel = () => {
|
|
209
|
-
let paramArray = [];
|
|
210
|
-
let resultOptionModel = this.addOptionForm.value;
|
|
211
|
-
let resultModel = this.addModelForm.value;
|
|
212
|
-
if (this.isSelect) {
|
|
213
|
-
if ((resultOptionModel.NameOption.Arabic != undefined &&
|
|
214
|
-
resultOptionModel.NameOption.Arabic != '') ||
|
|
215
|
-
(resultOptionModel.NameOption.English != undefined &&
|
|
216
|
-
resultOptionModel.NameOption.English != '') ||
|
|
217
|
-
(resultOptionModel.Score != undefined && resultOptionModel.Score > 0)) {
|
|
218
|
-
this.errorMessage = this.l('OptionPendingDataErrorMessage');
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
if (this.optionList.length == 0 && this.isSelect) {
|
|
222
|
-
this.errorMessage = this.l('OptionErrorMessage');
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
this.errorMessage = null;
|
|
227
|
-
let addModel = new SurveyQuestionDTO();
|
|
228
|
-
addModel.SurveyID = this.surveyID;
|
|
229
|
-
addModel.Text.Arabic = resultModel.Text.Arabic;
|
|
230
|
-
addModel.Text.English = resultModel.Text.English;
|
|
231
|
-
addModel.Description.Arabic = resultModel.Description.Arabic;
|
|
232
|
-
addModel.Description.English = resultModel.Description.English;
|
|
233
|
-
addModel.Options.Description.Arabic = resultModel.Description.Arabic;
|
|
234
|
-
addModel.Options.Description.English = resultModel.Description.English;
|
|
235
|
-
if (this.audienceTypeID == AudienceType.Both)
|
|
236
|
-
addModel.AudienceItemID = resultModel.AudienceItemID;
|
|
237
|
-
else
|
|
238
|
-
addModel.AudienceItemID = this.audienceTypeID;
|
|
239
|
-
addModel.QuestionTypeItemID = resultModel.QuestionTypeItemID;
|
|
240
|
-
addModel.IsAllowScoring = resultModel.IsAllowScoring;
|
|
241
|
-
addModel.Options.Size = resultModel.Size;
|
|
242
|
-
addModel.Options.IsRequired = resultModel.IsRequired;
|
|
243
|
-
addModel.IsRequired = resultModel.IsRequired;
|
|
244
|
-
addModel.IsVisible = resultModel.IsVisible;
|
|
245
|
-
addModel.Options.HasSearch = resultModel.HasSearch;
|
|
246
|
-
if (this.isText || this.isNumber) {
|
|
247
|
-
addModel.Options.MinLength = resultModel.MinLength;
|
|
248
|
-
addModel.Options.MaxLength = resultModel.MaxLength;
|
|
249
|
-
}
|
|
250
|
-
if (this.isFile || this.isMultiFile || this.isImage)
|
|
251
|
-
addModel.Options.MaxFileSizeInMB = resultModel.MaxFileSizeInMB;
|
|
252
|
-
if (this.isMultiFile)
|
|
253
|
-
addModel.Options.MaxFileCount = resultModel.MaxFileCount;
|
|
254
|
-
if (this.isMultiFile || this.isFile)
|
|
255
|
-
addModel.Options.AllowedExtensions = resultModel.AllowedExtensions;
|
|
256
|
-
if (this.isSelect)
|
|
257
|
-
if (this.optionList.length > 0) {
|
|
258
|
-
for (let index = 0; index < this.optionList.length; index++) {
|
|
259
|
-
this.optionList[index].DisplayOrder = index + 1;
|
|
260
|
-
}
|
|
261
|
-
addModel.QuestionOptions = this.optionList;
|
|
262
|
-
}
|
|
263
|
-
paramArray.push(addModel);
|
|
264
|
-
return paramArray;
|
|
265
|
-
};
|
|
266
|
-
this.getAddFunction = (addModal) => {
|
|
267
|
-
if (!this.errorMessage)
|
|
268
|
-
return this.surveyQuestionService.add(addModal);
|
|
269
|
-
};
|
|
270
|
-
this.isValidTypeBoolean = true;
|
|
271
|
-
}
|
|
272
|
-
ngOnInit() {
|
|
273
|
-
for (let index = 0; index < 12; index++) {
|
|
274
|
-
var item = { key: index + 1, value: `${index + 1}` };
|
|
275
|
-
this.SizeList.push(item);
|
|
276
|
-
}
|
|
277
|
-
this.numberValidation.functionBody = (control) => {
|
|
278
|
-
if (!control.value) {
|
|
279
|
-
return null;
|
|
280
|
-
}
|
|
281
|
-
if (!control.value.toString().match(/^[0-9]*$/)) {
|
|
282
|
-
this.numberValidation.massage = this.l('IntegerNumberValidationKey');
|
|
283
|
-
return { customerError: true };
|
|
284
|
-
}
|
|
285
|
-
if (!control.value.toString().match(/^[+]?([.]\d+|\d+[.]?\d*)$/)) {
|
|
286
|
-
this.numberValidation.massage = this.l('PositiveNumberValidationKey');
|
|
287
|
-
return { customerError: true };
|
|
288
|
-
}
|
|
289
|
-
return null;
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
changeScoring(value) {
|
|
293
|
-
this.showScoreOption = value;
|
|
294
|
-
if (!value && this.addOptionForm.controls['Score']) {
|
|
295
|
-
this.addOptionForm.controls['Score'].reset();
|
|
296
|
-
this.addOptionForm.controls['Score'].clearValidators();
|
|
297
|
-
this.addOptionForm.controls['Score'].updateValueAndValidity();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
updateLengthValidator(name, max, min) {
|
|
301
|
-
let control = this.addOptionForm.controls[name];
|
|
302
|
-
if (control) {
|
|
303
|
-
control.setErrors(null);
|
|
304
|
-
control.clearValidators();
|
|
305
|
-
control.updateValueAndValidity();
|
|
306
|
-
let validationRules = [];
|
|
307
|
-
validationRules.push(Validators.min(min));
|
|
308
|
-
validationRules.push(Validators.max(max));
|
|
309
|
-
validationRules.push(Validators.required);
|
|
310
|
-
control.addValidators(validationRules);
|
|
311
|
-
control.updateValueAndValidity();
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
changeDataType(key) {
|
|
315
|
-
this.updateFormStatus(key);
|
|
316
|
-
switch (key) {
|
|
317
|
-
case SurveyOptionType.Text:
|
|
318
|
-
this.updateLengthValidator(this.addMaxLength.Name, 255, 1);
|
|
319
|
-
this.updateLengthValidator(this.addMinLength.Name, 255, 1);
|
|
320
|
-
this.addMaxLength.NumberRange.From = 1;
|
|
321
|
-
this.addMaxLength.NumberRange.To = 255;
|
|
322
|
-
this.addMinLength.NumberRange.From = 1;
|
|
323
|
-
this.addMinLength.NumberRange.To = 255;
|
|
324
|
-
this.isText = true;
|
|
325
|
-
this.isNumber = false;
|
|
326
|
-
this.isFile = false;
|
|
327
|
-
this.isMultiFile = false;
|
|
328
|
-
this.isImage = false;
|
|
329
|
-
this.isSelect = false;
|
|
330
|
-
break;
|
|
331
|
-
case SurveyOptionType.MultilineText:
|
|
332
|
-
this.updateLengthValidator(this.addMaxLength.Name, 4000, 1);
|
|
333
|
-
this.updateLengthValidator(this.addMinLength.Name, 4000, 1);
|
|
334
|
-
this.addMaxLength.NumberRange.From = 1;
|
|
335
|
-
this.addMaxLength.NumberRange.To = 4000;
|
|
336
|
-
this.addMinLength.NumberRange.From = 1;
|
|
337
|
-
this.addMinLength.NumberRange.To = 4000;
|
|
338
|
-
this.isText = true;
|
|
339
|
-
this.isNumber = false;
|
|
340
|
-
this.isFile = false;
|
|
341
|
-
this.isMultiFile = false;
|
|
342
|
-
this.isImage = false;
|
|
343
|
-
this.isSelect = false;
|
|
344
|
-
break;
|
|
345
|
-
case SurveyOptionType.Number:
|
|
346
|
-
this.updateLengthValidator(this.addMaxLength.Name, 100, 1);
|
|
347
|
-
this.updateLengthValidator(this.addMinLength.Name, 100, 1);
|
|
348
|
-
this.addMaxLength.NumberRange.From = 1;
|
|
349
|
-
this.addMaxLength.NumberRange.To = 100;
|
|
350
|
-
this.addMinLength.NumberRange.From = 1;
|
|
351
|
-
this.addMinLength.NumberRange.To = 100;
|
|
352
|
-
this.isNumber = true;
|
|
353
|
-
this.isText = false;
|
|
354
|
-
this.isFile = false;
|
|
355
|
-
this.isMultiFile = false;
|
|
356
|
-
this.isImage = false;
|
|
357
|
-
this.isSelect = false;
|
|
358
|
-
break;
|
|
359
|
-
case SurveyOptionType.File:
|
|
360
|
-
this.isFile = true;
|
|
361
|
-
this.isNumber = false;
|
|
362
|
-
this.isText = false;
|
|
363
|
-
this.isMultiFile = false;
|
|
364
|
-
this.isImage = false;
|
|
365
|
-
this.isSelect = false;
|
|
366
|
-
break;
|
|
367
|
-
case SurveyOptionType.MultiFile:
|
|
368
|
-
this.isMultiFile = true;
|
|
369
|
-
this.isNumber = false;
|
|
370
|
-
this.isText = false;
|
|
371
|
-
this.isFile = false;
|
|
372
|
-
this.isImage = false;
|
|
373
|
-
this.isSelect = false;
|
|
374
|
-
break;
|
|
375
|
-
case SurveyOptionType.Image:
|
|
376
|
-
this.isImage = true;
|
|
377
|
-
this.isMultiFile = false;
|
|
378
|
-
this.isNumber = false;
|
|
379
|
-
this.isText = false;
|
|
380
|
-
this.isFile = false;
|
|
381
|
-
this.isSelect = false;
|
|
382
|
-
break;
|
|
383
|
-
case SurveyOptionType.MultipleSelect:
|
|
384
|
-
case SurveyOptionType.SingleSelect:
|
|
385
|
-
case SurveyOptionType.RadioButton:
|
|
386
|
-
this.isNumber = false;
|
|
387
|
-
this.isText = false;
|
|
388
|
-
this.isFile = false;
|
|
389
|
-
this.isMultiFile = false;
|
|
390
|
-
this.isSelect = true;
|
|
391
|
-
this.isImage = false;
|
|
392
|
-
break;
|
|
393
|
-
default:
|
|
394
|
-
this.isNumber = false;
|
|
395
|
-
this.isText = false;
|
|
396
|
-
this.isFile = false;
|
|
397
|
-
this.isMultiFile = false;
|
|
398
|
-
this.isSelect = false;
|
|
399
|
-
this.isImage = false;
|
|
400
|
-
break;
|
|
401
|
-
}
|
|
402
|
-
this.ngWizardService.reset();
|
|
403
|
-
}
|
|
404
|
-
getLinkedQuestions(option) {
|
|
405
|
-
return this.Questions.filter((item) => option.LinkedQuestions.includes(item.key)).map((item) => item.value);
|
|
406
|
-
}
|
|
407
|
-
AddOption() {
|
|
408
|
-
this.totalScore = 0;
|
|
409
|
-
this.addOptionForm.markAllAsTouched();
|
|
410
|
-
if (this.addOptionForm.invalid) {
|
|
411
|
-
return;
|
|
412
|
-
}
|
|
413
|
-
let resultModel = this.addOptionForm.value;
|
|
414
|
-
if (this.optionList.length >= 1 && this.showScoreOption) {
|
|
415
|
-
for (let index = 0; index < this.optionList.length; index++) {
|
|
416
|
-
let element = this.optionList[index].Score;
|
|
417
|
-
if (element > 1000000) {
|
|
418
|
-
this.errorMessage = this.l('MaxOptionScoreErrorMessage');
|
|
419
|
-
return;
|
|
420
|
-
}
|
|
421
|
-
if (element < 1) {
|
|
422
|
-
this.errorMessage = this.l('MinOptionScoreErrorMessage');
|
|
423
|
-
return;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
this.showOptionList = false;
|
|
428
|
-
this.errorMessage = null;
|
|
429
|
-
let option = new SurveyQuestionOptionDTO();
|
|
430
|
-
option.Name.Arabic = resultModel.NameOption.Arabic;
|
|
431
|
-
option.Name.English = resultModel.NameOption.English;
|
|
432
|
-
debugger;
|
|
433
|
-
if (resultModel.DisplayOrder)
|
|
434
|
-
option.DisplayOrder = resultModel.DisplayOrder;
|
|
435
|
-
else
|
|
436
|
-
option.DisplayOrder = this.optionList.length + 1;
|
|
437
|
-
option.LinkedQuestions = resultModel.LinkedQuestions;
|
|
438
|
-
if (this.showScoreOption)
|
|
439
|
-
option.Score = Number.parseFloat(resultModel.Score);
|
|
440
|
-
this.addOptionForm.reset();
|
|
441
|
-
this.addOptionForm.controls['NameOption'].reset();
|
|
442
|
-
this.addOptionForm.controls['DisplayOrder'].reset();
|
|
443
|
-
this.addOptionForm.controls['LinkedQuestions'].reset();
|
|
444
|
-
if (this.showScoreOption)
|
|
445
|
-
this.addOptionForm.controls['Score'].reset();
|
|
446
|
-
this.optionList.splice(option.DisplayOrder - 1, 0, option);
|
|
447
|
-
this.showOptionList = true;
|
|
448
|
-
this.isOptionInEditMode = false;
|
|
449
|
-
}
|
|
450
|
-
getOptionByOrder(index, option) {
|
|
451
|
-
return option.DisplayOrder;
|
|
452
|
-
}
|
|
453
|
-
deleteOption(option) {
|
|
454
|
-
this.optionList = this.optionList.filter((item) => item != option);
|
|
455
|
-
}
|
|
456
|
-
editOption(option) {
|
|
457
|
-
debugger;
|
|
458
|
-
if ((this.addOptionForm.touched == true && this.addOptionForm.valid) ||
|
|
459
|
-
this.addOptionForm.touched == false)
|
|
460
|
-
this.AddOption();
|
|
461
|
-
else {
|
|
462
|
-
this.addOptionForm.markAllAsTouched();
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
let name = new EnglishArabicDTO();
|
|
466
|
-
name.Arabic = option.Name.Arabic ?? null;
|
|
467
|
-
name.English = option.Name.English ?? null;
|
|
468
|
-
this.addOptionForm.controls['NameOption'].setValue(name);
|
|
469
|
-
this.addOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
|
|
470
|
-
this.addOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
|
|
471
|
-
if (this.showScoreOption)
|
|
472
|
-
this.addOptionForm.controls['Score'].setValue(option.Score);
|
|
473
|
-
this.optionList = this.optionList.filter((item) => item != option);
|
|
474
|
-
this.isOptionInEditMode = true;
|
|
475
|
-
}
|
|
476
|
-
fromTo(fromField, toField) {
|
|
477
|
-
return (formGroup) => {
|
|
478
|
-
const fromDate = formGroup.get(fromField);
|
|
479
|
-
const toDate = formGroup.get(toField);
|
|
480
|
-
if (fromDate !== null && toDate !== null) {
|
|
481
|
-
if (fromDate.value !== null &&
|
|
482
|
-
toDate.value !== null &&
|
|
483
|
-
parseInt(fromDate.value) > parseInt(toDate.value)) {
|
|
484
|
-
fromDate.markAsTouched();
|
|
485
|
-
toDate.markAsTouched();
|
|
486
|
-
toDate.setErrors({
|
|
487
|
-
errorMassage: this.l('GreaterThanOrEqualTo'),
|
|
488
|
-
});
|
|
489
|
-
return null;
|
|
490
|
-
}
|
|
491
|
-
if (fromDate.value !== null &&
|
|
492
|
-
toDate.value !== null &&
|
|
493
|
-
parseInt(fromDate.value) < parseInt(toDate.value) &&
|
|
494
|
-
parseInt(toDate.value) < 255 &&
|
|
495
|
-
parseInt(fromDate.value) < 255)
|
|
496
|
-
toDate.setErrors(null);
|
|
497
|
-
}
|
|
498
|
-
return null;
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
updateFormStatus(key) {
|
|
502
|
-
switch (key) {
|
|
503
|
-
case SurveyOptionType.Text:
|
|
504
|
-
case SurveyOptionType.MultilineText:
|
|
505
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
506
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
507
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
508
|
-
this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
509
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
510
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
511
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
512
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
513
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
514
|
-
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
515
|
-
break;
|
|
516
|
-
case SurveyOptionType.Number:
|
|
517
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
518
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
519
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
520
|
-
this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
521
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
522
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
523
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
524
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
525
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
526
|
-
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
527
|
-
break;
|
|
528
|
-
case SurveyOptionType.File:
|
|
529
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
530
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
531
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
532
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
533
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
534
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
535
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
536
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
537
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
538
|
-
this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
539
|
-
break;
|
|
540
|
-
case SurveyOptionType.MultiFile:
|
|
541
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
542
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
543
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
544
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
545
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
546
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
547
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
548
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
549
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
550
|
-
this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
551
|
-
break;
|
|
552
|
-
case SurveyOptionType.Image:
|
|
553
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
554
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
555
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
556
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
557
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
558
|
-
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
559
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
560
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
561
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
562
|
-
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
563
|
-
break;
|
|
564
|
-
case SurveyOptionType.MultipleSelect:
|
|
565
|
-
case SurveyOptionType.SingleSelect:
|
|
566
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
567
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
568
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
569
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
570
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
571
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
572
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
573
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
574
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
575
|
-
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
576
|
-
break;
|
|
577
|
-
default:
|
|
578
|
-
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
579
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
580
|
-
if (this.addModelForm.get(this.addMinLength.Name))
|
|
581
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
582
|
-
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
583
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
584
|
-
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
585
|
-
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
586
|
-
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
587
|
-
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
588
|
-
break;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
isValidFunctionReturnsBoolean(args) {
|
|
592
|
-
let returnValue = true;
|
|
593
|
-
this.mainFormControls = [];
|
|
594
|
-
this.mainFormControls.push(this.addModelForm.get(this.addQuestion.Name), this.addModelForm.get(this.addDescription.Name), this.addModelForm.get(this.addQuestionType.Name), this.addModelForm.get(this.audience.Name));
|
|
595
|
-
if (args.fromStep.index == 0)
|
|
596
|
-
for (var i = 0; i < this.mainFormControls.length; i++) {
|
|
597
|
-
this.mainFormControls[i].markAllAsTouched();
|
|
598
|
-
if (!this.mainFormControls[i].valid)
|
|
599
|
-
returnValue = false;
|
|
600
|
-
}
|
|
601
|
-
return returnValue;
|
|
602
|
-
}
|
|
603
|
-
isValidFunctionReturnsObservable(args) {
|
|
604
|
-
return of(true);
|
|
605
|
-
}
|
|
606
|
-
//drag and drop
|
|
607
|
-
drop(event) {
|
|
608
|
-
moveItemInArray(this.optionList, event.previousIndex, event.currentIndex);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
AddQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }, { token: i2.NgWizardService }], target: i0.ɵɵFactoryTarget.Component });
|
|
612
|
-
AddQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
613
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
614
|
-
type: Component,
|
|
615
|
-
args: [{ selector: 'app-add-question', template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n" }]
|
|
616
|
-
}], ctorParameters:
|
|
617
|
-
type: ViewChild,
|
|
618
|
-
args: ['AddModal', { static: false }]
|
|
619
|
-
}], pagingElement: [{
|
|
620
|
-
type: Input
|
|
621
|
-
}], onSuccessAddHandler: [{
|
|
622
|
-
type: Input
|
|
623
|
-
}] } });
|
|
624
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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QUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7a0hBcnlCVSxvQkFBb0I7c0dBQXBCLG9CQUFvQiw2UUMzQ2pDLCttT0FtSUE7NEZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7aUtBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICduZy13aXphcmQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uLW9wdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1xdWVzdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHF1ZXN0aW9uVHlwZTogU3VydmV5T3B0aW9uVHlwZTtcclxuICBwdWJsaWMgYXVkaWVuY2VUeXBlID0gQXVkaWVuY2VUeXBlO1xyXG4gIGlzTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNNdWx0aUZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaXplTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgYWRkTW9kZWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gIGFkZFF1ZXN0aW9uOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBhZGREZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGFkZFF1ZXN0aW9uVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGF1ZGllbmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkUmVxdWlyZWQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRBbGxvd1Njb3JlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkSGFzU2VhcmNoOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkSXNBY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRNaW5MZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heExlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUm93c051bWJlcjogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkTWF4RmlsZVNpemU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVDb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRmlsZXNFeHRlbnNpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkU2l6ZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIG51bWJlclZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24gPSBuZXcgQ3VzdG9tVmFsaWRhdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0FkZE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIEFkZE1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICBhZGRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkTmFtZU9wdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc2NvcmVOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIG9wdGlvbkxpc3Q6IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPW10gPSBbXTtcclxuICBhZGRPcHRpb25MaW5rZWRRdWVzdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBzaG93U2NvcmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93T3B0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gbnVsbDtcclxuICB0b3RhbFNjb3JlOiBudW1iZXIgPSAwO1xyXG4gIG1haW5Gb3JtQ29udHJvbHM6IGFueVtdO1xyXG4gIHN1cnZleUlEOiBzdHJpbmc7XHJcbiAgYXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBkaXNwbGF5T3JkZXJPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dPcHRpb25MaXN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBvcmRlckNoYW5nZTogYm9vbGVhbjtcclxuICBpc09wdGlvbkluRWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgUXVlc3Rpb25zOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgc3VydmV5UXVlc3Rpb25TZXJ2aWNlOiBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nV2l6YXJkU2VydmljZTogTmdXaXphcmRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2luZ0VsZW1lbnQ7XHJcbiAgQElucHV0KCkgb25TdWNjZXNzQWRkSGFuZGxlcjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMTI7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGl0ZW0gPSB7IGtleTogaW5kZXggKyAxLCB2YWx1ZTogYCR7aW5kZXggKyAxfWAgfTtcclxuICAgICAgdGhpcy5TaXplTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChcclxuICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSokLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnSW50ZWdlck51bWJlclZhbGlkYXRpb25LZXknKTtcclxuICAgICAgICByZXR1cm4geyBjdXN0b21lckVycm9yOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bK10/KFsuXVxcZCt8XFxkK1suXT9cXGQqKSQvKSkge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5tYXNzYWdlID0gdGhpcy5sKCdQb3NpdGl2ZU51bWJlclZhbGlkYXRpb25LZXknKTtcclxuICAgICAgICByZXR1cm4geyBjdXN0b21lckVycm9yOiB0cnVlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNjb3JpbmcodmFsdWUpIHtcclxuICAgIHRoaXMuc2hvd1Njb3JlT3B0aW9uID0gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlICYmIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXSkge1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGVuZ3RoVmFsaWRhdG9yKG5hbWUsIG1heCwgbWluKSB7XHJcbiAgICBsZXQgY29udHJvbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1tuYW1lXTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgbGV0IHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbihtaW4pKTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXgobWF4KSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBjb250cm9sLmFkZFZhbGlkYXRvcnModmFsaWRhdGlvblJ1bGVzKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlKGtleSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtU3RhdHVzKGtleSk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGVuZ3RoVmFsaWRhdG9yKHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUsIDI1NSwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAyNTU7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAyNTU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCA0MDAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCA0MDAwLCAxKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZS5UbyA9IDQwMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGVuZ3RoVmFsaWRhdG9yKHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUsIDEwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uZ1dpemFyZFNlcnZpY2UucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIGFkZE1vZGFsID0gKHN1cnZleUlkLCBhdWRpZW5jZVR5cGUpID0+IHtcclxuICAgIHRoaXMuc3VydmV5SUQgPSBzdXJ2ZXlJZDtcclxuICAgIHRoaXMuYXVkaWVuY2VUeXBlSUQgPSBhdWRpZW5jZVR5cGU7XHJcbiAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZVxyXG4gICAgICAubG9hZEFkZERyb3Bkb3duKHRoaXMuc3VydmV5SUQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXMgYXMgYW55O1xyXG4gICAgICAgIHRoaXMuUXVlc3Rpb25zID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRNb2RlbEZvcm07XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZE1vZGVsO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPVxyXG4gICAgICAgICAgdGhpcy5nZXRBZGRGdW5jdGlvbjtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID1cclxuICAgICAgICAgIHRoaXMub25TdWNjZXNzQWRkSGFuZGxlcjtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5OYW1lID0gJ1RleHQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uQXJhYmljTGFiZWxLZXkgPSAnUXVlc3Rpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnUXVlc3Rpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5NYXhMZW5ndGggPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uTmFtZSA9ICdEZXNjcmlwdGlvbic7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9ICdEZXNjcmlwdGlvbkluQXJhYmljJztcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9ICdEZXNjcmlwdGlvbkluRW5nbGlzaCc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTA7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5Sb3dzID0gMjtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgICAnUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnRBcmFiaWMnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50RW5nbGlzaCdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5OYW1lID0gJ1F1ZXN0aW9uVHlwZUl0ZW1JRCc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTGFiZWxLZXkgPSAnVHlwZSc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkRhdGFTb3VyY2UgPSByZXN1bHQub3B0aW9uVHlwZXM7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLk5hbWUgPSAnQXVkaWVuY2VJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxLZXkgPSAnQXVkaWVuY2UnO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuU2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5EYXRhU291cmNlID0gcmVzdWx0LmF1ZGllbmNlcztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLlNlbGVjdGVkSXRlbXMgPSBhdWRpZW5jZVR5cGU7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdBdWRpZW5jZURlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFNpemUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLk5hbWUgPSAnU2l6ZSc7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLkxhYmVsS2V5ID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5EYXRhU291cmNlID0gdGhpcy5TaXplTGlzdDtcclxuICAgICAgICB0aGlzLmFkZFNpemUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuU2VsZWN0ZWRJdGVtcyA9IDEyO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkLk5hbWUgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5MYWJlbEtleSA9ICdJc1JlcXVpcmVkJztcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ1JlcXVpcmVkRGVzY3JpcHRpb25IaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUuTmFtZSA9ICdJc0FsbG93U2NvcmluZyc7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLkxhYmVsS2V5ID0gJ0FsbG93U2NvcmUnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdBbGxvd1Njb3JlRGVzY3JpcHRpb24nKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRIYXNTZWFyY2ggPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRIYXNTZWFyY2guTmFtZSA9ICdIYXNTZWFyY2gnO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLkxhYmVsS2V5ID0gJ0hhc1NlYXJjaCc7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5OYW1lID0gJ0lzVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5MYWJlbEtleSA9ICdWaXNpYmxlJztcclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlLlZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ0dlbmVyaWNWaXNpYmxlSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5MYWJlbEtleSA9ICdNYXhMZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNYXhIaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTmFtZSA9ICdNaW5MZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLkxhYmVsS2V5ID0gJ01pbkxlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ01pbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk5hbWUgPSAnUm93cyc7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLkxhYmVsS2V5ID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lID0gJ01heEZpbGVTaXplSW5NQic7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5MYWJlbEtleSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5UbyA9IDEwMDtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUgPSAnTWF4RmlsZUNvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5MYWJlbEtleSA9ICdNYXhGaWxlc0NvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLlRvID0gNTA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNYXhGaWxlQ291bnRIaW50Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuQ3VzdG9tVmFsaWRhdGlvbiA9IFt0aGlzLm51bWJlclZhbGlkYXRpb25dO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lID0gJ0FsbG93ZWRFeHRlbnNpb25zJztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5MYWJlbEtleSA9ICdFeHRlbnNpb25zJztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuRGF0YVNvdXJjZSA9IHJlc3VsdC5leHRlbnNpb25zO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnRXh0ZW5zaW9uSGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubCgnTm9SZXN1bHRGb3VuZCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5hZGRWYWxpZGF0b3JzKHRoaXMuZnJvbVRvKCdNaW5MZW5ndGgnLCAnTWF4TGVuZ3RoJykpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTmFtZSA9ICdOYW1lT3B0aW9uJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uQXJhYmljTGFiZWxLZXkgPSAnTmFtZUluQXJhYmljJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gJ05hbWVJbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTWF4TGVuZ3RoID0gMjI1O1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24uTmFtZSA9ICdEaXNwbGF5T3JkZXInO1xyXG5cclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5OYW1lID0gJ1Njb3JlJztcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLkxhYmVsS2V5ID0gJ1Njb3JlJztcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgcmFuZ2VOdW1iZXIuVG8gPSAxMDAwMDAwO1xyXG4gICAgICAgIHJhbmdlTnVtYmVyLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTnVtYmVyUmFuZ2UgPSByYW5nZU51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTmFtZSA9ICdMaW5rZWRRdWVzdGlvbnMnO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsS2V5ID0gJ0xpbmtlZFF1ZXN0aW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQucXVlc3Rpb25zO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubCgnTm9SZXN1bHRGb3VuZCcpO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgICAnTGlua2VkUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnQnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwodGhpcy5BZGRNb2RhbCwgJ3hsJyk7XHJcbiAgICAgICAgdGhpcy5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9KTtcclxuICB9O1xyXG4gIGdldEFkZE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgcmVzdWx0T3B0aW9uTW9kZWwgPSB0aGlzLmFkZE9wdGlvbkZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRNb2RlbEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9ICcnKSB8fFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gJycpIHx8XHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5TY29yZSA+IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdPcHRpb25QZW5kaW5nRGF0YUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPT0gMCAmJiB0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ09wdGlvbkVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IGFkZE1vZGVsOiBTdXJ2ZXlRdWVzdGlvbkRUTyA9IG5ldyBTdXJ2ZXlRdWVzdGlvbkRUTygpO1xyXG4gICAgYWRkTW9kZWwuU3VydmV5SUQgPSB0aGlzLnN1cnZleUlEO1xyXG4gICAgYWRkTW9kZWwuVGV4dC5BcmFiaWMgPSByZXN1bHRNb2RlbC5UZXh0LkFyYWJpYztcclxuICAgIGFkZE1vZGVsLlRleHQuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLlRleHQuRW5nbGlzaDtcclxuICAgIGFkZE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGFkZE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5EZXNjcmlwdGlvbi5BcmFiaWMgPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgaWYgKHRoaXMuYXVkaWVuY2VUeXBlSUQgPT0gQXVkaWVuY2VUeXBlLkJvdGgpXHJcbiAgICAgIGFkZE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gcmVzdWx0TW9kZWwuQXVkaWVuY2VJdGVtSUQ7XHJcbiAgICBlbHNlIGFkZE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gdGhpcy5hdWRpZW5jZVR5cGVJRDtcclxuICAgIGFkZE1vZGVsLlF1ZXN0aW9uVHlwZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLlF1ZXN0aW9uVHlwZUl0ZW1JRDtcclxuICAgIGFkZE1vZGVsLklzQWxsb3dTY29yaW5nID0gcmVzdWx0TW9kZWwuSXNBbGxvd1Njb3Jpbmc7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLlNpemUgPSByZXN1bHRNb2RlbC5TaXplO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5Jc1JlcXVpcmVkID0gcmVzdWx0TW9kZWwuSXNSZXF1aXJlZDtcclxuICAgIGFkZE1vZGVsLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgYWRkTW9kZWwuSXNWaXNpYmxlID0gcmVzdWx0TW9kZWwuSXNWaXNpYmxlO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5IYXNTZWFyY2ggPSByZXN1bHRNb2RlbC5IYXNTZWFyY2g7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNUZXh0IHx8IHRoaXMuaXNOdW1iZXIpIHtcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NaW5MZW5ndGggPSByZXN1bHRNb2RlbC5NaW5MZW5ndGg7XHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4TGVuZ3RoID0gcmVzdWx0TW9kZWwuTWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRmlsZSB8fCB0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNJbWFnZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhGaWxlU2l6ZUluTUIgPSByZXN1bHRNb2RlbC5NYXhGaWxlU2l6ZUluTUI7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4RmlsZUNvdW50ID0gcmVzdWx0TW9kZWwuTWF4RmlsZUNvdW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNGaWxlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLkFsbG93ZWRFeHRlbnNpb25zID0gcmVzdWx0TW9kZWwuQWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkTW9kZWwuUXVlc3Rpb25PcHRpb25zID0gdGhpcy5vcHRpb25MaXN0O1xyXG4gICAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcbiAgZ2V0QWRkRnVuY3Rpb24gPSAoYWRkTW9kYWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSkgcmV0dXJuIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFkZChhZGRNb2RhbCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0TGlua2VkUXVlc3Rpb25zKG9wdGlvbjogU3VydmV5UXVlc3Rpb25PcHRpb25EVE8pIHtcclxuICAgIHJldHVybiB0aGlzLlF1ZXN0aW9ucy5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMuaW5jbHVkZXMoaXRlbS5rZXkpXHJcbiAgICApLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBBZGRPcHRpb24oKSB7XHJcbiAgICB0aGlzLnRvdGFsU2NvcmUgPSAwO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLmFkZE9wdGlvbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmFkZE9wdGlvbkZvcm0udmFsdWUgYXMgYW55O1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID49IDEgJiYgdGhpcy5zaG93U2NvcmVPcHRpb24pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3B0aW9uTGlzdFtpbmRleF0uU2NvcmU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPiAxMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWF4T3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPCAxKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWluT3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvd09wdGlvbkxpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIGxldCBvcHRpb24gPSBuZXcgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8oKTtcclxuICAgIG9wdGlvbi5OYW1lLkFyYWJpYyA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uQXJhYmljO1xyXG4gICAgb3B0aW9uLk5hbWUuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaDtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcilcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcjtcclxuICAgIGVsc2Ugb3B0aW9uLkRpc3BsYXlPcmRlciA9IHRoaXMub3B0aW9uTGlzdC5sZW5ndGggKyAxO1xyXG5cclxuICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMgPSByZXN1bHRNb2RlbC5MaW5rZWRRdWVzdGlvbnM7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIG9wdGlvbi5TY29yZSA9IE51bWJlci5wYXJzZUZsb2F0KHJlc3VsdE1vZGVsLlNjb3JlKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydOYW1lT3B0aW9uJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snRGlzcGxheU9yZGVyJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTGlua2VkUXVlc3Rpb25zJ10ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbikgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3Quc3BsaWNlKG9wdGlvbi5EaXNwbGF5T3JkZXIgLSAxLCAwLCBvcHRpb24pO1xyXG4gICAgdGhpcy5zaG93T3B0aW9uTGlzdCA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZSA9IGZhbHNlO1xyXG4gIH1cclxuICBnZXRPcHRpb25CeU9yZGVyKGluZGV4OiBudW1iZXIsIG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gb3B0aW9uLkRpc3BsYXlPcmRlcjtcclxuICB9XHJcbiAgZGVsZXRlT3B0aW9uKG9wdGlvbikge1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9wdGlvbihvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuYWRkT3B0aW9uRm9ybS50b3VjaGVkID09IHRydWUgJiYgdGhpcy5hZGRPcHRpb25Gb3JtLnZhbGlkKSB8fFxyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0udG91Y2hlZCA9PSBmYWxzZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLkFkZE9wdGlvbigpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgIG5hbWUuQXJhYmljID0gb3B0aW9uLk5hbWUuQXJhYmljID8/IG51bGw7XHJcbiAgICBuYW1lLkVuZ2xpc2ggPSBvcHRpb24uTmFtZS5FbmdsaXNoID8/IG51bGw7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ05hbWVPcHRpb24nXS5zZXRWYWx1ZShuYW1lKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snRGlzcGxheU9yZGVyJ10uc2V0VmFsdWUob3B0aW9uLkRpc3BsYXlPcmRlcik7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0xpbmtlZFF1ZXN0aW9ucyddLnNldFZhbHVlKFxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10uc2V0VmFsdWUob3B0aW9uLlNjb3JlKTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IHRoaXMub3B0aW9uTGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gb3B0aW9uKTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZyb21Ubyhmcm9tRmllbGQ6IHN0cmluZywgdG9GaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlID0gZm9ybUdyb3VwLmdldChmcm9tRmllbGQpO1xyXG4gICAgICBjb25zdCB0b0RhdGUgPSBmb3JtR3JvdXAuZ2V0KHRvRmllbGQpO1xyXG4gICAgICBpZiAoZnJvbURhdGUgIT09IG51bGwgJiYgdG9EYXRlICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHRvRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpID4gcGFyc2VJbnQodG9EYXRlLnZhbHVlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZnJvbURhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5zZXRFcnJvcnMoe1xyXG4gICAgICAgICAgICBlcnJvck1hc3NhZ2U6IHRoaXMubCgnR3JlYXRlclRoYW5PckVxdWFsVG8nKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyb21EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICB0b0RhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA8IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkgJiZcclxuICAgICAgICAgIHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkgPCAyNTUgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA8IDI1NVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRvRGF0ZS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZvcm1TdGF0dXMoa2V5OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5UZXh0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkVHlwZUJvb2xlYW46IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBpc1ZhbGlkRnVuY3Rpb25SZXR1cm5zQm9vbGVhbihhcmdzOiBTdGVwVmFsaWRhdGlvbkFyZ3MpIHtcclxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHMgPSBbXTtcclxuICAgIHRoaXMubWFpbkZvcm1Db250cm9scy5wdXNoKFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRRdWVzdGlvbi5OYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRGVzY3JpcHRpb24uTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZFF1ZXN0aW9uVHlwZS5OYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYXVkaWVuY2UuTmFtZSlcclxuICAgICk7XHJcbiAgICBpZiAoYXJncy5mcm9tU3RlcC5pbmRleCA9PSAwKVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWFpbkZvcm1Db250cm9scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMubWFpbkZvcm1Db250cm9sc1tpXS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1haW5Gb3JtQ29udHJvbHNbaV0udmFsaWQpIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRGdW5jdGlvblJldHVybnNPYnNlcnZhYmxlKGFyZ3M6IFN0ZXBWYWxpZGF0aW9uQXJncykge1xyXG4gICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy9kcmFnIGFuZCBkcm9wXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5vcHRpb25MaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI0FkZE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICB7e2woXCJBZGRfUXVlc3Rpb25cIil9fVxyXG4gICAgPC9oND5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBzdmctaWNvbi1ob3Zlci1icmFuZFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL21vZGFsY2xvc2Uuc3ZnJ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiYWRkUXVlc3Rpb25cIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJhZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiYXVkaWVuY2VUeXBlSUQ9PWF1ZGllbmNlVHlwZS5Cb3RoXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImF1ZGllbmNlXCIgIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFF1ZXN0aW9uVHlwZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlRGF0YVR5cGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkU2l6ZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1NlbGVjdFwiID5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRBbGxvd1Njb3JlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTY29yaW5nKCRldmVudClcIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkSXNBY3RpdmVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkUmVxdWlyZWRcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1pbkxlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4TGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heEZpbGVTaXplXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4RmlsZUNvdW50XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlc0V4dGVuc2lvbnNcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTZWxlY3RcIiBjbGFzcz1cInF1ZXN0aW9uLXR5cGUtb3B0aW9uXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTRcIj57e2woJ09wdGlvbnMnKX19PC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiICpuZ0lmPVwic2hvd09wdGlvbkxpc3RcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIiAqbmdGb3I9XCJsZXQgT3B0aW9uIG9mIG9wdGlvbkxpc3Q7XCIgY2RrRHJhZz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmcy02IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0Q3VycmVudEZhaWxPdmVyKE9wdGlvbi5OYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFyayBtZS00XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIiBuZ2JUb29sdGlwPVwie3tsKCdTY29yZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7T3B0aW9uLlNjb3JlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiICpuZ0lmPVwiT3B0aW9uLkxpbmtlZFF1ZXN0aW9ucz8ubGVuZ3RoPjBcIiBuZ2JUb29sdGlwPVwie3tnZXRMaW5rZWRRdWVzdGlvbnMoT3B0aW9uKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKGNsaWNrKT1cImVkaXRPcHRpb24oT3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRWRpdCcpfX1cIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9FZGl0LnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhbmdlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihPcHRpb24pXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYWxlcnQtZGFuZ2VyIGFsZXJ0LWRhbmdlclwiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24tZGFuZ2VyIG1lLTRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj48ZGl2IGNsYXNzPVwiZnMtNyB0ZXh0LWRhbmdlclwiPnt7ZXJyb3JNZXNzYWdlfX08L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBlYXRlci1iZ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lT3B0aW9uXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkaXNwbGF5T3JkZXJPcHRpb25cIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2NvcmVOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJBZGRPcHRpb24oKVwiICpuZ0lmPVwiIWlzT3B0aW9uSW5FZGl0TW9kZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmQgdy0xMDBcIj57e2woXCJBZGRcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJBZGRPcHRpb24oKVwiICpuZ0lmPVwiaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkVkaXRcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHBiLTAgbS0wXCIgPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCIgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICB7e2woXCJDYW5jZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBhcHBQcmV2ZW50RG91YmxlQ2xpY2sgdHlwZT1cInN1Ym1pdFwiICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPnt7bChcIlNhdmVcIil9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
1
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
2
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { FormGroup, Validators } from '@angular/forms';
|
|
4
|
+
import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions, } from '@bnsights/bbsf-controls';
|
|
5
|
+
import { of } from 'rxjs';
|
|
6
|
+
import { AudienceType, SurveyOptionType } from '../../../../Enums/Enums';
|
|
7
|
+
import { SurveyQuestionDTO } from '../../../../models/SurveyModels/survey-question';
|
|
8
|
+
import { SurveyQuestionOptionDTO } from '../../../../models/SurveyModels/survey-question-option';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../../Services/survey-question.service";
|
|
11
|
+
import * as i2 from "@kronscht/ng-wizard";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "@bnsights/bbsf-controls";
|
|
14
|
+
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
15
|
+
import * as i6 from "@angular/cdk/drag-drop";
|
|
16
|
+
import * as i7 from "ng-inline-svg-2";
|
|
17
|
+
export class AddQuestionComponent extends AppBaseComponent {
|
|
18
|
+
constructor(injector, surveyQuestionService, ngWizardService) {
|
|
19
|
+
super(injector);
|
|
20
|
+
this.injector = injector;
|
|
21
|
+
this.surveyQuestionService = surveyQuestionService;
|
|
22
|
+
this.ngWizardService = ngWizardService;
|
|
23
|
+
this.audienceType = AudienceType;
|
|
24
|
+
this.isNumber = false;
|
|
25
|
+
this.isText = false;
|
|
26
|
+
this.isFile = false;
|
|
27
|
+
this.isMultiFile = false;
|
|
28
|
+
this.isImage = false;
|
|
29
|
+
this.isSelect = false;
|
|
30
|
+
this.SizeList = [];
|
|
31
|
+
this.addModelForm = new FormGroup({});
|
|
32
|
+
this.addSurveyQuestionFormOptions = new FormOptions();
|
|
33
|
+
this.numberValidation = new CustomValidation();
|
|
34
|
+
this.addOptionForm = new FormGroup({});
|
|
35
|
+
this.optionList = [];
|
|
36
|
+
this.showScoreOption = false;
|
|
37
|
+
this.showOptions = false;
|
|
38
|
+
this.errorMessage = null;
|
|
39
|
+
this.totalScore = 0;
|
|
40
|
+
this.showOptionList = true;
|
|
41
|
+
this.addModal = (surveyId, audienceType) => {
|
|
42
|
+
this.surveyID = surveyId;
|
|
43
|
+
this.audienceTypeID = audienceType;
|
|
44
|
+
this.isNumber = false;
|
|
45
|
+
this.isText = false;
|
|
46
|
+
this.isFile = false;
|
|
47
|
+
this.isMultiFile = false;
|
|
48
|
+
this.isSelect = false;
|
|
49
|
+
this.isImage = false;
|
|
50
|
+
this.optionList = [];
|
|
51
|
+
this.errorMessage = null;
|
|
52
|
+
this.surveyQuestionService
|
|
53
|
+
.loadAddDropdown(this.surveyID)
|
|
54
|
+
.subscribe((res) => {
|
|
55
|
+
let result = res;
|
|
56
|
+
this.Questions = result.questions;
|
|
57
|
+
this.addModelForm = new FormGroup({});
|
|
58
|
+
this.addOptionForm = new FormGroup({});
|
|
59
|
+
this.addSurveyQuestionFormOptions = new FormOptions();
|
|
60
|
+
this.addSurveyQuestionFormOptions.FormGroup = this.addModelForm;
|
|
61
|
+
this.addSurveyQuestionFormOptions.GetModelFunction = this.getAddModel;
|
|
62
|
+
this.addSurveyQuestionFormOptions.ServiceSubmitFunction =
|
|
63
|
+
this.getAddFunction;
|
|
64
|
+
this.addSurveyQuestionFormOptions.PagingReference = this.pagingElement;
|
|
65
|
+
this.addSurveyQuestionFormOptions.OnSuccessHandler =
|
|
66
|
+
this.onSuccessAddHandler;
|
|
67
|
+
this.addSurveyQuestionFormOptions.DisableSuccessNotification = true;
|
|
68
|
+
this.addQuestion = new MultiLingualTextBoxOptions();
|
|
69
|
+
this.addQuestion.Name = 'Text';
|
|
70
|
+
this.addQuestion.ArabicLabelKey = 'QuestionInArabic';
|
|
71
|
+
this.addQuestion.EnglishLabelKey = 'QuestionInEnglish';
|
|
72
|
+
this.addQuestion.IsRequired = true;
|
|
73
|
+
this.addQuestion.MaxLength = 4000;
|
|
74
|
+
this.addQuestion.LanguageMode = this.getLanguageModeValue();
|
|
75
|
+
this.addDescription = new MultiLingualTextAreaOptions();
|
|
76
|
+
this.addDescription.Name = 'Description';
|
|
77
|
+
this.addDescription.ArabicLabelKey = 'DescriptionInArabic';
|
|
78
|
+
this.addDescription.EnglishLabelKey = 'DescriptionInEnglish';
|
|
79
|
+
this.addDescription.IsRequired = false;
|
|
80
|
+
this.addDescription.MaxLength = 250;
|
|
81
|
+
this.addDescription.Rows = 2;
|
|
82
|
+
this.addDescription.LanguageMode = this.getLanguageModeValue();
|
|
83
|
+
this.addDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
|
|
84
|
+
this.addDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
|
|
85
|
+
this.addQuestionType = new DropdownOptions();
|
|
86
|
+
this.addQuestionType.Name = 'QuestionTypeItemID';
|
|
87
|
+
this.addQuestionType.LabelKey = 'Type';
|
|
88
|
+
this.addQuestionType.IsRequired = true;
|
|
89
|
+
this.addQuestionType.AllowSearchFilter = true;
|
|
90
|
+
this.addQuestionType.DataSource = result.optionTypes;
|
|
91
|
+
this.addQuestionType.SingleSelection = true;
|
|
92
|
+
this.addQuestionType.NotFoundText = this.l('NoResultFound');
|
|
93
|
+
this.audience = new DropdownOptions();
|
|
94
|
+
this.audience.Name = 'AudienceItemID';
|
|
95
|
+
this.audience.LabelKey = 'Audience';
|
|
96
|
+
this.audience.IsRequired = true;
|
|
97
|
+
this.audience.ViewType = ControlLayout.Vertical;
|
|
98
|
+
this.audience.SingleSelection = true;
|
|
99
|
+
this.audience.ShowCheckbox = false;
|
|
100
|
+
this.audience.DataSource = result.audiences;
|
|
101
|
+
this.audience.SelectedItems = audienceType;
|
|
102
|
+
this.audience.LabelDescription = this.l('AudienceDescriptionHint');
|
|
103
|
+
this.addSize = new DropdownOptions();
|
|
104
|
+
this.addSize.Name = 'Size';
|
|
105
|
+
this.addSize.LabelKey = 'Size';
|
|
106
|
+
this.addSize.IsRequired = true;
|
|
107
|
+
this.addSize.AllowSearchFilter = true;
|
|
108
|
+
this.addSize.DataSource = this.SizeList;
|
|
109
|
+
this.addSize.SingleSelection = true;
|
|
110
|
+
this.addSize.SelectedItems = 12;
|
|
111
|
+
this.addSize.NotFoundText = this.l('NoResultFound');
|
|
112
|
+
this.addRequired = new ToggleSlideOptions();
|
|
113
|
+
this.addRequired.Name = 'IsRequired';
|
|
114
|
+
this.addRequired.LabelKey = 'IsRequired';
|
|
115
|
+
this.addRequired.LabelDescription = this.l('RequiredDescriptionHint');
|
|
116
|
+
this.addAllowScore = new ToggleSlideOptions();
|
|
117
|
+
this.addAllowScore.Name = 'IsAllowScoring';
|
|
118
|
+
this.addAllowScore.LabelKey = 'AllowScore';
|
|
119
|
+
this.addAllowScore.LabelDescription = this.l('AllowScoreDescription');
|
|
120
|
+
this.addHasSearch = new ToggleSlideOptions();
|
|
121
|
+
this.addHasSearch.Name = 'HasSearch';
|
|
122
|
+
this.addHasSearch.LabelKey = 'HasSearch';
|
|
123
|
+
this.addIsActive = new ToggleSlideOptions();
|
|
124
|
+
this.addIsActive.Name = 'IsVisible';
|
|
125
|
+
this.addIsActive.LabelKey = 'Visible';
|
|
126
|
+
this.addIsActive.Value = true;
|
|
127
|
+
this.addIsActive.LabelDescription = this.l('GenericVisibleHint');
|
|
128
|
+
this.addMaxLength = new TextBoxOptions();
|
|
129
|
+
this.addMaxLength.Name = 'MaxLength';
|
|
130
|
+
this.addMaxLength.LabelKey = 'MaxLength';
|
|
131
|
+
this.addMaxLength.IsRequired = true;
|
|
132
|
+
this.addMaxLength.NumberRange = new RangeNumber();
|
|
133
|
+
this.addMaxLength.Type = InputType.Number;
|
|
134
|
+
this.addMaxLength.LabelDescription = this.l('MaxHint');
|
|
135
|
+
this.addMinLength = new TextBoxOptions();
|
|
136
|
+
this.addMinLength.Name = 'MinLength';
|
|
137
|
+
this.addMinLength.LabelKey = 'MinLength';
|
|
138
|
+
this.addMinLength.IsRequired = true;
|
|
139
|
+
this.addMinLength.NumberRange = new RangeNumber();
|
|
140
|
+
this.addMinLength.Type = InputType.Number;
|
|
141
|
+
this.addMinLength.LabelDescription = this.l('MinHint');
|
|
142
|
+
this.addRowsNumber = new TextBoxOptions();
|
|
143
|
+
this.addRowsNumber.Name = 'Rows';
|
|
144
|
+
this.addRowsNumber.LabelKey = 'Rows';
|
|
145
|
+
this.addRowsNumber.IsRequired = true;
|
|
146
|
+
this.addRowsNumber.NumberRange = new RangeNumber();
|
|
147
|
+
this.addRowsNumber.NumberRange.From = 1;
|
|
148
|
+
this.addRowsNumber.NumberRange.To = 20;
|
|
149
|
+
this.addRowsNumber.Type = InputType.Number;
|
|
150
|
+
this.addMaxFileSize = new TextBoxOptions();
|
|
151
|
+
this.addMaxFileSize.Name = 'MaxFileSizeInMB';
|
|
152
|
+
this.addMaxFileSize.LabelKey = 'MaxFileSizeInMB';
|
|
153
|
+
this.addMaxFileSize.IsRequired = true;
|
|
154
|
+
this.addMaxFileSize.NumberRange = new RangeNumber();
|
|
155
|
+
this.addMaxFileSize.NumberRange.From = 1;
|
|
156
|
+
this.addMaxFileSize.NumberRange.To = 100;
|
|
157
|
+
this.addMaxFileSize.Type = InputType.Number;
|
|
158
|
+
this.addMaxFileCount = new TextBoxOptions();
|
|
159
|
+
this.addMaxFileCount.Name = 'MaxFileCount';
|
|
160
|
+
this.addMaxFileCount.LabelKey = 'MaxFilesCount';
|
|
161
|
+
this.addMaxFileCount.IsRequired = true;
|
|
162
|
+
this.addMaxFileCount.NumberRange = new RangeNumber();
|
|
163
|
+
this.addMaxFileCount.NumberRange.From = 1;
|
|
164
|
+
this.addMaxFileCount.NumberRange.To = 50;
|
|
165
|
+
this.addMaxFileCount.Type = InputType.Number;
|
|
166
|
+
this.addMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
|
|
167
|
+
this.addMaxFileCount.CustomValidation = [this.numberValidation];
|
|
168
|
+
this.addFilesExtensions = new DropdownOptions();
|
|
169
|
+
this.addFilesExtensions.Name = 'AllowedExtensions';
|
|
170
|
+
this.addFilesExtensions.LabelKey = 'Extensions';
|
|
171
|
+
this.addFilesExtensions.IsRequired = true;
|
|
172
|
+
this.addFilesExtensions.AllowSearchFilter = true;
|
|
173
|
+
this.addFilesExtensions.DataSource = result.extensions;
|
|
174
|
+
this.addFilesExtensions.SingleSelection = false;
|
|
175
|
+
this.addFilesExtensions.LabelDescription = this.l('ExtensionHint');
|
|
176
|
+
this.addFilesExtensions.NotFoundText = this.l('NoResultFound');
|
|
177
|
+
this.addModelForm.addValidators(this.fromTo('MinLength', 'MaxLength'));
|
|
178
|
+
this.addNameOption = new MultiLingualTextBoxOptions();
|
|
179
|
+
this.addNameOption.Name = 'NameOption';
|
|
180
|
+
this.addNameOption.ArabicLabelKey = 'NameInArabic';
|
|
181
|
+
this.addNameOption.EnglishLabelKey = 'NameInEnglish';
|
|
182
|
+
this.addNameOption.IsRequired = true;
|
|
183
|
+
this.addNameOption.MaxLength = 225;
|
|
184
|
+
this.addNameOption.LanguageMode = this.getLanguageModeValue();
|
|
185
|
+
this.displayOrderOption = new TextBoxOptions();
|
|
186
|
+
this.displayOrderOption.Name = 'DisplayOrder';
|
|
187
|
+
this.scoreNumber = new TextBoxOptions();
|
|
188
|
+
this.scoreNumber.Name = 'Score';
|
|
189
|
+
this.scoreNumber.LabelKey = 'Score';
|
|
190
|
+
this.scoreNumber.IsRequired = true;
|
|
191
|
+
this.scoreNumber.Type = InputType.Number;
|
|
192
|
+
let rangeNumber = new RangeNumber();
|
|
193
|
+
rangeNumber.To = 1000000;
|
|
194
|
+
rangeNumber.From = 1;
|
|
195
|
+
this.scoreNumber.NumberRange = rangeNumber;
|
|
196
|
+
this.addOptionLinkedQuestions = new DropdownOptions();
|
|
197
|
+
this.addOptionLinkedQuestions.Name = 'LinkedQuestions';
|
|
198
|
+
this.addOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
|
|
199
|
+
this.addOptionLinkedQuestions.AllowSearchFilter = true;
|
|
200
|
+
this.addOptionLinkedQuestions.DataSource = result.questions;
|
|
201
|
+
this.addOptionLinkedQuestions.SingleSelection = false;
|
|
202
|
+
this.addOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
|
|
203
|
+
this.addOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
|
|
204
|
+
this.openModal(this.AddModal, 'xl');
|
|
205
|
+
this.stopBlockUI();
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
this.getAddModel = () => {
|
|
209
|
+
let paramArray = [];
|
|
210
|
+
let resultOptionModel = this.addOptionForm.value;
|
|
211
|
+
let resultModel = this.addModelForm.value;
|
|
212
|
+
if (this.isSelect) {
|
|
213
|
+
if ((resultOptionModel.NameOption.Arabic != undefined &&
|
|
214
|
+
resultOptionModel.NameOption.Arabic != '') ||
|
|
215
|
+
(resultOptionModel.NameOption.English != undefined &&
|
|
216
|
+
resultOptionModel.NameOption.English != '') ||
|
|
217
|
+
(resultOptionModel.Score != undefined && resultOptionModel.Score > 0)) {
|
|
218
|
+
this.errorMessage = this.l('OptionPendingDataErrorMessage');
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (this.optionList.length == 0 && this.isSelect) {
|
|
222
|
+
this.errorMessage = this.l('OptionErrorMessage');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
this.errorMessage = null;
|
|
227
|
+
let addModel = new SurveyQuestionDTO();
|
|
228
|
+
addModel.SurveyID = this.surveyID;
|
|
229
|
+
addModel.Text.Arabic = resultModel.Text.Arabic;
|
|
230
|
+
addModel.Text.English = resultModel.Text.English;
|
|
231
|
+
addModel.Description.Arabic = resultModel.Description.Arabic;
|
|
232
|
+
addModel.Description.English = resultModel.Description.English;
|
|
233
|
+
addModel.Options.Description.Arabic = resultModel.Description.Arabic;
|
|
234
|
+
addModel.Options.Description.English = resultModel.Description.English;
|
|
235
|
+
if (this.audienceTypeID == AudienceType.Both)
|
|
236
|
+
addModel.AudienceItemID = resultModel.AudienceItemID;
|
|
237
|
+
else
|
|
238
|
+
addModel.AudienceItemID = this.audienceTypeID;
|
|
239
|
+
addModel.QuestionTypeItemID = resultModel.QuestionTypeItemID;
|
|
240
|
+
addModel.IsAllowScoring = resultModel.IsAllowScoring;
|
|
241
|
+
addModel.Options.Size = resultModel.Size;
|
|
242
|
+
addModel.Options.IsRequired = resultModel.IsRequired;
|
|
243
|
+
addModel.IsRequired = resultModel.IsRequired;
|
|
244
|
+
addModel.IsVisible = resultModel.IsVisible;
|
|
245
|
+
addModel.Options.HasSearch = resultModel.HasSearch;
|
|
246
|
+
if (this.isText || this.isNumber) {
|
|
247
|
+
addModel.Options.MinLength = resultModel.MinLength;
|
|
248
|
+
addModel.Options.MaxLength = resultModel.MaxLength;
|
|
249
|
+
}
|
|
250
|
+
if (this.isFile || this.isMultiFile || this.isImage)
|
|
251
|
+
addModel.Options.MaxFileSizeInMB = resultModel.MaxFileSizeInMB;
|
|
252
|
+
if (this.isMultiFile)
|
|
253
|
+
addModel.Options.MaxFileCount = resultModel.MaxFileCount;
|
|
254
|
+
if (this.isMultiFile || this.isFile)
|
|
255
|
+
addModel.Options.AllowedExtensions = resultModel.AllowedExtensions;
|
|
256
|
+
if (this.isSelect)
|
|
257
|
+
if (this.optionList.length > 0) {
|
|
258
|
+
for (let index = 0; index < this.optionList.length; index++) {
|
|
259
|
+
this.optionList[index].DisplayOrder = index + 1;
|
|
260
|
+
}
|
|
261
|
+
addModel.QuestionOptions = this.optionList;
|
|
262
|
+
}
|
|
263
|
+
paramArray.push(addModel);
|
|
264
|
+
return paramArray;
|
|
265
|
+
};
|
|
266
|
+
this.getAddFunction = (addModal) => {
|
|
267
|
+
if (!this.errorMessage)
|
|
268
|
+
return this.surveyQuestionService.add(addModal);
|
|
269
|
+
};
|
|
270
|
+
this.isValidTypeBoolean = true;
|
|
271
|
+
}
|
|
272
|
+
ngOnInit() {
|
|
273
|
+
for (let index = 0; index < 12; index++) {
|
|
274
|
+
var item = { key: index + 1, value: `${index + 1}` };
|
|
275
|
+
this.SizeList.push(item);
|
|
276
|
+
}
|
|
277
|
+
this.numberValidation.functionBody = (control) => {
|
|
278
|
+
if (!control.value) {
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
if (!control.value.toString().match(/^[0-9]*$/)) {
|
|
282
|
+
this.numberValidation.massage = this.l('IntegerNumberValidationKey');
|
|
283
|
+
return { customerError: true };
|
|
284
|
+
}
|
|
285
|
+
if (!control.value.toString().match(/^[+]?([.]\d+|\d+[.]?\d*)$/)) {
|
|
286
|
+
this.numberValidation.massage = this.l('PositiveNumberValidationKey');
|
|
287
|
+
return { customerError: true };
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
changeScoring(value) {
|
|
293
|
+
this.showScoreOption = value;
|
|
294
|
+
if (!value && this.addOptionForm.controls['Score']) {
|
|
295
|
+
this.addOptionForm.controls['Score'].reset();
|
|
296
|
+
this.addOptionForm.controls['Score'].clearValidators();
|
|
297
|
+
this.addOptionForm.controls['Score'].updateValueAndValidity();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
updateLengthValidator(name, max, min) {
|
|
301
|
+
let control = this.addOptionForm.controls[name];
|
|
302
|
+
if (control) {
|
|
303
|
+
control.setErrors(null);
|
|
304
|
+
control.clearValidators();
|
|
305
|
+
control.updateValueAndValidity();
|
|
306
|
+
let validationRules = [];
|
|
307
|
+
validationRules.push(Validators.min(min));
|
|
308
|
+
validationRules.push(Validators.max(max));
|
|
309
|
+
validationRules.push(Validators.required);
|
|
310
|
+
control.addValidators(validationRules);
|
|
311
|
+
control.updateValueAndValidity();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
changeDataType(key) {
|
|
315
|
+
this.updateFormStatus(key);
|
|
316
|
+
switch (key) {
|
|
317
|
+
case SurveyOptionType.Text:
|
|
318
|
+
this.updateLengthValidator(this.addMaxLength.Name, 255, 1);
|
|
319
|
+
this.updateLengthValidator(this.addMinLength.Name, 255, 1);
|
|
320
|
+
this.addMaxLength.NumberRange.From = 1;
|
|
321
|
+
this.addMaxLength.NumberRange.To = 255;
|
|
322
|
+
this.addMinLength.NumberRange.From = 1;
|
|
323
|
+
this.addMinLength.NumberRange.To = 255;
|
|
324
|
+
this.isText = true;
|
|
325
|
+
this.isNumber = false;
|
|
326
|
+
this.isFile = false;
|
|
327
|
+
this.isMultiFile = false;
|
|
328
|
+
this.isImage = false;
|
|
329
|
+
this.isSelect = false;
|
|
330
|
+
break;
|
|
331
|
+
case SurveyOptionType.MultilineText:
|
|
332
|
+
this.updateLengthValidator(this.addMaxLength.Name, 4000, 1);
|
|
333
|
+
this.updateLengthValidator(this.addMinLength.Name, 4000, 1);
|
|
334
|
+
this.addMaxLength.NumberRange.From = 1;
|
|
335
|
+
this.addMaxLength.NumberRange.To = 4000;
|
|
336
|
+
this.addMinLength.NumberRange.From = 1;
|
|
337
|
+
this.addMinLength.NumberRange.To = 4000;
|
|
338
|
+
this.isText = true;
|
|
339
|
+
this.isNumber = false;
|
|
340
|
+
this.isFile = false;
|
|
341
|
+
this.isMultiFile = false;
|
|
342
|
+
this.isImage = false;
|
|
343
|
+
this.isSelect = false;
|
|
344
|
+
break;
|
|
345
|
+
case SurveyOptionType.Number:
|
|
346
|
+
this.updateLengthValidator(this.addMaxLength.Name, 100, 1);
|
|
347
|
+
this.updateLengthValidator(this.addMinLength.Name, 100, 1);
|
|
348
|
+
this.addMaxLength.NumberRange.From = 1;
|
|
349
|
+
this.addMaxLength.NumberRange.To = 100;
|
|
350
|
+
this.addMinLength.NumberRange.From = 1;
|
|
351
|
+
this.addMinLength.NumberRange.To = 100;
|
|
352
|
+
this.isNumber = true;
|
|
353
|
+
this.isText = false;
|
|
354
|
+
this.isFile = false;
|
|
355
|
+
this.isMultiFile = false;
|
|
356
|
+
this.isImage = false;
|
|
357
|
+
this.isSelect = false;
|
|
358
|
+
break;
|
|
359
|
+
case SurveyOptionType.File:
|
|
360
|
+
this.isFile = true;
|
|
361
|
+
this.isNumber = false;
|
|
362
|
+
this.isText = false;
|
|
363
|
+
this.isMultiFile = false;
|
|
364
|
+
this.isImage = false;
|
|
365
|
+
this.isSelect = false;
|
|
366
|
+
break;
|
|
367
|
+
case SurveyOptionType.MultiFile:
|
|
368
|
+
this.isMultiFile = true;
|
|
369
|
+
this.isNumber = false;
|
|
370
|
+
this.isText = false;
|
|
371
|
+
this.isFile = false;
|
|
372
|
+
this.isImage = false;
|
|
373
|
+
this.isSelect = false;
|
|
374
|
+
break;
|
|
375
|
+
case SurveyOptionType.Image:
|
|
376
|
+
this.isImage = true;
|
|
377
|
+
this.isMultiFile = false;
|
|
378
|
+
this.isNumber = false;
|
|
379
|
+
this.isText = false;
|
|
380
|
+
this.isFile = false;
|
|
381
|
+
this.isSelect = false;
|
|
382
|
+
break;
|
|
383
|
+
case SurveyOptionType.MultipleSelect:
|
|
384
|
+
case SurveyOptionType.SingleSelect:
|
|
385
|
+
case SurveyOptionType.RadioButton:
|
|
386
|
+
this.isNumber = false;
|
|
387
|
+
this.isText = false;
|
|
388
|
+
this.isFile = false;
|
|
389
|
+
this.isMultiFile = false;
|
|
390
|
+
this.isSelect = true;
|
|
391
|
+
this.isImage = false;
|
|
392
|
+
break;
|
|
393
|
+
default:
|
|
394
|
+
this.isNumber = false;
|
|
395
|
+
this.isText = false;
|
|
396
|
+
this.isFile = false;
|
|
397
|
+
this.isMultiFile = false;
|
|
398
|
+
this.isSelect = false;
|
|
399
|
+
this.isImage = false;
|
|
400
|
+
break;
|
|
401
|
+
}
|
|
402
|
+
this.ngWizardService.reset();
|
|
403
|
+
}
|
|
404
|
+
getLinkedQuestions(option) {
|
|
405
|
+
return this.Questions.filter((item) => option.LinkedQuestions.includes(item.key)).map((item) => item.value);
|
|
406
|
+
}
|
|
407
|
+
AddOption() {
|
|
408
|
+
this.totalScore = 0;
|
|
409
|
+
this.addOptionForm.markAllAsTouched();
|
|
410
|
+
if (this.addOptionForm.invalid) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
let resultModel = this.addOptionForm.value;
|
|
414
|
+
if (this.optionList.length >= 1 && this.showScoreOption) {
|
|
415
|
+
for (let index = 0; index < this.optionList.length; index++) {
|
|
416
|
+
let element = this.optionList[index].Score;
|
|
417
|
+
if (element > 1000000) {
|
|
418
|
+
this.errorMessage = this.l('MaxOptionScoreErrorMessage');
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
if (element < 1) {
|
|
422
|
+
this.errorMessage = this.l('MinOptionScoreErrorMessage');
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
this.showOptionList = false;
|
|
428
|
+
this.errorMessage = null;
|
|
429
|
+
let option = new SurveyQuestionOptionDTO();
|
|
430
|
+
option.Name.Arabic = resultModel.NameOption.Arabic;
|
|
431
|
+
option.Name.English = resultModel.NameOption.English;
|
|
432
|
+
debugger;
|
|
433
|
+
if (resultModel.DisplayOrder)
|
|
434
|
+
option.DisplayOrder = resultModel.DisplayOrder;
|
|
435
|
+
else
|
|
436
|
+
option.DisplayOrder = this.optionList.length + 1;
|
|
437
|
+
option.LinkedQuestions = resultModel.LinkedQuestions;
|
|
438
|
+
if (this.showScoreOption)
|
|
439
|
+
option.Score = Number.parseFloat(resultModel.Score);
|
|
440
|
+
this.addOptionForm.reset();
|
|
441
|
+
this.addOptionForm.controls['NameOption'].reset();
|
|
442
|
+
this.addOptionForm.controls['DisplayOrder'].reset();
|
|
443
|
+
this.addOptionForm.controls['LinkedQuestions'].reset();
|
|
444
|
+
if (this.showScoreOption)
|
|
445
|
+
this.addOptionForm.controls['Score'].reset();
|
|
446
|
+
this.optionList.splice(option.DisplayOrder - 1, 0, option);
|
|
447
|
+
this.showOptionList = true;
|
|
448
|
+
this.isOptionInEditMode = false;
|
|
449
|
+
}
|
|
450
|
+
getOptionByOrder(index, option) {
|
|
451
|
+
return option.DisplayOrder;
|
|
452
|
+
}
|
|
453
|
+
deleteOption(option) {
|
|
454
|
+
this.optionList = this.optionList.filter((item) => item != option);
|
|
455
|
+
}
|
|
456
|
+
editOption(option) {
|
|
457
|
+
debugger;
|
|
458
|
+
if ((this.addOptionForm.touched == true && this.addOptionForm.valid) ||
|
|
459
|
+
this.addOptionForm.touched == false)
|
|
460
|
+
this.AddOption();
|
|
461
|
+
else {
|
|
462
|
+
this.addOptionForm.markAllAsTouched();
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
let name = new EnglishArabicDTO();
|
|
466
|
+
name.Arabic = option.Name.Arabic ?? null;
|
|
467
|
+
name.English = option.Name.English ?? null;
|
|
468
|
+
this.addOptionForm.controls['NameOption'].setValue(name);
|
|
469
|
+
this.addOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
|
|
470
|
+
this.addOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
|
|
471
|
+
if (this.showScoreOption)
|
|
472
|
+
this.addOptionForm.controls['Score'].setValue(option.Score);
|
|
473
|
+
this.optionList = this.optionList.filter((item) => item != option);
|
|
474
|
+
this.isOptionInEditMode = true;
|
|
475
|
+
}
|
|
476
|
+
fromTo(fromField, toField) {
|
|
477
|
+
return (formGroup) => {
|
|
478
|
+
const fromDate = formGroup.get(fromField);
|
|
479
|
+
const toDate = formGroup.get(toField);
|
|
480
|
+
if (fromDate !== null && toDate !== null) {
|
|
481
|
+
if (fromDate.value !== null &&
|
|
482
|
+
toDate.value !== null &&
|
|
483
|
+
parseInt(fromDate.value) > parseInt(toDate.value)) {
|
|
484
|
+
fromDate.markAsTouched();
|
|
485
|
+
toDate.markAsTouched();
|
|
486
|
+
toDate.setErrors({
|
|
487
|
+
errorMassage: this.l('GreaterThanOrEqualTo'),
|
|
488
|
+
});
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
if (fromDate.value !== null &&
|
|
492
|
+
toDate.value !== null &&
|
|
493
|
+
parseInt(fromDate.value) < parseInt(toDate.value) &&
|
|
494
|
+
parseInt(toDate.value) < 255 &&
|
|
495
|
+
parseInt(fromDate.value) < 255)
|
|
496
|
+
toDate.setErrors(null);
|
|
497
|
+
}
|
|
498
|
+
return null;
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
updateFormStatus(key) {
|
|
502
|
+
switch (key) {
|
|
503
|
+
case SurveyOptionType.Text:
|
|
504
|
+
case SurveyOptionType.MultilineText:
|
|
505
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
506
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
507
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
508
|
+
this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
509
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
510
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
511
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
512
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
513
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
514
|
+
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
515
|
+
break;
|
|
516
|
+
case SurveyOptionType.Number:
|
|
517
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
518
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
519
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
520
|
+
this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
521
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
522
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
523
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
524
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
525
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
526
|
+
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
527
|
+
break;
|
|
528
|
+
case SurveyOptionType.File:
|
|
529
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
530
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
531
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
532
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
533
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
534
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
535
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
536
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
537
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
538
|
+
this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
539
|
+
break;
|
|
540
|
+
case SurveyOptionType.MultiFile:
|
|
541
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
542
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
543
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
544
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
545
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
546
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
547
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
548
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
549
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
550
|
+
this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
551
|
+
break;
|
|
552
|
+
case SurveyOptionType.Image:
|
|
553
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
554
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
555
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
556
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
557
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
558
|
+
this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
559
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
560
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
561
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
562
|
+
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
563
|
+
break;
|
|
564
|
+
case SurveyOptionType.MultipleSelect:
|
|
565
|
+
case SurveyOptionType.SingleSelect:
|
|
566
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
567
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
568
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
569
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
570
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
571
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
572
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
573
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
574
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
575
|
+
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
576
|
+
break;
|
|
577
|
+
default:
|
|
578
|
+
if (this.addModelForm.get(this.addMaxLength.Name))
|
|
579
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
|
|
580
|
+
if (this.addModelForm.get(this.addMinLength.Name))
|
|
581
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
|
|
582
|
+
if (this.addModelForm.get(this.addMaxFileSize.Name))
|
|
583
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
|
|
584
|
+
if (this.addModelForm.get(this.addMaxFileCount.Name))
|
|
585
|
+
this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
|
|
586
|
+
if (this.addModelForm.get(this.addFilesExtensions.Name))
|
|
587
|
+
this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
isValidFunctionReturnsBoolean(args) {
|
|
592
|
+
let returnValue = true;
|
|
593
|
+
this.mainFormControls = [];
|
|
594
|
+
this.mainFormControls.push(this.addModelForm.get(this.addQuestion.Name), this.addModelForm.get(this.addDescription.Name), this.addModelForm.get(this.addQuestionType.Name), this.addModelForm.get(this.audience.Name));
|
|
595
|
+
if (args.fromStep.index == 0)
|
|
596
|
+
for (var i = 0; i < this.mainFormControls.length; i++) {
|
|
597
|
+
this.mainFormControls[i].markAllAsTouched();
|
|
598
|
+
if (!this.mainFormControls[i].valid)
|
|
599
|
+
returnValue = false;
|
|
600
|
+
}
|
|
601
|
+
return returnValue;
|
|
602
|
+
}
|
|
603
|
+
isValidFunctionReturnsObservable(args) {
|
|
604
|
+
return of(true);
|
|
605
|
+
}
|
|
606
|
+
//drag and drop
|
|
607
|
+
drop(event) {
|
|
608
|
+
moveItemInArray(this.optionList, event.previousIndex, event.currentIndex);
|
|
609
|
+
}
|
|
610
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }, { token: i2.NgWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
611
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
|
|
612
|
+
}
|
|
613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, decorators: [{
|
|
614
|
+
type: Component,
|
|
615
|
+
args: [{ selector: 'app-add-question', template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n" }]
|
|
616
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.SurveyQuestionService }, { type: i2.NgWizardService }], propDecorators: { AddModal: [{
|
|
617
|
+
type: ViewChild,
|
|
618
|
+
args: ['AddModal', { static: false }]
|
|
619
|
+
}], pagingElement: [{
|
|
620
|
+
type: Input
|
|
621
|
+
}], onSuccessAddHandler: [{
|
|
622
|
+
type: Input
|
|
623
|
+
}] } });
|
|
624
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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QUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FyeUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZRQzNDakMsK21PQW1JQTs7MkZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7K0lBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICdAa3JvbnNjaHQvbmctd2l6YXJkJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUXVlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgcHVibGljIGF1ZGllbmNlVHlwZSA9IEF1ZGllbmNlVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBhZGRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBhZGRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkQWxsb3dTY29yZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkTWluTGVuZ3RoOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVTaXplOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFNpemU6IERyb3Bkb3duT3B0aW9ucztcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdBZGRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW107XHJcbiAgYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc2hvd1Njb3JlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcbiAgdG90YWxTY29yZTogbnVtYmVyID0gMDtcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgZGlzcGxheU9yZGVyT3B0aW9uOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93T3B0aW9uTGlzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3JkZXJDaGFuZ2U6IGJvb2xlYW47XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1dpemFyZFNlcnZpY2U6IE5nV2l6YXJkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBpdGVtID0geyBrZXk6IGluZGV4ICsgMSwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XHJcbiAgICAgIHRoaXMuU2l6ZUxpc3QucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10pIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUxlbmd0aFZhbGlkYXRvcihuYW1lLCBtYXgsIG1pbikge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGxldCB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW4obWluKSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4KG1heCkpO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNaW5MZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuUmFkaW9CdXR0b246XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmdXaXphcmRTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRNb2RhbCA9IChzdXJ2ZXlJZCwgYXVkaWVuY2VUeXBlKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gc3VydmV5SWQ7XHJcbiAgICB0aGlzLmF1ZGllbmNlVHlwZUlEID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2VcclxuICAgICAgLmxvYWRBZGREcm9wZG93bih0aGlzLnN1cnZleUlEKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgICB0aGlzLlF1ZXN0aW9ucyA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuYWRkTW9kZWxGb3JtO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID1cclxuICAgICAgICAgIHRoaXMuZ2V0QWRkRnVuY3Rpb247XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9XHJcbiAgICAgICAgICB0aGlzLm9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTmFtZSA9ICdUZXh0JztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uRW5nbGlzaExhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLk5hbWUgPSAnRGVzY3JpcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMjUwO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uUm93cyA9IDI7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50QXJhYmljJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2gnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTmFtZSA9ICdRdWVzdGlvblR5cGVJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkxhYmVsS2V5ID0gJ1R5cGUnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5EYXRhU291cmNlID0gcmVzdWx0Lm9wdGlvblR5cGVzO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gJ0F1ZGllbmNlSXRlbUlEJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLkxhYmVsS2V5ID0gJ0F1ZGllbmNlJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLlNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuRGF0YVNvdXJjZSA9IHJlc3VsdC5hdWRpZW5jZXM7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5TZWxlY3RlZEl0ZW1zID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQXVkaWVuY2VEZXNjcmlwdGlvbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5OYW1lID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5MYWJlbEtleSA9ICdTaXplJztcclxuICAgICAgICB0aGlzLmFkZFNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuRGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNlbGVjdGVkSXRlbXMgPSAxMjtcclxuICAgICAgICB0aGlzLmFkZFNpemUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5OYW1lID0gJ0lzUmVxdWlyZWQnO1xyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQuTGFiZWxLZXkgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdSZXF1aXJlZERlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLk5hbWUgPSAnSXNBbGxvd1Njb3JpbmcnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5MYWJlbEtleSA9ICdBbGxvd1Njb3JlJztcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQWxsb3dTY29yZURlc2NyaXB0aW9uJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLk5hbWUgPSAnSGFzU2VhcmNoJztcclxuICAgICAgICB0aGlzLmFkZEhhc1NlYXJjaC5MYWJlbEtleSA9ICdIYXNTZWFyY2gnO1xyXG5cclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTmFtZSA9ICdJc1Zpc2libGUnO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTGFiZWxLZXkgPSAnVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdHZW5lcmljVmlzaWJsZUhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OYW1lID0gJ01heExlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTGFiZWxLZXkgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnTWF4SGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUgPSAnTWluTGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5MYWJlbEtleSA9ICdNaW5MZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNaW5IaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5OYW1lID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5MYWJlbEtleSA9ICdSb3dzJztcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5OdW1iZXJSYW5nZS5UbyA9IDIwO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTGFiZWxLZXkgPSAnTWF4RmlsZVNpemVJbk1CJztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lID0gJ01heEZpbGVDb3VudCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTGFiZWxLZXkgPSAnTWF4RmlsZXNDb3VudCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5UbyA9IDUwO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnTWF4RmlsZUNvdW50SGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSA9ICdBbGxvd2VkRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTGFiZWxLZXkgPSAnRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQuZXh0ZW5zaW9ucztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ0V4dGVuc2lvbkhpbnQnKTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uYWRkVmFsaWRhdG9ycyh0aGlzLmZyb21UbygnTWluTGVuZ3RoJywgJ01heExlbmd0aCcpKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLk5hbWUgPSAnTmFtZU9wdGlvbic7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ05hbWVJbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLkVuZ2xpc2hMYWJlbEtleSA9ICdOYW1lSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLk1heExlbmd0aCA9IDIyNTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uLk5hbWUgPSAnRGlzcGxheU9yZGVyJztcclxuXHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTmFtZSA9ICdTY29yZSc7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5MYWJlbEtleSA9ICdTY29yZSc7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHJhbmdlTnVtYmVyLlRvID0gMTAwMDAwMDtcclxuICAgICAgICByYW5nZU51bWJlci5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLk51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLk5hbWUgPSAnTGlua2VkUXVlc3Rpb25zJztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5MYWJlbEtleSA9ICdMaW5rZWRRdWVzdGlvbnMnO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5EYXRhU291cmNlID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ0xpbmtlZFF1ZXN0aW9uRGVzY3JpcHRpb25IaW50J1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKHRoaXMuQWRkTW9kYWwsICd4bCcpO1xyXG4gICAgICAgIHRoaXMuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgfSk7XHJcbiAgfTtcclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE9wdGlvbk1vZGVsID0gdGhpcy5hZGRPcHRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuYWRkTW9kZWxGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSAnJykgfHxcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgcmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoICE9ICcnKSB8fFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5TY29yZSAhPSB1bmRlZmluZWQgJiYgcmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgPiAwKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnT3B0aW9uUGVuZGluZ0RhdGFFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID09IDAgJiYgdGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdPcHRpb25FcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIGxldCBhZGRNb2RlbDogU3VydmV5UXVlc3Rpb25EVE8gPSBuZXcgU3VydmV5UXVlc3Rpb25EVE8oKTtcclxuICAgIGFkZE1vZGVsLlN1cnZleUlEID0gdGhpcy5zdXJ2ZXlJRDtcclxuICAgIGFkZE1vZGVsLlRleHQuQXJhYmljID0gcmVzdWx0TW9kZWwuVGV4dC5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5UZXh0LkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5UZXh0LkVuZ2xpc2g7XHJcbiAgICBhZGRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWMgPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5EZXNjcmlwdGlvbi5FbmdsaXNoID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIGlmICh0aGlzLmF1ZGllbmNlVHlwZUlEID09IEF1ZGllbmNlVHlwZS5Cb3RoKVxyXG4gICAgICBhZGRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLkF1ZGllbmNlSXRlbUlEO1xyXG4gICAgZWxzZSBhZGRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHRoaXMuYXVkaWVuY2VUeXBlSUQ7XHJcbiAgICBhZGRNb2RlbC5RdWVzdGlvblR5cGVJdGVtSUQgPSByZXN1bHRNb2RlbC5RdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICBhZGRNb2RlbC5Jc0FsbG93U2NvcmluZyA9IHJlc3VsdE1vZGVsLklzQWxsb3dTY29yaW5nO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5TaXplID0gcmVzdWx0TW9kZWwuU2l6ZTtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBhZGRNb2RlbC5Jc1JlcXVpcmVkID0gcmVzdWx0TW9kZWwuSXNSZXF1aXJlZDtcclxuICAgIGFkZE1vZGVsLklzVmlzaWJsZSA9IHJlc3VsdE1vZGVsLklzVmlzaWJsZTtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuSGFzU2VhcmNoID0gcmVzdWx0TW9kZWwuSGFzU2VhcmNoO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVGV4dCB8fCB0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWluTGVuZ3RoID0gcmVzdWx0TW9kZWwuTWluTGVuZ3RoO1xyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heExlbmd0aCA9IHJlc3VsdE1vZGVsLk1heExlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0ZpbGUgfHwgdGhpcy5pc011bHRpRmlsZSB8fCB0aGlzLmlzSW1hZ2UpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4RmlsZVNpemVJbk1CID0gcmVzdWx0TW9kZWwuTWF4RmlsZVNpemVJbk1CO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heEZpbGVDb3VudCA9IHJlc3VsdE1vZGVsLk1heEZpbGVDb3VudDtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZSB8fCB0aGlzLmlzRmlsZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5BbGxvd2VkRXh0ZW5zaW9ucyA9IHJlc3VsdE1vZGVsLkFsbG93ZWRFeHRlbnNpb25zO1xyXG5cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25MaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25MaXN0W2luZGV4XS5EaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZE1vZGVsLlF1ZXN0aW9uT3B0aW9ucyA9IHRoaXMub3B0aW9uTGlzdDtcclxuICAgICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChhZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9O1xyXG4gIGdldEFkZEZ1bmN0aW9uID0gKGFkZE1vZGFsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIGlmICghdGhpcy5lcnJvck1lc3NhZ2UpIHJldHVybiB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZS5hZGQoYWRkTW9kYWwpO1xyXG4gIH07XHJcblxyXG4gIGdldExpbmtlZFF1ZXN0aW9ucyhvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICByZXR1cm4gdGhpcy5RdWVzdGlvbnMuZmlsdGVyKChpdGVtKSA9PlxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zLmluY2x1ZGVzKGl0ZW0ua2V5KVxyXG4gICAgKS5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQWRkT3B0aW9uKCkge1xyXG4gICAgdGhpcy50b3RhbFNjb3JlID0gMDtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5hZGRPcHRpb25Gb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRPcHRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA+PSAxICYmIHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLlNjb3JlO1xyXG4gICAgICAgIGlmIChlbGVtZW50ID4gMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ01heE9wdGlvblNjb3JlRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50IDwgMSkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ01pbk9wdGlvblNjb3JlRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dPcHRpb25MaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgb3B0aW9uID0gbmV3IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKCk7XHJcbiAgICBvcHRpb24uTmFtZS5BcmFiaWMgPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkFyYWJpYztcclxuICAgIG9wdGlvbi5OYW1lLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2g7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChyZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXIpXHJcbiAgICAgIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlbHNlIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoICsgMTtcclxuXHJcbiAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zID0gcmVzdWx0TW9kZWwuTGlua2VkUXVlc3Rpb25zO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICBvcHRpb24uU2NvcmUgPSBOdW1iZXIucGFyc2VGbG9hdChyZXN1bHRNb2RlbC5TY29yZSk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTmFtZU9wdGlvbiddLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0Rpc3BsYXlPcmRlciddLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0xpbmtlZFF1ZXN0aW9ucyddLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5yZXNldCgpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0LnNwbGljZShvcHRpb24uRGlzcGxheU9yZGVyIC0gMSwgMCwgb3B0aW9uKTtcclxuICAgIHRoaXMuc2hvd09wdGlvbkxpc3QgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wdGlvbkluRWRpdE1vZGUgPSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0T3B0aW9uQnlPcmRlcihpbmRleDogbnVtYmVyLCBvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi5EaXNwbGF5T3JkZXI7XHJcbiAgfVxyXG4gIGRlbGV0ZU9wdGlvbihvcHRpb24pIHtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IHRoaXMub3B0aW9uTGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gb3B0aW9uKTtcclxuICB9XHJcblxyXG4gIGVkaXRPcHRpb24ob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmFkZE9wdGlvbkZvcm0udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuYWRkT3B0aW9uRm9ybS52YWxpZCkgfHxcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gZmFsc2VcclxuICAgIClcclxuICAgICAgdGhpcy5BZGRPcHRpb24oKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBuYW1lLkFyYWJpYyA9IG9wdGlvbi5OYW1lLkFyYWJpYyA/PyBudWxsO1xyXG4gICAgbmFtZS5FbmdsaXNoID0gb3B0aW9uLk5hbWUuRW5nbGlzaCA/PyBudWxsO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydOYW1lT3B0aW9uJ10uc2V0VmFsdWUobmFtZSk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0Rpc3BsYXlPcmRlciddLnNldFZhbHVlKG9wdGlvbi5EaXNwbGF5T3JkZXIpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydMaW5rZWRRdWVzdGlvbnMnXS5zZXRWYWx1ZShcclxuICAgICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9uc1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnNldFZhbHVlKG9wdGlvbi5TY29yZSk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmcm9tVG8oZnJvbUZpZWxkOiBzdHJpbmcsIHRvRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tRGF0ZSA9IGZvcm1Hcm91cC5nZXQoZnJvbUZpZWxkKTtcclxuICAgICAgY29uc3QgdG9EYXRlID0gZm9ybUdyb3VwLmdldCh0b0ZpZWxkKTtcclxuICAgICAgaWYgKGZyb21EYXRlICE9PSBudWxsICYmIHRvRGF0ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyb21EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICB0b0RhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA+IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGZyb21EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKHtcclxuICAgICAgICAgICAgZXJyb3JNYXNzYWdlOiB0aGlzLmwoJ0dyZWF0ZXJUaGFuT3JFcXVhbFRvJyksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdG9EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPCBwYXJzZUludCh0b0RhdGUudmFsdWUpICYmXHJcbiAgICAgICAgICBwYXJzZUludCh0b0RhdGUudmFsdWUpIDwgMjU1ICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPCAyNTVcclxuICAgICAgICApXHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGb3JtU3RhdHVzKGtleTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuVGV4dDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNWYWxpZFR5cGVCb29sZWFuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaXNWYWxpZEZ1bmN0aW9uUmV0dXJuc0Jvb2xlYW4oYXJnczogU3RlcFZhbGlkYXRpb25BcmdzKSB7XHJcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzID0gW107XHJcbiAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHMucHVzaChcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkUXVlc3Rpb24uTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZERlc2NyaXB0aW9uLk5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRRdWVzdGlvblR5cGUuTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmF1ZGllbmNlLk5hbWUpXHJcbiAgICApO1xyXG4gICAgaWYgKGFyZ3MuZnJvbVN0ZXAuaW5kZXggPT0gMClcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1haW5Gb3JtQ29udHJvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHNbaV0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5tYWluRm9ybUNvbnRyb2xzW2ldLnZhbGlkKSByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRnVuY3Rpb25SZXR1cm5zT2JzZXJ2YWJsZShhcmdzOiBTdGVwVmFsaWRhdGlvbkFyZ3MpIHtcclxuICAgIHJldHVybiBvZih0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vZHJhZyBhbmQgZHJvcFxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMub3B0aW9uTGlzdCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNBZGRNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAge3tsKFwiQWRkX1F1ZXN0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9tb2RhbGNsb3NlLnN2ZydcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImFkZFF1ZXN0aW9uXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiYWRkRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImF1ZGllbmNlVHlwZUlEPT1hdWRpZW5jZVR5cGUuQm90aFwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhdWRpZW5jZVwiICBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRRdWVzdGlvblR5cGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZURhdGFUeXBlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFNpemVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNTZWxlY3RcIiA+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkQWxsb3dTY29yZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU2NvcmluZygkZXZlbnQpXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZElzQWN0aXZlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFJlcXVpcmVkXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNaW5MZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heExlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhGaWxlU2l6ZVwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heEZpbGVDb3VudFwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkRmlsZXNFeHRlbnNpb25zXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0XCIgY2xhc3M9XCJxdWVzdGlvbi10eXBlLW9wdGlvblwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi00XCI+e3tsKCdPcHRpb25zJyl9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIiAqbmdJZj1cInNob3dPcHRpb25MaXN0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1saXN0aW5nXCIgKm5nRm9yPVwibGV0IE9wdGlvbiBvZiBvcHRpb25MaXN0O1wiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgZnMtNiBmdy1ib2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2dldEN1cnJlbnRGYWlsT3ZlcihPcHRpb24uTmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhcmsgbWUtNFwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCIgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e09wdGlvbi5TY29yZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAqbmdJZj1cIk9wdGlvbi5MaW5rZWRRdWVzdGlvbnM/Lmxlbmd0aD4wXCIgbmdiVG9vbHRpcD1cInt7Z2V0TGlua2VkUXVlc3Rpb25zKE9wdGlvbil9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIChjbGljayk9XCJlZGl0T3B0aW9uKE9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIG5nYlRvb2x0aXA9XCJ7e2woJ0VkaXQnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIG5nYlRvb2x0aXA9XCJ7e2woJ0RlbGV0ZScpfX1cIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVPcHRpb24oT3B0aW9uKVwiIGFwcHByZXZlbnRkb3VibGVjbGljaz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWFsZXJ0LWRhbmdlciBhbGVydC1kYW5nZXJcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+PGRpdiBjbGFzcz1cImZzLTcgdGV4dC1kYW5nZXJcIj57e2Vycm9yTWVzc2FnZX19PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0ZXItYmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiYWRkTmFtZU9wdGlvblwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9uc1wiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZGlzcGxheU9yZGVyT3B0aW9uXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNjb3JlTnVtYmVyXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQWRkT3B0aW9uKClcIiAqbmdJZj1cIiFpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiQWRkXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQWRkT3B0aW9uKClcIiAqbmdJZj1cImlzT3B0aW9uSW5FZGl0TW9kZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmQgdy0xMDBcIj57e2woXCJFZGl0XCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBwYi0wIG0tMFwiID5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3tsKFwiQ2FuY2VsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj57e2woXCJTYXZlXCIpfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|