ngx-techlify-core 16.3.1 → 18.0.0-alpha.2
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/esm2022/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +5 -13
- package/esm2022/lib/access-control-config/access-control-config-routing.module.mjs +5 -5
- package/esm2022/lib/access-control-config/access-control-config.component.mjs +20 -26
- package/esm2022/lib/access-control-config/access-control-config.model.mjs +1 -14
- package/esm2022/lib/access-control-config/access-control-config.module.mjs +7 -7
- package/esm2022/lib/access-control-config/access-control-config.service.mjs +5 -6
- package/esm2022/lib/action-popup/action-popup.component.mjs +6 -8
- package/esm2022/lib/action-popup/action-popup.model.mjs +1 -4
- package/esm2022/lib/action-popup/action-popup.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +6 -9
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +20 -30
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +6 -10
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-view/audit-log-view-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-view/audit-log-view.component.mjs +7 -11
- package/esm2022/lib/audit-log/audit-log-view/audit-log-view.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model.component.mjs +8 -12
- package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log.module.mjs +7 -7
- package/esm2022/lib/audit-log/audit-log.service.mjs +5 -5
- package/esm2022/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.mjs +5 -5
- package/esm2022/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.mjs +6 -9
- package/esm2022/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.mjs +7 -7
- package/esm2022/lib/base-model/techlify-form-component.class.mjs +1 -4
- package/esm2022/lib/base-model/techlify-listing-component.class.mjs +10 -9
- package/esm2022/lib/base-model/techlify-service.class.mjs +2 -3
- package/esm2022/lib/change-password/change-password-routing.module.mjs +5 -5
- package/esm2022/lib/change-password/change-password.component.mjs +8 -17
- package/esm2022/lib/change-password/change-password.module.mjs +7 -7
- package/esm2022/lib/column-selector/column-selector/column-selector.component.mjs +16 -15
- package/esm2022/lib/column-selector/column-selector.module.mjs +7 -7
- package/esm2022/lib/core/alert.service.mjs +5 -6
- package/esm2022/lib/core/api-prefix.interceptor.mjs +5 -6
- package/esm2022/lib/core/authentication.guard.mjs +5 -7
- package/esm2022/lib/core/authentication.service.mjs +5 -8
- package/esm2022/lib/core/cache.interceptor.mjs +6 -7
- package/esm2022/lib/core/config.service.mjs +6 -7
- package/esm2022/lib/core/core.module.mjs +19 -26
- package/esm2022/lib/core/credentials.service.mjs +6 -7
- package/esm2022/lib/core/dataManager.service.mjs +5 -6
- package/esm2022/lib/core/error-handler.interceptor.mjs +5 -8
- package/esm2022/lib/core/error-handler.service.mjs +5 -7
- package/esm2022/lib/core/filter.service.mjs +5 -7
- package/esm2022/lib/core/form-validator.service.mjs +5 -5
- package/esm2022/lib/core/header.interceptor.mjs +4 -4
- package/esm2022/lib/core/http-cache.service.mjs +6 -9
- package/esm2022/lib/core/http.service.mjs +6 -11
- package/esm2022/lib/core/logger.service.mjs +3 -4
- package/esm2022/lib/core/route-reusable-strategy.mjs +4 -4
- package/esm2022/lib/core/snack/snack.component.mjs +11 -13
- package/esm2022/lib/core/snack/snack.module.mjs +7 -7
- package/esm2022/lib/core/storage.service.mjs +6 -6
- package/esm2022/lib/core/techlify-config.model.mjs +7 -9
- package/esm2022/lib/core/token.interceptor.mjs +5 -6
- package/esm2022/lib/data-table/data-table.component.mjs +16 -22
- package/esm2022/lib/data-table/data-table.model.mjs +1 -36
- package/esm2022/lib/data-table/data-table.module.mjs +7 -7
- package/esm2022/lib/date-validator.mjs +1 -1
- package/esm2022/lib/document-viewer/document-viewer.component.mjs +8 -12
- package/esm2022/lib/document-viewer/document-viewer.module.mjs +7 -7
- package/esm2022/lib/document-viewer/viewer-config.model.mjs +1 -4
- package/esm2022/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.mjs +12 -13
- package/esm2022/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.mjs +6 -19
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.mjs +23 -26
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.mjs +6 -19
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.mjs +19 -23
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.mjs +6 -8
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.mjs +5 -5
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user.module.mjs +7 -7
- package/esm2022/lib/email-subscription/email-subscription.module.mjs +7 -7
- package/esm2022/lib/entity-files/entity-file-form/entity-file-form.component.mjs +13 -26
- package/esm2022/lib/entity-files/entity-file.service.mjs +5 -6
- package/esm2022/lib/entity-files/entity-files-view-all.component.mjs +36 -54
- package/esm2022/lib/entity-files/entity-files-view-all.module.mjs +7 -7
- package/esm2022/lib/export-excel/export-excel-button/export-excel-button.component.mjs +9 -8
- package/esm2022/lib/export-excel/export-excel.module.mjs +7 -7
- package/esm2022/lib/file-dragdrop-uploader/file-dragdrop-uploader/file-dragdrop-uploader.component.mjs +14 -16
- package/esm2022/lib/file-dragdrop-uploader/file-dragdrop-uploader.module.mjs +7 -7
- package/esm2022/lib/file-dropper/file-dropper.component.mjs +8 -12
- package/esm2022/lib/file-dropper/file-dropper.model.mjs +1 -9
- package/esm2022/lib/file-dropper/file-dropper.module.mjs +7 -7
- package/esm2022/lib/forgot-password/forgot-password-routing.module.mjs +5 -5
- package/esm2022/lib/forgot-password/forgot-password.component.mjs +6 -18
- package/esm2022/lib/forgot-password/forgot-password.module.mjs +7 -7
- package/esm2022/lib/import-csv/data-import/data-import.component.mjs +5 -6
- package/esm2022/lib/import-csv/failed-items-list/failed-items-list.component.mjs +6 -9
- package/esm2022/lib/import-csv/field-mapping/field-mapping.component.mjs +9 -16
- package/esm2022/lib/import-csv/import-csv.component.mjs +57 -65
- package/esm2022/lib/import-csv/import-csv.module.mjs +7 -7
- package/esm2022/lib/import-csv/import-history-list/import-history-list.component.mjs +14 -18
- package/esm2022/lib/import-csv/import-success/import-success.component.mjs +5 -7
- package/esm2022/lib/ip-address-selector/ip-address-selector.module.mjs +7 -7
- package/esm2022/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +48 -47
- package/esm2022/lib/loader/loader.component.mjs +9 -9
- package/esm2022/lib/loader/loader.module.mjs +7 -7
- package/esm2022/lib/login/login-routing.module.mjs +5 -5
- package/esm2022/lib/login/login.component.mjs +6 -24
- package/esm2022/lib/login/login.module.mjs +7 -7
- package/esm2022/lib/login-history-for-user/login-history-for-user-routing.module.mjs +5 -5
- package/esm2022/lib/login-history-for-user/login-history-for-user.component.mjs +11 -15
- package/esm2022/lib/login-history-for-user/login-history-for-user.module.mjs +7 -7
- package/esm2022/lib/material.module.mjs +7 -7
- package/esm2022/lib/ngx-techlify-users/ngx-techlify-users-routing.module.mjs +5 -5
- package/esm2022/lib/ngx-techlify-users/ngx-techlify-users.module.mjs +7 -7
- package/esm2022/lib/note/comment-form/comment-form.component.mjs +6 -11
- package/esm2022/lib/note/note-form/note-form.component.mjs +6 -15
- package/esm2022/lib/note/note-list/note-list.component.mjs +13 -18
- package/esm2022/lib/note/note.module.mjs +7 -7
- package/esm2022/lib/note/note.service.mjs +5 -6
- package/esm2022/lib/number-input-button/number-input-button/number-input-button.component.mjs +24 -24
- package/esm2022/lib/number-input-button/number-input-button.module.mjs +7 -7
- package/esm2022/lib/password-requirement-check/password-check.service.mjs +5 -5
- package/esm2022/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +7 -10
- package/esm2022/lib/password-requirement-check/password-requirement-check.module.mjs +5 -5
- package/esm2022/lib/profile/profile-edit.component.mjs +6 -15
- package/esm2022/lib/profile/profile-routing.module.mjs +5 -5
- package/esm2022/lib/profile/profile.module.mjs +7 -7
- package/esm2022/lib/read-more/read-more.component.mjs +10 -11
- package/esm2022/lib/read-more/read-more.module.mjs +7 -7
- package/esm2022/lib/request-helper/request-helper.service.mjs +5 -7
- package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +15 -17
- package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +7 -7
- package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +5 -6
- package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +15 -17
- package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +7 -7
- package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +5 -6
- package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +15 -17
- package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +7 -7
- package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +5 -6
- package/esm2022/lib/restrictors/restrictor.service.mjs +5 -6
- package/esm2022/lib/restrictors/restrictors-form/restrictors-form.component.mjs +5 -14
- package/esm2022/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +5 -10
- package/esm2022/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +17 -26
- package/esm2022/lib/restrictors/restrictors-routing.module.mjs +5 -5
- package/esm2022/lib/restrictors/restrictors.module.mjs +7 -7
- package/esm2022/lib/role/permission/permission.model.mjs +1 -4
- package/esm2022/lib/role/permission/permission.module.mjs +7 -7
- package/esm2022/lib/role/permission/permission.routes.mjs +5 -5
- package/esm2022/lib/role/permission/permissions-management.component.mjs +5 -18
- package/esm2022/lib/role/role-form.component.mjs +10 -20
- package/esm2022/lib/role/role-view/role-view.component.mjs +5 -10
- package/esm2022/lib/role/role.model.mjs +2 -12
- package/esm2022/lib/role/role.module.mjs +7 -7
- package/esm2022/lib/role/role.routes.mjs +5 -5
- package/esm2022/lib/role/role.service.mjs +5 -6
- package/esm2022/lib/role/roles-view-all.component.mjs +18 -27
- package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +40 -55
- package/esm2022/lib/searchable-selector/searchable-selector.module.mjs +7 -7
- package/esm2022/lib/signup/signup-routing.module.mjs +5 -5
- package/esm2022/lib/signup/signup.component.mjs +6 -15
- package/esm2022/lib/signup/signup.module.mjs +7 -7
- package/esm2022/lib/techlify-company-switcher/techlify-company-switcher/techlify-company-switcher.component.mjs +6 -11
- package/esm2022/lib/techlify-company-switcher/techlify-company-switcher.module.mjs +7 -7
- package/esm2022/lib/techlify-feature/on-off-switch/on-off-switch.component.mjs +5 -8
- package/esm2022/lib/techlify-feature/techlify-feature-enabled.directive.mjs +6 -12
- package/esm2022/lib/techlify-feature/techlify-feature-listing.component.mjs +15 -25
- package/esm2022/lib/techlify-feature/techlify-feature.module.mjs +7 -7
- package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +5 -6
- package/esm2022/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.mjs +13 -19
- package/esm2022/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +13 -17
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notfication-subscriber-dashboard/techlify-notfication-subscriber-dashboard-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notfication-subscriber-dashboard/techlify-notfication-subscriber-dashboard.component.mjs +20 -27
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notfication-subscriber-dashboard/techlify-notfication-subscriber-dashboard.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-form/techlify-notification-subscriber-form-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-form/techlify-notification-subscriber-form.component.mjs +8 -22
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-form/techlify-notification-subscriber-form.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list/techlify-notification-subscriber-list-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list/techlify-notification-subscriber-list.component.mjs +22 -28
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list/techlify-notification-subscriber-list.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list-filter/techlify-notification-subscriber-list-filter-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list-filter/techlify-notification-subscriber-list-filter.component.mjs +10 -13
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-list-filter/techlify-notification-subscriber-list-filter.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscriber.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-subscriber/techlify-notification-subscription-entity.model.mjs +4 -4
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-form/techlify-notification-type-form-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-form/techlify-notification-type-form.component.mjs +6 -18
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-form/techlify-notification-type-form.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-list/techlify-notification-type-list-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-list/techlify-notification-type-list.component.mjs +24 -29
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-list/techlify-notification-type-list.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-notifications/techlify-notification-type/techlify-notification-type.module.mjs +7 -7
- package/esm2022/lib/techlify-notifications/techlify-notification-user-status.model.mjs +3 -3
- package/esm2022/lib/techlify-notifications/techlify-notification.module.mjs +7 -7
- package/esm2022/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.mjs +1 -10
- package/esm2022/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.mjs +21 -34
- package/esm2022/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.mjs +7 -7
- package/esm2022/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.mjs +25 -33
- package/esm2022/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.mjs +7 -7
- package/esm2022/lib/techlify-update/techlify-update-form/techlify-update-form.component.mjs +12 -20
- package/esm2022/lib/techlify-update/techlify-update-form/techlify-update-form.module.mjs +7 -7
- package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history.component.mjs +20 -26
- package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history.module.mjs +7 -7
- package/esm2022/lib/techlify-update/techlify-update-routing.module.mjs +5 -5
- package/esm2022/lib/techlify-update/techlify-update.module.mjs +7 -7
- package/esm2022/lib/techlify-update/techlify-update.service.mjs +5 -6
- package/esm2022/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.mjs +20 -26
- package/esm2022/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.component.mjs +8 -11
- package/esm2022/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.module.mjs +7 -7
- package/esm2022/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.mjs +8 -16
- package/esm2022/lib/techlify-update/update-notifier/update-notifier.component.mjs +6 -10
- package/esm2022/lib/techlify-update/update-notifier/update-notifier.module.mjs +7 -7
- package/esm2022/lib/techlify-update/update-view/update-view.component.mjs +6 -11
- package/esm2022/lib/techlify-update/update-view/update-view.module.mjs +7 -7
- package/esm2022/lib/timeline-filter/calculate-timeline.mjs +1 -1
- package/esm2022/lib/timeline-filter/timeline-filter-routing.module.mjs +5 -5
- package/esm2022/lib/timeline-filter/timeline-filter.component.mjs +46 -55
- package/esm2022/lib/timeline-filter/timeline-filter.module.mjs +7 -7
- package/esm2022/lib/timeline-filter/timeline.model.mjs +16 -16
- package/esm2022/lib/user/current-user.service.mjs +9 -13
- package/esm2022/lib/user/user-enable-button-component/user-enable-button.component.mjs +6 -12
- package/esm2022/lib/user/user-explore.component.mjs +8 -13
- package/esm2022/lib/user/user-form.component.mjs +17 -32
- package/esm2022/lib/user/user-sessions/user-session.service.mjs +5 -5
- package/esm2022/lib/user/user-sessions/user-sessions/user-sessions.component.mjs +10 -12
- package/esm2022/lib/user/user-view.component.mjs +6 -14
- package/esm2022/lib/user/user.model.mjs +1 -21
- package/esm2022/lib/user/user.module.mjs +7 -7
- package/esm2022/lib/user/user.routes.mjs +5 -5
- package/esm2022/lib/user/user.service.mjs +5 -6
- package/esm2022/lib/user/users-view-all.component.mjs +21 -35
- package/esm2022/lib/user-client-enable-disable-button/user-client-enable-disable-button.component.mjs +7 -13
- package/esm2022/lib/user-clients-list/user-client.service.mjs +5 -5
- package/esm2022/lib/user-clients-list/user-clients-list.component.mjs +12 -14
- package/esm2022/lib/user-config/user-config.model.mjs +1 -32
- package/esm2022/lib/user-config/user-config.service.mjs +27 -30
- package/esm2022/lib/user-selector/user-data.service.mjs +5 -7
- package/esm2022/lib/user-selector/user-selector.component.mjs +8 -17
- package/esm2022/lib/user-selector/user-selector.module.mjs +7 -7
- package/esm2022/lib/utility/date-utils.service.mjs +4 -4
- package/esm2022/lib/utility/num-items-selector.component.mjs +5 -7
- package/esm2022/lib/utility/number-selector.component.mjs +6 -10
- package/esm2022/lib/utility/utility.module.mjs +7 -7
- package/fesm2022/ngx-techlify-core.mjs +1879 -2616
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/core/authentication.guard.d.ts +2 -2
- package/lib/core/core.module.d.ts +3 -4
- package/lib/searchable-selector/searchable-selector.component.d.ts +2 -1
- package/package.json +17 -17
|
@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../core";
|
|
4
4
|
export class RoleService {
|
|
5
|
-
http;
|
|
6
5
|
constructor(http) {
|
|
7
6
|
this.http = http;
|
|
8
7
|
}
|
|
@@ -15,13 +14,13 @@ export class RoleService {
|
|
|
15
14
|
getClientSubscriptions(filters) {
|
|
16
15
|
return this.http.get(`api/client-subscriptions`, { params: filters }).toPromise();
|
|
17
16
|
}
|
|
18
|
-
static
|
|
19
|
-
static
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoleService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoleService, providedIn: 'root' }); }
|
|
20
19
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoleService, decorators: [{
|
|
22
21
|
type: Injectable,
|
|
23
22
|
args: [{
|
|
24
23
|
providedIn: 'root'
|
|
25
24
|
}]
|
|
26
|
-
}], ctorParameters:
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
}], ctorParameters: () => [{ type: i1.HttpService }] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFJLENBQUM7SUFFMUMsVUFBVSxDQUFDLElBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BGLENBQUM7K0dBZFUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb2xlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSkgeyB9XG5cbiAgY3JlYXRlUm9sZShyb2xlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGFwaS9yb2xlc2AsIHJvbGUpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgdXBkYXRlUm9sZShyb2xlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgYXBpL3JvbGVzLyR7cm9sZS5pZH1gLCByb2xlKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGdldENsaWVudFN1YnNjcmlwdGlvbnMoZmlsdGVycz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcGkvY2xpZW50LXN1YnNjcmlwdGlvbnNgLCB7IHBhcmFtczogZmlsdGVycyB9KS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -22,28 +22,6 @@ import * as i13 from "@angular/material/progress-bar";
|
|
|
22
22
|
* @since 20160818
|
|
23
23
|
*/
|
|
24
24
|
export class RolesViewAllComponent {
|
|
25
|
-
http;
|
|
26
|
-
route;
|
|
27
|
-
credentialsService;
|
|
28
|
-
userConfigService;
|
|
29
|
-
dialog;
|
|
30
|
-
currentUserService;
|
|
31
|
-
roles = [];
|
|
32
|
-
moduleCode;
|
|
33
|
-
displayedColumns = [
|
|
34
|
-
'index',
|
|
35
|
-
'label',
|
|
36
|
-
'description',
|
|
37
|
-
'module',
|
|
38
|
-
'users',
|
|
39
|
-
'permissions',
|
|
40
|
-
'actions'
|
|
41
|
-
];
|
|
42
|
-
totalItems = 0;
|
|
43
|
-
currentPage = 1;
|
|
44
|
-
isWorking = false;
|
|
45
|
-
clientId;
|
|
46
|
-
config;
|
|
47
25
|
constructor(http, route, credentialsService, userConfigService, dialog, currentUserService) {
|
|
48
26
|
this.http = http;
|
|
49
27
|
this.route = route;
|
|
@@ -51,6 +29,19 @@ export class RolesViewAllComponent {
|
|
|
51
29
|
this.userConfigService = userConfigService;
|
|
52
30
|
this.dialog = dialog;
|
|
53
31
|
this.currentUserService = currentUserService;
|
|
32
|
+
this.roles = [];
|
|
33
|
+
this.displayedColumns = [
|
|
34
|
+
'index',
|
|
35
|
+
'label',
|
|
36
|
+
'description',
|
|
37
|
+
'module',
|
|
38
|
+
'users',
|
|
39
|
+
'permissions',
|
|
40
|
+
'actions'
|
|
41
|
+
];
|
|
42
|
+
this.totalItems = 0;
|
|
43
|
+
this.currentPage = 1;
|
|
44
|
+
this.isWorking = false;
|
|
54
45
|
this.moduleCode = null;
|
|
55
46
|
this.config = this.userConfigService.getConfig();
|
|
56
47
|
}
|
|
@@ -128,13 +119,13 @@ export class RolesViewAllComponent {
|
|
|
128
119
|
}
|
|
129
120
|
});
|
|
130
121
|
}
|
|
131
|
-
static
|
|
132
|
-
static
|
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RolesViewAllComponent, deps: [{ token: i1.HttpService }, { token: i2.ActivatedRoute }, { token: i1.CredentialsService }, { token: i3.UserConfigService }, { token: i4.MatDialog }, { token: i5.CurrentUserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RolesViewAllComponent, selector: "roles-view-all", inputs: { clientId: "clientId" }, ngImport: i0, template: "<section class=\"col-sm-12 my-4\">\n <h3 class=\"page-title text-center\">\n Manage Roles\n <button mat-raised-button color=\"primary\" (click)=\"createOrModifyRole()\" class=\"mr-1\"\n *ngIf=\"!config.roleConfig.disableAddRole\">\n <mat-icon>add</mat-icon>\n New Role\n </button>\n\n <button mat-raised-button type=\"button\" [routerLink]=\"['../users']\" *ngIf=\"!config.roleConfig.disableUsers\"\n class=\"mr-1\">\n <mat-icon>people</mat-icon>\n Users\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"!config.roleConfig.disablePermissions\" class=\"mr-1\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n </h3>\n\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"roles\"\n class=\"w-100\"\n infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n aria-describedby=\"Roles\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Label Column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef> Label </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{element?.label}}</p>\n <span class=\"badge\"\n [ngClass]=\"{'badge-primary':element?.is_global, 'badge-secondary': !element?.is_global}\">\n {{element?.is_global ? 'App role' : 'Custom role'}}\n </span>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.description }} </td>\n </ng-container>\n\n <!-- Module Column -->\n <ng-container matColumnDef=\"module\">\n <th mat-header-cell *matHeaderCellDef> Module </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.module?.name}} </td>\n </ng-container>\n\n <!-- Editable Column -->\n <ng-container matColumnDef=\"editable\">\n <th mat-header-cell *matHeaderCellDef> Editable </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_editable\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_editable\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- GLobal Column -->\n <ng-container matColumnDef=\"is_global\">\n <th mat-header-cell *matHeaderCellDef> Global </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_global\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_global\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- Users Column -->\n <ng-container matColumnDef=\"users\">\n <th mat-header-cell *matHeaderCellDef> # Users </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.role_users_count}} </td>\n </ng-container>\n\n <!-- Permissions Column -->\n <ng-container matColumnDef=\"permissions\">\n <th mat-header-cell *matHeaderCellDef> Permissions </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.permissions_count}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let role\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" [routerLink]=\"['../roles/', role?.id]\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n <button mat-icon-button\n *ngIf=\"(isAdminUser || role.is_editable) && currentUserService.hasPermission('role_update')\"\n (click)=\"createOrModifyRole(role)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n\n</section>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i12.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
133
124
|
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RolesViewAllComponent, decorators: [{
|
|
135
126
|
type: Component,
|
|
136
127
|
args: [{ selector: 'roles-view-all', template: "<section class=\"col-sm-12 my-4\">\n <h3 class=\"page-title text-center\">\n Manage Roles\n <button mat-raised-button color=\"primary\" (click)=\"createOrModifyRole()\" class=\"mr-1\"\n *ngIf=\"!config.roleConfig.disableAddRole\">\n <mat-icon>add</mat-icon>\n New Role\n </button>\n\n <button mat-raised-button type=\"button\" [routerLink]=\"['../users']\" *ngIf=\"!config.roleConfig.disableUsers\"\n class=\"mr-1\">\n <mat-icon>people</mat-icon>\n Users\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"!config.roleConfig.disablePermissions\" class=\"mr-1\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n </h3>\n\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"roles\"\n class=\"w-100\"\n infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n aria-describedby=\"Roles\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Label Column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef> Label </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{element?.label}}</p>\n <span class=\"badge\"\n [ngClass]=\"{'badge-primary':element?.is_global, 'badge-secondary': !element?.is_global}\">\n {{element?.is_global ? 'App role' : 'Custom role'}}\n </span>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.description }} </td>\n </ng-container>\n\n <!-- Module Column -->\n <ng-container matColumnDef=\"module\">\n <th mat-header-cell *matHeaderCellDef> Module </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.module?.name}} </td>\n </ng-container>\n\n <!-- Editable Column -->\n <ng-container matColumnDef=\"editable\">\n <th mat-header-cell *matHeaderCellDef> Editable </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_editable\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_editable\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- GLobal Column -->\n <ng-container matColumnDef=\"is_global\">\n <th mat-header-cell *matHeaderCellDef> Global </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_global\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_global\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- Users Column -->\n <ng-container matColumnDef=\"users\">\n <th mat-header-cell *matHeaderCellDef> # Users </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.role_users_count}} </td>\n </ng-container>\n\n <!-- Permissions Column -->\n <ng-container matColumnDef=\"permissions\">\n <th mat-header-cell *matHeaderCellDef> Permissions </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.permissions_count}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let role\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" [routerLink]=\"['../roles/', role?.id]\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n <button mat-icon-button\n *ngIf=\"(isAdminUser || role.is_editable) && currentUserService.hasPermission('role_update')\"\n (click)=\"createOrModifyRole(role)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n\n</section>\n" }]
|
|
137
|
-
}], ctorParameters:
|
|
128
|
+
}], ctorParameters: () => [{ type: i1.HttpService }, { type: i2.ActivatedRoute }, { type: i1.CredentialsService }, { type: i3.UserConfigService }, { type: i4.MatDialog }, { type: i5.CurrentUserService }], propDecorators: { clientId: [{
|
|
138
129
|
type: Input
|
|
139
130
|
}] } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtdmlldy1hbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGVzLXZpZXctYWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlcy12aWV3LWFsbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU96RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBSTFEOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQW1CdEI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNEO0lBdkJULEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsVUFBVSxDQUFTO0lBQ25CLGdCQUFnQixHQUFhO1FBQzNCLE9BQU87UUFDUCxPQUFPO1FBQ1AsYUFBYTtRQUNiLFFBQVE7UUFDUixPQUFPO1FBQ1AsYUFBYTtRQUNiLFNBQVM7S0FDVixDQUFDO0lBQ0YsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNmLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNULFFBQVEsQ0FBUztJQUMxQixNQUFNLENBQWtCO0lBRXhCLFlBQ1UsSUFBaUIsRUFDakIsS0FBcUIsRUFDckIsa0JBQXNDLEVBQ3ZDLGlCQUFvQyxFQUNuQyxNQUFpQixFQUNsQixrQkFBc0M7UUFMckMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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Q0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFVO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3BELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLElBQUk7Z0JBQ0osU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQWpIVSxxQkFBcUI7NEZBQXJCLHFCQUFxQix3RkN0QmxDLHFxSkFpSEE7OzRGRDNGYSxxQkFBcUI7a0JBSmpDLFNBQVM7K0JBQ0UsZ0JBQWdCO3lQQWtCakIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOmNvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuL3JvbGUubW9kZWwnO1xuaW1wb3J0IHsgTXVsdGlVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdXNlci1jb25maWcnO1xuaW1wb3J0IHsgVXNlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi91c2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUm9sZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL3JvbGUtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQ3VycmVudFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlcic7XG5cbi8qKlxuICogQ29tcG9uZW50IHVzZWQgdG8gdmlldyBhIHNldCBvZiByb2xlc1xuICpcbiAqIEBhdXRob3IgSm9zaHVhIEtpc3Nvb25cbiAqIEBzaW5jZSAyMDE2MDgxOFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xlcy12aWV3LWFsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlcy12aWV3LWFsbC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZXNWaWV3QWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcm9sZXM6IFJvbGVbXSA9IFtdO1xuICBtb2R1bGVDb2RlOiBzdHJpbmc7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICdpbmRleCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnZGVzY3JpcHRpb24nLFxuICAgICdtb2R1bGUnLFxuICAgICd1c2VycycsXG4gICAgJ3Blcm1pc3Npb25zJyxcbiAgICAnYWN0aW9ucydcbiAgXTtcbiAgdG90YWxJdGVtcyA9IDA7XG4gIGN1cnJlbnRQYWdlID0gMTtcbiAgaXNXb3JraW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWVudElkOiBudW1iZXI7XG4gIGNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc1NlcnZpY2U6IENyZWRlbnRpYWxzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIGN1cnJlbnRVc2VyU2VydmljZTogQ3VycmVudFVzZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubW9kdWxlQ29kZSA9IG51bGw7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnVzZXJDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuICB9XG5cbiAgZ2V0IGlzQWRtaW5Vc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jcmVkZW50aWFsc1NlcnZpY2UuY3JlZGVudGlhbHM/LnVzZXI/LnVzZXJfdHlwZV9pZCA9PT0gMSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGlmIChwYXJhbXMubW9kdWxlX2NvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm1vZHVsZUNvZGUgPSBwYXJhbXMubW9kdWxlX2NvZGU7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5pc0FkbWluVXNlcikge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gW1xuICAgICAgICAnaW5kZXgnLFxuICAgICAgICAnbGFiZWwnLFxuICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAnbW9kdWxlJyxcbiAgICAgICAgJ2VkaXRhYmxlJyxcbiAgICAgICAgJ2lzX2dsb2JhbCcsXG4gICAgICAgICd1c2VycycsXG4gICAgICAgICdhY3Rpb25zJyxcbiAgICAgICAgJ3Blcm1pc3Npb25zJ1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAoISh0aGlzLmNvbmZpZz8ucm9sZUNvbmZpZz8uc2hvd01vZHVsZVNlbGVjdG9yT25Gb3JtKSkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmZpbHRlcih4ID0+IHggIT09ICdtb2R1bGUnKTtcbiAgICB9XG4gIH1cblxuICBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgY29uc3QgZmlsdGVyczogYW55ID0ge1xuICAgICAgd2l0aENvdW50OiAncGVybWlzc2lvbnMnXG4gICAgfTtcbiAgICBpZiAodGhpcy5tb2R1bGVDb2RlKSB7XG4gICAgICBmaWx0ZXJzLm1vZHVsZV9jb2RlID0gdGhpcy5tb2R1bGVDb2RlO1xuICAgIH1cbiAgICBpZiAodGhpcy5jbGllbnRJZCkge1xuICAgICAgZmlsdGVycy5jbGllbnRfaWQgPSB0aGlzLmNsaWVudElkO1xuICAgIH1cbiAgICB0aGlzLmh0dHAuZ2V0KCdhcGkvcm9sZXMnLCB7IHBhcmFtczogZmlsdGVycyB9KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy50b3RhbDtcbiAgICAgICAgdGhpcy5yb2xlcyA9IHRoaXMucm9sZXMuY29uY2F0KHJlcy5kYXRhKTtcbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICBpZiAoIXRoaXMuaXNXb3JraW5nKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzV29ya2luZyAmJiB0aGlzLnRvdGFsSXRlbXMgPiB0aGlzLnJvbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSArPSAxO1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU9yTW9kaWZ5Um9sZShyb2xlPzogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSb2xlRm9ybUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJvbGUsXG4gICAgICAgIGNsaWVudF9pZDogdGhpcy5jbGllbnRJZCxcbiAgICAgICAgbW9kdWxlX2NvZGU6IHRoaXMubW9kdWxlQ29kZVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiY29sLXNtLTEyIG15LTRcIj5cbiAgPGgzIGNsYXNzPVwicGFnZS10aXRsZSB0ZXh0LWNlbnRlclwiPlxuICAgIE1hbmFnZSBSb2xlc1xuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZU9yTW9kaWZ5Um9sZSgpXCIgY2xhc3M9XCJtci0xXCJcbiAgICAgICpuZ0lmPVwiIWNvbmZpZy5yb2xlQ29uZmlnLmRpc2FibGVBZGRSb2xlXCI+XG4gICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgIE5ldyBSb2xlXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbcm91dGVyTGlua109XCJbJy4uL3VzZXJzJ11cIiAqbmdJZj1cIiFjb25maWcucm9sZUNvbmZpZy5kaXNhYmxlVXNlcnNcIlxuICAgICAgY2xhc3M9XCJtci0xXCI+XG4gICAgICA8bWF0LWljb24+cGVvcGxlPC9tYXQtaWNvbj5cbiAgICAgIFVzZXJzXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi9yb2xlLXBlcm1pc3Npb25zJ11cIlxuICAgICAgKm5nSWY9XCIhY29uZmlnLnJvbGVDb25maWcuZGlzYWJsZVBlcm1pc3Npb25zXCIgY2xhc3M9XCJtci0xXCI+XG4gICAgICA8bWF0LWljb24+bG9jazwvbWF0LWljb24+XG4gICAgICBSb2xlIFBlcm1pc3Npb25zXG4gICAgPC9idXR0b24+XG4gIDwvaDM+XG5cbiAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMiBwLTBcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicm9sZXNcIlxuICAgICAgICAgICAgIGNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgICAgIGluZmluaXRlU2Nyb2xsIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgICAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCJcbiAgICAgICAgICAgICAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiXG4gICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cIlJvbGVzXCI+XG5cbiAgICAgICAgPCEtLSBJbmRleCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj4ge3sgaSsxIH19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTGFiZWwgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhYmVsXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTGFiZWwgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3tlbGVtZW50Py5sYWJlbH19PC9wPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JhZGdlLXByaW1hcnknOmVsZW1lbnQ/LmlzX2dsb2JhbCwgJ2JhZGdlLXNlY29uZGFyeSc6ICFlbGVtZW50Py5pc19nbG9iYWx9XCI+XG4gICAgICAgICAgICAgIHt7ZWxlbWVudD8uaXNfZ2xvYmFsID8gJ0FwcCByb2xlJyA6ICdDdXN0b20gcm9sZSd9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gRGVzY3JpcHRpb24gQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGVzY3JpcHRpb24gPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQ/LmRlc2NyaXB0aW9uIH19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTW9kdWxlIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJtb2R1bGVcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBNb2R1bGUgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQ/Lm1vZHVsZT8ubmFtZX19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gRWRpdGFibGUgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImVkaXRhYmxlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRWRpdGFibGUgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbGVtZW50Py5pc19lZGl0YWJsZVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi14c1wiPlllczwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWVsZW1lbnQ/LmlzX2VkaXRhYmxlXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4teHNcIj5Obzwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEdMb2JhbCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaXNfZ2xvYmFsXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gR2xvYmFsIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZWxlbWVudD8uaXNfZ2xvYmFsXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXhzXCI+WWVzPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZWxlbWVudD8uaXNfZ2xvYmFsXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4teHNcIj5Obzwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFVzZXJzIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1c2Vyc1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+ICMgVXNlcnMgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQ/LnJvbGVfdXNlcnNfY291bnR9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFBlcm1pc3Npb25zIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwZXJtaXNzaW9uc1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IFBlcm1pc3Npb25zIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5wZXJtaXNzaW9uc19jb3VudH19IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm9sZVwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcm9sZXMvJywgcm9sZT8uaWRdXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfcmVkX2V5ZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiKGlzQWRtaW5Vc2VyIHx8IHJvbGUuaXNfZWRpdGFibGUpICYmIGN1cnJlbnRVc2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyb2xlX3VwZGF0ZScpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9yTW9kaWZ5Um9sZShyb2xlKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgICAgPC90YWJsZT5cbiAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNXb3JraW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG48L3NlY3Rpb24+XG4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtdmlldy1hbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGVzLXZpZXctYWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlcy12aWV3LWFsbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU96RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBSTFEOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQWtCaEMsWUFDVSxJQUFpQixFQUNqQixLQUFxQixFQUNyQixrQkFBc0MsRUFDdkMsaUJBQW9DLEVBQ25DLE1BQWlCLEVBQ2xCLGtCQUFzQztRQUxyQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2xCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUF2Qi9DLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQWE7WUFDM0IsT0FBTztZQUNQLE9BQU87WUFDUCxhQUFhO1lBQ2IsUUFBUTtZQUNSLE9BQU87WUFDUCxhQUFhO1lBQ2IsU0FBUztTQUNWLENBQUM7UUFDRixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVloQixJQUFJLENBQUMsVUFB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QUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVU7UUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDcEQsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUU7Z0JBQ0osSUFBSTtnQkFDSixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVTthQUM3QjtTQUNGLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FqSFUscUJBQXFCO21HQUFyQixxQkFBcUIsd0ZDdEJsQyxxcUpBaUhBOzs0RkQzRmEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLGdCQUFnQjt1T0FrQmpCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpjb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLm1vZGVsJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZyB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IFVzZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci1jb25maWcnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvbGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9yb2xlLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENyZWRlbnRpYWxzU2VydmljZSwgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXInO1xuXG4vKipcbiAqIENvbXBvbmVudCB1c2VkIHRvIHZpZXcgYSBzZXQgb2Ygcm9sZXNcbiAqXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXG4gKiBAc2luY2UgMjAxNjA4MThcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sZXMtdmlldy1hbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZXMtdmlldy1hbGwuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVzVmlld0FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJvbGVzOiBSb2xlW10gPSBbXTtcbiAgbW9kdWxlQ29kZTogc3RyaW5nO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnaW5kZXgnLFxuICAgICdsYWJlbCcsXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnbW9kdWxlJyxcbiAgICAndXNlcnMnLFxuICAgICdwZXJtaXNzaW9ucycsXG4gICAgJ2FjdGlvbnMnXG4gIF07XG4gIHRvdGFsSXRlbXMgPSAwO1xuICBjdXJyZW50UGFnZSA9IDE7XG4gIGlzV29ya2luZyA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGllbnRJZDogbnVtYmVyO1xuICBjb25maWc6IE11bHRpVXNlckNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbHNTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJDb25maWdTZXJ2aWNlOiBVc2VyQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUNvZGUgPSBudWxsO1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgfVxuXG4gIGdldCBpc0FkbWluVXNlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY3JlZGVudGlhbHNTZXJ2aWNlLmNyZWRlbnRpYWxzPy51c2VyPy51c2VyX3R5cGVfaWQgPT09IDEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zLm1vZHVsZV9jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tb2R1bGVDb2RlID0gcGFyYW1zLm1vZHVsZV9jb2RlO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNBZG1pblVzZXIpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFtcbiAgICAgICAgJ2luZGV4JyxcbiAgICAgICAgJ2xhYmVsJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ21vZHVsZScsXG4gICAgICAgICdlZGl0YWJsZScsXG4gICAgICAgICdpc19nbG9iYWwnLFxuICAgICAgICAndXNlcnMnLFxuICAgICAgICAnYWN0aW9ucycsXG4gICAgICAgICdwZXJtaXNzaW9ucydcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKCEodGhpcy5jb25maWc/LnJvbGVDb25maWc/LnNob3dNb2R1bGVTZWxlY3Rvck9uRm9ybSkpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5maWx0ZXIoeCA9PiB4ICE9PSAnbW9kdWxlJyk7XG4gICAgfVxuICB9XG5cbiAgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHtcbiAgICAgIHdpdGhDb3VudDogJ3Blcm1pc3Npb25zJ1xuICAgIH07XG4gICAgaWYgKHRoaXMubW9kdWxlQ29kZSkge1xuICAgICAgZmlsdGVycy5tb2R1bGVfY29kZSA9IHRoaXMubW9kdWxlQ29kZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIGZpbHRlcnMuY2xpZW50X2lkID0gdGhpcy5jbGllbnRJZDtcbiAgICB9XG4gICAgdGhpcy5odHRwLmdldCgnYXBpL3JvbGVzJywgeyBwYXJhbXM6IGZpbHRlcnMgfSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMudG90YWw7XG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLnJvbGVzLmNvbmNhdChyZXMuZGF0YSk7XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVzID0gW107XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgaWYgKCF0aGlzLmlzV29ya2luZykge1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1dvcmtpbmcgJiYgdGhpcy50b3RhbEl0ZW1zID4gdGhpcy5yb2xlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVPck1vZGlmeVJvbGUocm9sZT86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUm9sZUZvcm1Db21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICByb2xlLFxuICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICAgIG1vZHVsZV9jb2RlOiB0aGlzLm1vZHVsZUNvZGVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImNvbC1zbS0xMiBteS00XCI+XG4gIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGUgdGV4dC1jZW50ZXJcIj5cbiAgICBNYW5hZ2UgUm9sZXNcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVPck1vZGlmeVJvbGUoKVwiIGNsYXNzPVwibXItMVwiXG4gICAgICAqbmdJZj1cIiFjb25maWcucm9sZUNvbmZpZy5kaXNhYmxlQWRkUm9sZVwiPlxuICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICBOZXcgUm9sZVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi91c2VycyddXCIgKm5nSWY9XCIhY29uZmlnLnJvbGVDb25maWcuZGlzYWJsZVVzZXJzXCJcbiAgICAgIGNsYXNzPVwibXItMVwiPlxuICAgICAgPG1hdC1pY29uPnBlb3BsZTwvbWF0LWljb24+XG4gICAgICBVc2Vyc1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcm9sZS1wZXJtaXNzaW9ucyddXCJcbiAgICAgICpuZ0lmPVwiIWNvbmZpZy5yb2xlQ29uZmlnLmRpc2FibGVQZXJtaXNzaW9uc1wiIGNsYXNzPVwibXItMVwiPlxuICAgICAgPG1hdC1pY29uPmxvY2s8L21hdC1pY29uPlxuICAgICAgUm9sZSBQZXJtaXNzaW9uc1xuICAgIDwvYnV0dG9uPlxuICA8L2gzPlxuXG4gIDxtYXQtY2FyZCBjbGFzcz1cIm10LTIgcC0wXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJvbGVzXCJcbiAgICAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgICAgICBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiXG4gICAgICAgICAgICAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJSb2xlc1wiPlxuXG4gICAgICAgIDwhLS0gSW5kZXggQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImluZGV4XCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gIyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+IHt7IGkrMSB9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIExhYmVsIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IExhYmVsIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7ZWxlbWVudD8ubGFiZWx9fTwvcD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1wcmltYXJ5JzplbGVtZW50Py5pc19nbG9iYWwsICdiYWRnZS1zZWNvbmRhcnknOiAhZWxlbWVudD8uaXNfZ2xvYmFsfVwiPlxuICAgICAgICAgICAgICB7e2VsZW1lbnQ/LmlzX2dsb2JhbCA/ICdBcHAgcm9sZScgOiAnQ3VzdG9tIHJvbGUnfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIERlc2NyaXB0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IERlc2NyaXB0aW9uIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5kZXNjcmlwdGlvbiB9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIE1vZHVsZSBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibW9kdWxlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTW9kdWxlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5tb2R1bGU/Lm5hbWV9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEVkaXRhYmxlIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJlZGl0YWJsZVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEVkaXRhYmxlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZWxlbWVudD8uaXNfZWRpdGFibGVcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4teHNcIj5ZZXM8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlbGVtZW50Py5pc19lZGl0YWJsZVwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCI+Tm88L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBHTG9iYWwgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlzX2dsb2JhbFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEdsb2JhbCA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVsZW1lbnQ/LmlzX2dsb2JhbFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi14c1wiPlllczwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWVsZW1lbnQ/LmlzX2dsb2JhbFwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCI+Tm88L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBVc2VycyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXNlcnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIFVzZXJzIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5yb2xlX3VzZXJzX2NvdW50fX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBQZXJtaXNzaW9ucyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicGVybWlzc2lvbnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBQZXJtaXNzaW9ucyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudD8ucGVybWlzc2lvbnNfY291bnR9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEFjdGlvbnMgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvbGVcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbcm91dGVyTGlua109XCJbJy4uL3JvbGVzLycsIHJvbGU/LmlkXVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX3JlZF9leWU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIihpc0FkbWluVXNlciB8fCByb2xlLmlzX2VkaXRhYmxlKSAmJiBjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigncm9sZV91cGRhdGUnKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVPck1vZGlmeVJvbGUocm9sZSlcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzV29ya2luZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -18,49 +18,7 @@ import * as i10 from "@angular/material/core";
|
|
|
18
18
|
import * as i11 from "@angular/material/progress-spinner";
|
|
19
19
|
import * as i12 from "@angular/material/select";
|
|
20
20
|
export class SearchableSelectorComponent {
|
|
21
|
-
|
|
22
|
-
http;
|
|
23
|
-
_elementRef;
|
|
24
|
-
dialog;
|
|
25
|
-
ngControl;
|
|
26
|
-
searchInput;
|
|
27
|
-
valueField = 'id';
|
|
28
|
-
titleField = 'title';
|
|
29
|
-
subtitleField;
|
|
30
|
-
apiUrl;
|
|
31
|
-
multiple = false;
|
|
32
|
-
selectedValue;
|
|
33
|
-
selectedValueChange = new EventEmitter();
|
|
34
|
-
enableSearch = true;
|
|
35
|
-
add = false;
|
|
36
|
-
addConfig;
|
|
37
|
-
edit = false;
|
|
38
|
-
editConfig;
|
|
39
|
-
sort = true;
|
|
40
|
-
sortBy;
|
|
41
|
-
searchField;
|
|
42
|
-
itemComponent;
|
|
43
|
-
items = [];
|
|
44
|
-
apiDataProperty = 'data';
|
|
45
|
-
cache = false;
|
|
46
|
-
perPage = 25;
|
|
47
|
-
inDataSearch = false;
|
|
48
|
-
selectionChange = new EventEmitter();
|
|
49
|
-
itemsChange = new EventEmitter();
|
|
50
|
-
focusSearchOnOpen = false;
|
|
51
|
-
isLoading = false;
|
|
52
|
-
onChange = () => { };
|
|
53
|
-
onTouched = () => { };
|
|
54
|
-
static nextId = 0;
|
|
55
|
-
selectorForm;
|
|
56
|
-
stateChanges = new Subject();
|
|
57
|
-
focused = false;
|
|
58
|
-
controlType = 'searchable-selctor';
|
|
59
|
-
id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;
|
|
60
|
-
describedBy = '';
|
|
61
|
-
filters;
|
|
62
|
-
cachedItems = [];
|
|
63
|
-
subscriptions = new Subscription();
|
|
21
|
+
static { this.nextId = 0; }
|
|
64
22
|
get empty() {
|
|
65
23
|
const { value: { select_value } } = this.selectorForm;
|
|
66
24
|
return !select_value;
|
|
@@ -72,14 +30,12 @@ export class SearchableSelectorComponent {
|
|
|
72
30
|
this._required = coerceBooleanProperty(value);
|
|
73
31
|
this.stateChanges.next();
|
|
74
32
|
}
|
|
75
|
-
_required = false;
|
|
76
33
|
get disabled() { return this._disabled; }
|
|
77
34
|
set disabled(value) {
|
|
78
35
|
this._disabled = coerceBooleanProperty(value);
|
|
79
36
|
this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();
|
|
80
37
|
this.stateChanges.next();
|
|
81
38
|
}
|
|
82
|
-
_disabled = false;
|
|
83
39
|
get value() {
|
|
84
40
|
return this.selectorForm.get('select_value')?.value || '';
|
|
85
41
|
}
|
|
@@ -93,6 +49,35 @@ export class SearchableSelectorComponent {
|
|
|
93
49
|
this._elementRef = _elementRef;
|
|
94
50
|
this.dialog = dialog;
|
|
95
51
|
this.ngControl = ngControl;
|
|
52
|
+
this.valueField = 'id';
|
|
53
|
+
this.titleField = 'title';
|
|
54
|
+
this.multiple = false;
|
|
55
|
+
this.selectedValueChange = new EventEmitter();
|
|
56
|
+
this.enableSearch = true;
|
|
57
|
+
this.add = false;
|
|
58
|
+
this.edit = false;
|
|
59
|
+
this.sort = true;
|
|
60
|
+
this.items = [];
|
|
61
|
+
this.apiDataProperty = 'data';
|
|
62
|
+
this.cache = false;
|
|
63
|
+
this.perPage = 25;
|
|
64
|
+
this.inDataSearch = false;
|
|
65
|
+
this.panelWidth = '';
|
|
66
|
+
this.selectionChange = new EventEmitter();
|
|
67
|
+
this.itemsChange = new EventEmitter();
|
|
68
|
+
this.focusSearchOnOpen = false;
|
|
69
|
+
this.isLoading = false;
|
|
70
|
+
this.onChange = () => { };
|
|
71
|
+
this.onTouched = () => { };
|
|
72
|
+
this.stateChanges = new Subject();
|
|
73
|
+
this.focused = false;
|
|
74
|
+
this.controlType = 'searchable-selctor';
|
|
75
|
+
this.id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;
|
|
76
|
+
this.describedBy = '';
|
|
77
|
+
this.cachedItems = [];
|
|
78
|
+
this.subscriptions = new Subscription();
|
|
79
|
+
this._required = false;
|
|
80
|
+
this._disabled = false;
|
|
96
81
|
this.selectorForm = formBuilder.group({
|
|
97
82
|
select_value: [null],
|
|
98
83
|
search: ''
|
|
@@ -210,8 +195,6 @@ export class SearchableSelectorComponent {
|
|
|
210
195
|
get errorState() {
|
|
211
196
|
return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));
|
|
212
197
|
}
|
|
213
|
-
static ngAcceptInputType_disabled;
|
|
214
|
-
static ngAcceptInputType_required;
|
|
215
198
|
onScroll() {
|
|
216
199
|
if (this.filters.lastPage > this.filters.page) {
|
|
217
200
|
this.filters.page += 1;
|
|
@@ -290,27 +273,27 @@ export class SearchableSelectorComponent {
|
|
|
290
273
|
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
291
274
|
this.subscriptions.unsubscribe();
|
|
292
275
|
}
|
|
293
|
-
static
|
|
294
|
-
static
|
|
276
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchableSelectorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.FocusMonitor }, { token: i3.HttpService }, { token: i0.ElementRef }, { token: i4.MatDialog }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
277
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchableSelectorComponent, selector: "app-searchable-selector", inputs: { valueField: "valueField", titleField: "titleField", subtitleField: "subtitleField", apiUrl: "apiUrl", multiple: "multiple", selectedValue: "selectedValue", enableSearch: "enableSearch", add: "add", addConfig: "addConfig", edit: "edit", editConfig: "editConfig", sort: "sort", sortBy: "sortBy", searchField: "searchField", itemComponent: "itemComponent", items: "items", apiDataProperty: "apiDataProperty", cache: "cache", perPage: "perPage", inDataSearch: "inDataSearch", panelWidth: "panelWidth", focusSearchOnOpen: "focusSearchOnOpen", required: "required", disabled: "disabled", value: "value" }, outputs: { selectedValueChange: "selectedValueChange", selectionChange: "selectionChange", itemsChange: "itemsChange" }, providers: [
|
|
295
278
|
{
|
|
296
279
|
provide: MatFormFieldControl,
|
|
297
280
|
useExisting: SearchableSelectorComponent
|
|
298
281
|
}
|
|
299
|
-
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<
|
|
282
|
+
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"selectorForm\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\"\n [panelWidth]=\"panelWidth\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n <span>{{getPropertyValue(item,titleField)}}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style='font-size: 14px;'>\n - {{ getPropertyValue(item,subtitleField) }}\n </span>\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</ng-container>", styles: [".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
|
|
300
283
|
}
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
284
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchableSelectorComponent, decorators: [{
|
|
302
285
|
type: Component,
|
|
303
286
|
args: [{ selector: 'app-searchable-selector', providers: [
|
|
304
287
|
{
|
|
305
288
|
provide: MatFormFieldControl,
|
|
306
289
|
useExisting: SearchableSelectorComponent
|
|
307
290
|
}
|
|
308
|
-
], template: "<
|
|
309
|
-
}], ctorParameters:
|
|
291
|
+
], template: "<ng-container [formGroup]=\"selectorForm\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" (openedChange)=\"openedChange($event)\"\n [panelWidth]=\"panelWidth\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\" #searchInput>\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n <span>{{getPropertyValue(item,titleField)}}</span>\n <span *ngIf=\"subtitleField\" class=\"text-secondary\" style='font-size: 14px;'>\n - {{ getPropertyValue(item,subtitleField) }}\n </span>\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</ng-container>", styles: [".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}\n"] }]
|
|
292
|
+
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.FocusMonitor }, { type: i3.HttpService }, { type: i0.ElementRef }, { type: i4.MatDialog }, { type: i1.NgControl, decorators: [{
|
|
310
293
|
type: Optional
|
|
311
294
|
}, {
|
|
312
295
|
type: Self
|
|
313
|
-
}] }]
|
|
296
|
+
}] }], propDecorators: { searchInput: [{
|
|
314
297
|
type: ViewChild,
|
|
315
298
|
args: ['searchInput']
|
|
316
299
|
}], valueField: [{
|
|
@@ -355,6 +338,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
355
338
|
type: Input
|
|
356
339
|
}], inDataSearch: [{
|
|
357
340
|
type: Input
|
|
341
|
+
}], panelWidth: [{
|
|
342
|
+
type: Input
|
|
358
343
|
}], selectionChange: [{
|
|
359
344
|
type: Output
|
|
360
345
|
}], itemsChange: [{
|
|
@@ -368,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
368
353
|
}], value: [{
|
|
369
354
|
type: Input
|
|
370
355
|
}] } });
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO0lBOEU1QjtJQUNBO0lBQ0E7SUFDQTtJQUNtQjtJQWpGSCxXQUFXLENBQWE7SUFFekMsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixVQUFVLEdBQVcsT0FBTyxDQUFDO0lBQzdCLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQVU7SUFDaEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJ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YTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsaUJBQWlCO3NCQUF6QixLQUFLO2dCQXdCRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgU3ViamVjdCwgb2YsIGZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odHRwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2VhcmNoYWJsZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG4gIEBJbnB1dCgpIHRpdGxlRmllbGQ6IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlRmllbGQ6IHN0cmluZztcbiAgQElucHV0KCkgYXBpVXJsITogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBhZGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkQ29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZWRpdENvbmZpZzogYW55O1xuICBASW5wdXQoKSBzb3J0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc29ydEJ5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGl0ZW1Db21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4gfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGFwaURhdGFQcm9wZXJ0eTogc3RyaW5nID0gJ2RhdGEnO1xuICBASW5wdXQoKSBjYWNoZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwZXJQYWdlOiBudW1iZXIgPSAyNTtcbiAgQElucHV0KCkgaW5EYXRhU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZm9jdXNTZWFyY2hPbk9wZW4gPSBmYWxzZTtcblxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBzZWxlY3RvckZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGZvY3VzZWQgPSBmYWxzZTtcbiAgY29udHJvbFR5cGUgPSAnc2VhcmNoYWJsZS1zZWxjdG9yJztcbiAgaWQgPSBgc2VhcmNoYWJsZS1zZWxjdG9yLSR7U2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50Lm5leHRJZCsrfWA7XG4gIGRlc2NyaWJlZEJ5ID0gJyc7XG4gIGZpbHRlcnM6IGFueTtcbiAgY2FjaGVkSXRlbXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGdldCBlbXB0eSgpIHtcbiAgICBjb25zdCB7IHZhbHVlOiB7IHNlbGVjdF92YWx1ZSB9IH0gPSB0aGlzLnNlbGVjdG9yRm9ybTtcbiAgICByZXR1cm4gIXNlbGVjdF92YWx1ZTtcbiAgfVxuXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCkgeyByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5OyB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnNlbGVjdG9yRm9ybS5kaXNhYmxlKCkgOiB0aGlzLnNlbGVjdG9yRm9ybS5lbmFibGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKT8udmFsdWUgfHwgJyc7XG4gIH1cbiAgc2V0IHZhbHVlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0b3JGb3JtLnBhdGNoVmFsdWUoeyBzZWxlY3RfdmFsdWU6IGRhdGEgfHwgJycgfSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcblxuICAgIHRoaXMuc2VsZWN0b3JGb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VsZWN0X3ZhbHVlOiBbbnVsbF0sXG4gICAgICBzZWFyY2g6ICcnXG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgX2ZvY3VzTW9uaXRvci5tb25pdG9yKF9lbGVtZW50UmVmLCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiAhb3JpZ2luKSB7XG4gICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5lZENoYW5nZShvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kYXRhSXRlbXMubGVuZ3RoID09PSAwICYmIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VhcmNoJykudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VhcmNoJykuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIGlmIChvcGVuZWQgJiYgdGhpcy5lbmFibGVTZWFyY2ggJiYgdGhpcy5mb2N1c1NlYXJjaE9uT3Blbikge1xuICAgICAgLy8gRm9jdXMgdGhlIHNlYXJjaCBpbnB1dCBmaWVsZFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRhdGFJdGVtcygpOiBhbnlbXSB7XG4gICAgbGV0IGl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiAodGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA+IDApKVxuICAgICAgaXRlbXMgPSBbLi4udGhpcy5zZWxlY3RlZFZhbHVlLCAuLi50aGlzLml0ZW1zXTtcbiAgICBlbHNlIGlmICgoIXRoaXMubXVsdGlwbGUpICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSlcbiAgICAgIGl0ZW1zID0gW3RoaXMuc2VsZWN0ZWRWYWx1ZSwgLi4udGhpcy5pdGVtc107XG4gICAgZWxzZVxuICAgICAgaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmZpbmRJbmRleCh2ID0+IHZbdGhpcy52YWx1ZUZpZWxkXSA9PT0gYVtpXVt0aGlzLnZhbHVlRmllbGRdKSA9PT0gaSk7XG4gICAgLy9FbWl0IHRoZSBpdGVtcyB0byBhbnkgY2hpbGQgY29tcG9uZW50XG4gICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KGl0ZW1zKTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWFyY2gnKS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVTZWFyY2gpXG4gICAgICAgICAgdGhpcy5zZWFyY2godmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJzID0ge1xuICAgICAgcGVyUGFnZTogdGhpcy5wZXJQYWdlLFxuICAgICAgc2VhcmNoOiAnJyxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBsYXN0UGFnZTogMVxuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0KSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc29ydF9ieSA9IHRoaXMuc29ydEJ5IHx8IGAke3RoaXMudGl0bGVGaWVsZH18YXNjYDtcbiAgICB9XG5cbiAgICAvL0ZldGNoIEl0ZW1zIG9ubHkgaWYgaXQgaXMgbm90IHByZXNlbnQsIGNhbiBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBsb2FkIG1hbnkgZW50cmllcy5cbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmV0Y2hJdGVtTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIGZldGNoSXRlbUxpc3QoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGxldCByZXF1ZXN0ID0gdGhpcy5odHRwLmdldCh0aGlzLmFwaVVybCwgeyBwYXJhbXM6IHRoaXMuZmlsdGVycyB9KVxuICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwLmNhY2hlKCkuZ2V0KHRoaXMuYXBpVXJsLCB7IHBhcmFtczogdGhpcy5maWx0ZXJzIH0pXG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBvZigpLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgc3dpdGNoTWFwKChfKSA9PiBmcm9tKHJlcXVlc3QpKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmcgPSBmYWxzZSksXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuY29uY2F0KHJlc3VsdFt0aGlzLmFwaURhdGFQcm9wZXJ0eV0pO1xuICAgICAgICBpZiAodGhpcy5jYWNoZSkge1xuICAgICAgICAgIHRoaXMuY2FjaGVkSXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVycy5wYWdlID0gcmVzdWx0Py5jdXJyZW50X3BhZ2UgfHwgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gcmVzdWx0Py5sYXN0X3BhZ2UgfHwgMTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IGRhdGE7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlWYWx1ZShlbGU6IGFueSwga2V5U3RyaW5nOiBzdHJpbmcpIHtcbiAgICBrZXlTdHJpbmcgPSBrZXlTdHJpbmcucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csIFwiLiQxXCIpOyAvLyBjb252ZXJ0IGluZGV4ZXMgdG8gcHJvcGVydGllc1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9eXFwuLywgXCJcIik7IC8vIHN0cmlwIGEgbGVhZGluZyBkb3RcbiAgICBjb25zdCBrZXlMaXN0ID0ga2V5U3RyaW5nLnNwbGl0KFwiLlwiKTtcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGtleUxpc3QubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlMaXN0W2ldO1xuICAgICAgaWYgKGVsZSAmJiBrZXkgaW4gZWxlKSB7XG4gICAgICAgIGVsZSA9IGVsZVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlO1xuICB9XG5cbiAgX2hhbmRsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSAodGhpcy52YWx1ZSBhcyBbXSkubWFwKHggPT4gdGhpcy5kYXRhSXRlbXMuZmluZCh5ID0+IHlbdGhpcy52YWx1ZUZpZWxkXSA9PT0geCkpO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZGF0YUl0ZW1zLmZpbmQoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5uZ0NvbnRyb2wudG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbC5kaXJ0eSkpO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlcXVpcmVkOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBvblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJzLmxhc3RQYWdlID4gdGhpcy5maWx0ZXJzLnBhZ2UpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWREYXRhKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMucGFnZSA9IDE7XG4gICAgdGhpcy5maWx0ZXJzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1t0aGlzLnNlYXJjaEZpZWxkXSA9IGV2ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgc2VhcmNoIGZpZWxkIHRvIHNlYXJjaCBpbiBkYXRhXG4gICAgaWYgKHRoaXMuaW5EYXRhU2VhcmNoICYmIHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVySXRlbXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhldmVudDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcy5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZVt0aGlzLnNlYXJjaEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuc2VhcmNoKGV2ZW50LnRvTG93ZXJDYXNlKCkpICE9IC0xXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgICB9XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICAuLi50aGlzLmFkZENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2gocmVzdWx0Lml0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlbGVjdF92YWx1ZScpLnNldFZhbHVlKHJlc3VsdC5pdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZWRpdEl0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5pdGVtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuZWRpdENvbmZpZ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwic2VsZWN0b3JGb3JtXCIgY2xhc3M9XCJzZWFyY2hhYmxlLXNlbGN0b3ItY29udGFpbmVyXCI+XG4gIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdF92YWx1ZVwiIGZvY3VzZWQ9XCJmYWxzZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiX2hhbmRsZUlucHV0KClcIiAob3BlbmVkQ2hhbmdlKT1cIm9wZW5lZENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZW5hYmxlU2VhcmNoXCIgY2xhc3M9XCJwLTEgdy0xMDBcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNzZWFyY2hJbnB1dD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXY+XG4gICAgICA8IS0tIFRPRE86SW1wbGVtZW50IHNjcm9sbCBvbmx5IGZvciBvcHRpb25zIGFuZCBoYXZlIHNlYXJjaCBmaXhlZCAtLT5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cIiBsZXQgaXRlbSBvZiBkYXRhSXRlbXNcIiBbdmFsdWVdPVwiZ2V0UHJvcGVydHlWYWx1ZShpdGVtLHZhbHVlRmllbGQpXCI+XG4gICAgICAgIDxzcGFuPnt7Z2V0UHJvcGVydHlWYWx1ZShpdGVtLHRpdGxlRmllbGQpfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3VidGl0bGVGaWVsZFwiIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIiBzdHlsZT0nZm9udC1zaXplOiAxNHB4Oyc+XG4gICAgICAgICAgICAgICAgICAgIC0ge3sgZ2V0UHJvcGVydHlWYWx1ZShpdGVtLHN1YnRpdGxlRmllbGQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhsYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cInctMTAwXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cIm15LTRcIiBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjMwXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PlxuICA8L21hdC1zZWxlY3Q+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImFkZFwiIGNsYXNzPVwicmVsYXRpdmUtaWNvblwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiYWRkSXRlbSgkZXZlbnQpXCI+YWRkX2NpcmNsZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiZWRpdCAmJiBzZWxlY3RlZFZhbHVlXCIgY2xhc3M9XCJyZWxhdGl2ZS1pY29uXCIgbWF0U3VmZml4IChjbGljayk9XCJlZGl0SXRlbSgkZXZlbnQpXCI+ZWRpdDwvbWF0LWljb24+XG48L2Rpdj5cbiJdfQ==
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NlYXJjaGFibGUtc2VsZWN0b3Ivc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8sMkJBQTJCO2FBZ0MvQixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXbEIsSUFBSSxLQUFLO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7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QkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsaUJBQWlCO3NCQUF6QixLQUFLO2dCQXdCRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgU3ViamVjdCwgb2YsIGZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odHRwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2VhcmNoYWJsZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoYWJsZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG4gIEBJbnB1dCgpIHRpdGxlRmllbGQ6IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlRmllbGQ6IHN0cmluZztcbiAgQElucHV0KCkgYXBpVXJsITogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBhZGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkQ29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZWRpdENvbmZpZzogYW55O1xuICBASW5wdXQoKSBzb3J0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc29ydEJ5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGl0ZW1Db21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4gfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGFwaURhdGFQcm9wZXJ0eTogc3RyaW5nID0gJ2RhdGEnO1xuICBASW5wdXQoKSBjYWNoZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwZXJQYWdlOiBudW1iZXIgPSAyNTtcbiAgQElucHV0KCkgaW5EYXRhU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhbmVsV2lkdGg6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGZvY3VzU2VhcmNoT25PcGVuID0gZmFsc2U7XG5cbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9O1xuICBzdGF0aWMgbmV4dElkID0gMDtcbiAgc2VsZWN0b3JGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBmb2N1c2VkID0gZmFsc2U7XG4gIGNvbnRyb2xUeXBlID0gJ3NlYXJjaGFibGUtc2VsY3Rvcic7XG4gIGlkID0gYHNlYXJjaGFibGUtc2VsY3Rvci0ke1NlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudC5uZXh0SWQrK31gO1xuICBkZXNjcmliZWRCeSA9ICcnO1xuICBmaWx0ZXJzOiBhbnk7XG4gIGNhY2hlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBnZXQgZW1wdHkoKSB7XG4gICAgY29uc3QgeyB2YWx1ZTogeyBzZWxlY3RfdmFsdWUgfSB9ID0gdGhpcy5zZWxlY3RvckZvcm07XG4gICAgcmV0dXJuICFzZWxlY3RfdmFsdWU7XG4gIH1cblxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHsgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTsgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3JlcXVpcmVkOyB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VsZWN0X3ZhbHVlJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5zZWxlY3RvckZvcm0uZGlzYWJsZSgpIDogdGhpcy5zZWxlY3RvckZvcm0uZW5hYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VsZWN0X3ZhbHVlJyk/LnZhbHVlIHx8ICcnO1xuICB9XG4gIHNldCB2YWx1ZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybS5wYXRjaFZhbHVlKHsgc2VsZWN0X3ZhbHVlOiBkYXRhIHx8ICcnIH0pO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sKSB7XG5cbiAgICB0aGlzLnNlbGVjdG9yRm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlbGVjdF92YWx1ZTogW251bGxdLFxuICAgICAgc2VhcmNoOiAnJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIF9mb2N1c01vbml0b3IubW9uaXRvcihfZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgIW9yaWdpbikge1xuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBvcGVuZWRDaGFuZ2Uob3BlbmVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuZGF0YUl0ZW1zLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdG9yRm9ybS5nZXQoJ3NlYXJjaCcpLnNldFZhbHVlKCcnKTtcbiAgICB9XG5cbiAgICBpZiAob3BlbmVkICYmIHRoaXMuZW5hYmxlU2VhcmNoICYmIHRoaXMuZm9jdXNTZWFyY2hPbk9wZW4pIHtcbiAgICAgIC8vIEZvY3VzIHRoZSBzZWFyY2ggaW5wdXQgZmllbGRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkYXRhSXRlbXMoKTogYW55W10ge1xuICAgIGxldCBpdGVtczogYW55W10gPSBbXTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgJiYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggPiAwKSlcbiAgICAgIGl0ZW1zID0gWy4uLnRoaXMuc2VsZWN0ZWRWYWx1ZSwgLi4udGhpcy5pdGVtc107XG4gICAgZWxzZSBpZiAoKCF0aGlzLm11bHRpcGxlKSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUpXG4gICAgICBpdGVtcyA9IFt0aGlzLnNlbGVjdGVkVmFsdWUsIC4uLnRoaXMuaXRlbXNdO1xuICAgIGVsc2VcbiAgICAgIGl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcigodiwgaSwgYSkgPT4gYS5maW5kSW5kZXgodiA9PiB2W3RoaXMudmFsdWVGaWVsZF0gPT09IGFbaV1bdGhpcy52YWx1ZUZpZWxkXSkgPT09IGkpO1xuICAgIC8vRW1pdCB0aGUgaXRlbXMgdG8gYW55IGNoaWxkIGNvbXBvbmVudFxuICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChpdGVtcyk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VhcmNoJykudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlU2VhcmNoKVxuICAgICAgICAgIHRoaXMuc2VhcmNoKHZhbHVlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZmlsdGVycyA9IHtcbiAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSxcbiAgICAgIHNlYXJjaDogJycsXG4gICAgICBwYWdlOiAxLFxuICAgICAgbGFzdFBhZ2U6IDFcbiAgICB9XG4gICAgaWYgKHRoaXMuc29ydCkge1xuICAgICAgdGhpcy5maWx0ZXJzLnNvcnRfYnkgPSB0aGlzLnNvcnRCeSB8fCBgJHt0aGlzLnRpdGxlRmllbGR9fGFzY2A7XG4gICAgfVxuXG4gICAgLy9GZXRjaCBJdGVtcyBvbmx5IGlmIGl0IGlzIG5vdCBwcmVzZW50LCBjYW4gYmUgdXNlZCBpbiBwbGFjZXMgd2hlcmUgd2UgbG9hZCBtYW55IGVudHJpZXMuXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZldGNoSXRlbUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICBmZXRjaEl0ZW1MaXN0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cC5nZXQodGhpcy5hcGlVcmwsIHsgcGFyYW1zOiB0aGlzLmZpbHRlcnMgfSlcbiAgICBpZiAodGhpcy5jYWNoZSkge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuaHR0cC5jYWNoZSgpLmdldCh0aGlzLmFwaVVybCwgeyBwYXJhbXM6IHRoaXMuZmlsdGVycyB9KVxuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgb2YoKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgIHN3aXRjaE1hcCgoXykgPT4gZnJvbShyZXF1ZXN0KSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpLFxuICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmNvbmNhdChyZXN1bHRbdGhpcy5hcGlEYXRhUHJvcGVydHldKTtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICB0aGlzLmNhY2hlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcnMucGFnZSA9IHJlc3VsdD8uY3VycmVudF9wYWdlIHx8IDE7XG4gICAgICAgIHRoaXMuZmlsdGVycy5sYXN0UGFnZSA9IHJlc3VsdD8ubGFzdF9wYWdlIHx8IDE7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBkYXRhO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldFByb3BlcnR5VmFsdWUoZWxlOiBhbnksIGtleVN0cmluZzogc3RyaW5nKSB7XG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCBcIi4kMVwiKTsgLy8gY29udmVydCBpbmRleGVzIHRvIHByb3BlcnRpZXNcbiAgICBrZXlTdHJpbmcgPSBrZXlTdHJpbmcucmVwbGFjZSgvXlxcLi8sIFwiXCIpOyAvLyBzdHJpcCBhIGxlYWRpbmcgZG90XG4gICAgY29uc3Qga2V5TGlzdCA9IGtleVN0cmluZy5zcGxpdChcIi5cIik7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBrZXlMaXN0Lmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgY29uc3Qga2V5ID0ga2V5TGlzdFtpXTtcbiAgICAgIGlmIChlbGUgJiYga2V5IGluIGVsZSkge1xuICAgICAgICBlbGUgPSBlbGVba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsZTtcbiAgfVxuXG4gIF9oYW5kbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKVxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gKHRoaXMudmFsdWUgYXMgW10pLm1hcCh4ID0+IHRoaXMuZGF0YUl0ZW1zLmZpbmQoeSA9PiB5W3RoaXMudmFsdWVGaWVsZF0gPT09IHgpKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLmRhdGFJdGVtcy5maW5kKHggPT4geFt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmludmFsaWQgJiYgKHRoaXMubmdDb250cm9sLnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2wuZGlydHkpKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgb25TY3JvbGwoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVycy5sYXN0UGFnZSA+IHRoaXMuZmlsdGVycy5wYWdlKSB7XG4gICAgICB0aGlzLmZpbHRlcnMucGFnZSArPSAxO1xuICAgICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkRGF0YSgpIHtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgdGhpcy5maWx0ZXJzLnBhZ2UgPSAxO1xuICAgIHRoaXMuZmlsdGVycy5sYXN0UGFnZSA9IDE7XG4gICAgdGhpcy5mZXRjaEl0ZW1MaXN0KCk7XG4gIH1cblxuICBzZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlcnNbdGhpcy5zZWFyY2hGaWVsZF0gPSBldmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9IGV2ZW50O1xuICAgIH1cbiAgICAvLyB3ZSBuZWVkIHNlYXJjaCBmaWVsZCB0byBzZWFyY2ggaW4gZGF0YVxuICAgIGlmICh0aGlzLmluRGF0YVNlYXJjaCAmJiB0aGlzLnNlYXJjaEZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlckl0ZW1zKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWxvYWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVySXRlbXMoZXZlbnQ6IHN0cmluZykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY2FjaGVkSXRlbXMuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiAodmFsdWVbdGhpcy5zZWFyY2hGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnNlYXJjaChldmVudC50b0xvd2VyQ2FzZSgpKSAhPSAtMVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY2FjaGVkSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgYWRkSXRlbShldmVudDogYW55KSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLml0ZW1Db21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgLi4udGhpcy5hZGRDb25maWdcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvckZvcm0uZ2V0KCdzZWxlY3RfdmFsdWUnKS5zZXRWYWx1ZShyZXN1bHQuaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGVkaXRJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuaXRlbUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgZGF0YToge1xuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdGVkVmFsdWVcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLmVkaXRDb25maWdcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHggPT4geFt0aGlzLnZhbHVlRmllbGRdICE9PSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy52YWx1ZUZpZWxkXSk7XG4gICAgICAgIHRoaXMuaXRlbXMucHVzaChyZXN1bHQuaXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VsZWN0X3ZhbHVlJykuc2V0VmFsdWUocmVzdWx0Lml0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUlucHV0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInNlbGVjdG9yRm9ybVwiPlxuICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdF92YWx1ZVwiIGZvY3VzZWQ9XCJmYWxzZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiX2hhbmRsZUlucHV0KClcIiAob3BlbmVkQ2hhbmdlKT1cIm9wZW5lZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJlbmFibGVTZWFyY2hcIiBjbGFzcz1cInAtMSB3LTEwMFwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI3NlYXJjaElucHV0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPCEtLSBUT0RPOkltcGxlbWVudCBzY3JvbGwgb25seSBmb3Igb3B0aW9ucyBhbmQgaGF2ZSBzZWFyY2ggZml4ZWQgLS0+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCIgbGV0IGl0ZW0gb2YgZGF0YUl0ZW1zXCIgW3ZhbHVlXT1cImdldFByb3BlcnR5VmFsdWUoaXRlbSx2YWx1ZUZpZWxkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7Z2V0UHJvcGVydHlWYWx1ZShpdGVtLHRpdGxlRmllbGQpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZUZpZWxkXCIgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIHN0eWxlPSdmb250LXNpemU6IDE0cHg7Jz5cbiAgICAgICAgICAgICAgICAgICAgLSB7eyBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW0sc3VidGl0bGVGaWVsZCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZ4bGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJ3LTEwMFwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJteS00XCIgY29sb3I9XCJwcmltYXJ5XCIgZGlhbWV0ZXI9XCIzMFwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImFkZFwiIGNsYXNzPVwicmVsYXRpdmUtaWNvblwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiYWRkSXRlbSgkZXZlbnQpXCI+YWRkX2NpcmNsZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJlZGl0ICYmIHNlbGVjdGVkVmFsdWVcIiBjbGFzcz1cInJlbGF0aXZlLWljb25cIiBtYXRTdWZmaXggKGNsaWNrKT1cImVkaXRJdGVtKCRldmVudClcIj5lZGl0PC9tYXQtaWNvbj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|