@naniteninja/dashboard-components-lib 1.0.0
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/components/auto-delegation/animations.mjs +20 -0
- package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
- package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +98 -0
- package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +24 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
- package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
- package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
- package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
- package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
- package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
- package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
- package/esm2022/lib/components/chat/chat.component.mjs +307 -0
- package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
- package/esm2022/lib/components/chat/chat.service.mjs +63 -0
- package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
- package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
- package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
- package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
- package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
- package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
- package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
- package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
- package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
- package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
- package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
- package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
- package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +170 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
- package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
- package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
- package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
- package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
- package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
- package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
- package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
- package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/lookup/default-spider-config.lookup.mjs +18 -0
- package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
- package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
- package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
- package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
- package/esm2022/lib/enums/direction.enum.mjs +6 -0
- package/esm2022/lib/enums/form-field-type.mjs +30 -0
- package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
- package/esm2022/lib/enums/status-types.mjs +8 -0
- package/esm2022/lib/model/select-option-template.mjs +2 -0
- package/esm2022/lib/operations/operations.mjs +19 -0
- package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
- package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
- package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
- package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
- package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
- package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
- package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
- package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
- package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
- package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
- package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
- package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
- package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
- package/esm2022/lib/shared/shared.module.mjs +23 -0
- package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
- package/esm2022/public-api.mjs +122 -0
- package/fesm2022/naniteninja-dashboard-components-lib.mjs +4334 -0
- package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/auto-delegation/animations.d.ts +1 -0
- package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
- package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
- package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
- package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
- package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
- package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
- package/lib/components/calendar/agenda/agenda.component.d.ts +22 -0
- package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
- package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
- package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
- package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
- package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
- package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
- package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
- package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
- package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
- package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
- package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
- package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
- package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
- package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
- package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
- package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
- package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
- package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
- package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
- package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
- package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
- package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
- package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
- package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
- package/lib/components/chat/chat.component.d.ts +70 -0
- package/lib/components/chat/chat.component.module.d.ts +22 -0
- package/lib/components/chat/chat.service.d.ts +15 -0
- package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
- package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
- package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
- package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
- package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
- package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
- package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
- package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
- package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
- package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
- package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
- package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
- package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
- package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
- package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
- package/lib/components/client-home/client-home.component.d.ts +44 -0
- package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
- package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
- package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
- package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
- package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
- package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
- package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
- package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
- package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
- package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
- package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
- package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
- package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
- package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
- package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
- package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
- package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
- package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
- package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +73 -0
- package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
- package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
- package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
- package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
- package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
- package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
- package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
- package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
- package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
- package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
- package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
- package/lib/components/profile-card/profile-card.component.d.ts +11 -0
- package/lib/components/profile-card/profile-card.module.d.ts +9 -0
- package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
- package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
- package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
- package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
- package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
- package/lib/components/spider-chart/lookup/default-spider-config.lookup.d.ts +2 -0
- package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
- package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
- package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
- package/lib/enums/direction.enum.d.ts +4 -0
- package/lib/enums/form-field-type.d.ts +28 -0
- package/lib/enums/local-storage-keys.enum.d.ts +3 -0
- package/lib/enums/status-types.d.ts +6 -0
- package/lib/model/select-option-template.d.ts +5 -0
- package/lib/operations/operations.d.ts +19 -0
- package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
- package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
- package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
- package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
- package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
- package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
- package/lib/pipes/initials/initials.pipe.d.ts +7 -0
- package/lib/pipes/round/round.pipe.d.ts +7 -0
- package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
- package/lib/services/abstract-cache.service.d.ts +9 -0
- package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
- package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
- package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
- package/lib/shared/shared.module.d.ts +13 -0
- package/naniteninja-dashboard-components-lib-1.0.0.tgz +0 -0
- package/package.json +69 -0
- package/public-api.d.ts +121 -0
- package/src/assets/auto-delegation-modal/cross.svg +17 -0
- package/src/assets/auto-delegation-modal/menu.svg +3 -0
- package/src/assets/auto-delegation-modal/timer-center-dot.svg +25 -0
- package/src/assets/auto-delegation-modal/user-profile.svg +9 -0
- package/src/assets/circle-progress/circle-progress-1.svg +159 -0
- package/src/assets/circle-progress/circle-progress-2.svg +155 -0
- package/src/assets/circle-progress/circle-progress-3.svg +25 -0
- package/src/assets/circle-progress/circle-progress.svg +159 -0
- package/src/assets/client-match-overview/background-eclipse.svg +13 -0
- package/src/assets/fonts/calistoga/Calistoga-Regular.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Black.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-BlackItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Bold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-BoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ExtraBold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Heavy.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-HeavyItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Light.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-LightItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Medium.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-MediumItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Regular.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-RegularItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-SemiBold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Thin.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ThinItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-UltraLight.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-UltraLightItalic.ttf +0 -0
- package/src/assets/grid/icons/filter-button.svg +47 -0
- package/src/assets/grid/images/chips-background-shadow.svg +34 -0
- package/src/assets/icons/back-v2.svg +14 -0
- package/src/assets/icons/checkbox/checkbox-off.svg +72 -0
- package/src/assets/icons/checkbox/checkbox-on.svg +113 -0
- package/src/assets/icons/checkmark-button.svg +72 -0
- package/src/assets/icons/checkmark.svg +7 -0
- package/src/assets/icons/close-icon.svg +3 -0
- package/src/assets/icons/compose-matcher/notes.svg +4 -0
- package/src/assets/icons/compose-matcher/profile.svg +4 -0
- package/src/assets/icons/compose-matcher/suggest.svg +3 -0
- package/src/assets/icons/compose-matcher/visual.svg +3 -0
- package/src/assets/icons/default-profile.svg +23 -0
- package/src/assets/icons/defualt.svg +5 -0
- package/src/assets/icons/first-page.svg +7 -0
- package/src/assets/icons/incrementer/minus.svg +3 -0
- package/src/assets/icons/incrementer/plus.svg +3 -0
- package/src/assets/icons/info.svg +5 -0
- package/src/assets/icons/last-page.svg +7 -0
- package/src/assets/icons/minus.svg +3 -0
- package/src/assets/icons/next-page.svg +6 -0
- package/src/assets/icons/plus.svg +3 -0
- package/src/assets/icons/popup-defualt.svg +34 -0
- package/src/assets/icons/prev-page.svg +6 -0
- package/src/assets/icons/send-icon.svg +4 -0
- package/src/assets/icons/shake.svg +74 -0
- package/src/assets/icons/thumbs-up.svg +28 -0
- package/src/assets/nsfw/blazeface.bundle.js +2 -0
- package/src/assets/nsfw/model/group1-shard1of1 +0 -0
- package/src/assets/nsfw/model/model.json +4085 -0
- package/src/assets/nsfw/nsfwjs.bundle.js +2 -0
- package/src/assets/nsfw/tf.bundle.js +2 -0
- package/src/assets/scheduler/accept.svg +3 -0
- package/src/assets/scheduler/accept_active.svg +3 -0
- package/src/assets/scheduler/arrow.svg +13 -0
- package/src/assets/scheduler/cancel.svg +3 -0
- package/src/assets/scheduler/cancel_active.svg +3 -0
- package/src/assets/scheduler/heart.svg +18 -0
- package/src/assets/trait-visual/force-directed-graph.png +0 -0
- package/src/lib/shared-styles/common/_colors.scss +30 -0
- package/src/lib/shared-styles/common/animations.scss +48 -0
- package/src/lib/shared-styles/common/base-input-field.scss +132 -0
- package/src/lib/shared-styles/common/buttons.scss +152 -0
- package/src/lib/shared-styles/common/cards.scss +163 -0
- package/src/lib/shared-styles/common/client-dash.scss +5 -0
- package/src/lib/shared-styles/common/date-picker.scss +179 -0
- package/src/lib/shared-styles/common/draggable-scroll-and-marquee.scss +34 -0
- package/src/lib/shared-styles/common/feedback.scss +157 -0
- package/src/lib/shared-styles/common/fonts.scss +3 -0
- package/src/lib/shared-styles/common/information-card.scss +56 -0
- package/src/lib/shared-styles/common/input.scss +110 -0
- package/src/lib/shared-styles/common/lib-styles-utils.scss +157 -0
- package/src/lib/shared-styles/common/lists.scss +91 -0
- package/src/lib/shared-styles/common/login.scss +32 -0
- package/src/lib/shared-styles/common/maps.scss +10 -0
- package/src/lib/shared-styles/common/matcher-dash.scss +49 -0
- package/src/lib/shared-styles/common/modal_styles.scss +32 -0
- package/src/lib/shared-styles/common/notifications-list.scss +9 -0
- package/src/lib/shared-styles/common/overrides.scss +6 -0
- package/src/lib/shared-styles/common/pulse.scss +26 -0
- package/src/lib/shared-styles/common/swiper.scss +5 -0
- package/src/lib/shared-styles/common/tab-menu.scss +74 -0
- package/src/lib/shared-styles/common/theme.scss +55 -0
- package/src/lib/shared-styles/common/typography.scss +121 -0
- package/src/lib/shared-styles/common/user-menu.scss +129 -0
- package/src/lib/shared-styles/fonts/calistoga.font.scss +6 -0
- package/src/lib/shared-styles/fonts/gilroy.font.scss +160 -0
- package/src/lib/shared-styles/images/compress.png +0 -0
- package/src/lib/shared-styles/images/expand.png +0 -0
- package/src/lib/shared-styles/styles.scss +25 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { CommonOperations } from '../../operations/operations';
|
|
4
|
+
import { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';
|
|
5
|
+
import { innerProgressPinkColors } from '../client-home/lookup/inner-progress-pink-colors.config';
|
|
6
|
+
import { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';
|
|
7
|
+
import { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';
|
|
8
|
+
import { INNER_CIRCLE_STATE } from '../client-match-overview/enums/inner-circle-state.enum';
|
|
9
|
+
import { CircleVariable } from './enums/circle-variable.enum';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
export class CircleProgressComponent {
|
|
13
|
+
set config(newConfig) {
|
|
14
|
+
if (newConfig) {
|
|
15
|
+
this._config = { ...this._config, ...newConfig };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
get config() {
|
|
19
|
+
return this._config;
|
|
20
|
+
}
|
|
21
|
+
constructor(el) {
|
|
22
|
+
this.el = el;
|
|
23
|
+
this.variable = CircleVariable.Partial;
|
|
24
|
+
this._config = {
|
|
25
|
+
value: 10,
|
|
26
|
+
max: 100,
|
|
27
|
+
partialColors: progressDefaultColors,
|
|
28
|
+
showExternalPartialCircleProgress: true,
|
|
29
|
+
inner: {
|
|
30
|
+
value: 100,
|
|
31
|
+
max: 100,
|
|
32
|
+
colors: innerProgressDefaultColors,
|
|
33
|
+
state: INNER_CIRCLE_STATE.Quiet,
|
|
34
|
+
showIllumination: false,
|
|
35
|
+
},
|
|
36
|
+
imageUrl: '',
|
|
37
|
+
width: '62.6px',
|
|
38
|
+
height: '63.18px',
|
|
39
|
+
showValueProportionLabel: true,
|
|
40
|
+
imgObjectPosition: 'top',
|
|
41
|
+
hasNotification: false,
|
|
42
|
+
prefix: '$',
|
|
43
|
+
suffix: '',
|
|
44
|
+
};
|
|
45
|
+
this.innerProgressDefaultColors = innerProgressDefaultColors;
|
|
46
|
+
this.innerProgressPinkColors = innerProgressPinkColors;
|
|
47
|
+
this.innerProgressTealColors = innerProgressTealColors;
|
|
48
|
+
this.circleVariable = CircleVariable;
|
|
49
|
+
this.INNER_CIRCLE_STATE = INNER_CIRCLE_STATE;
|
|
50
|
+
this.pathId = CommonOperations.randomString(10);
|
|
51
|
+
this.innerCirclePathId = CommonOperations.randomString(10);
|
|
52
|
+
this.innerCircleBehindPathId = CommonOperations.randomString(10);
|
|
53
|
+
}
|
|
54
|
+
ngAfterViewInit() {
|
|
55
|
+
if (this.variable === CircleVariable.Complete) {
|
|
56
|
+
this.createCircle();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
createCircle() {
|
|
60
|
+
const element = this.el.nativeElement.querySelector('svg');
|
|
61
|
+
const color = d3.interpolateRgb('#221E26', this.config.partialColors?.incomplete);
|
|
62
|
+
const path = d3.select(element).select('path');
|
|
63
|
+
d3.select(element)
|
|
64
|
+
.selectAll('path')
|
|
65
|
+
.data(this.createQuadrilateralSegments(this.generatePathSamplePoints(path.node(), 0.5)))
|
|
66
|
+
.enter()
|
|
67
|
+
.append('path')
|
|
68
|
+
.style('fill', (d) => color(d['t']))
|
|
69
|
+
.style('stroke', (d) => color(d['t']))
|
|
70
|
+
.attr('d', (d) => this.constructJoinedLinePath(d[0], d[1], d[2], d[3], 32));
|
|
71
|
+
}
|
|
72
|
+
generatePathSamplePoints(path, precision) {
|
|
73
|
+
const n = path.getTotalLength();
|
|
74
|
+
const t = [0];
|
|
75
|
+
let i = 0;
|
|
76
|
+
while ((i += precision) < n)
|
|
77
|
+
t.push(i);
|
|
78
|
+
t.push(n);
|
|
79
|
+
return t.map((r) => {
|
|
80
|
+
const domPoint = path.getPointAtLength(r);
|
|
81
|
+
const a = [domPoint.x, domPoint.y];
|
|
82
|
+
a['t'] = r / n;
|
|
83
|
+
return a;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
createQuadrilateralSegments(points) {
|
|
87
|
+
return d3.range(points.length - 1).map((i) => {
|
|
88
|
+
const a = [points[i - 1], points[i], points[i + 1], points[i + 2]];
|
|
89
|
+
a['t'] = (points[i]['t'] + points[i + 1]['t']) / 2;
|
|
90
|
+
return a;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
constructJoinedLinePath(p0, p1, p2, p3, width) {
|
|
94
|
+
const u12 = this.calculatePerpendicularVector(p1, p2);
|
|
95
|
+
const r = width / 6;
|
|
96
|
+
let a = [p1[0] + u12[0] * r, p1[1] + u12[1] * r];
|
|
97
|
+
let b = [p2[0] + u12[0] * r, p2[1] + u12[1] * r];
|
|
98
|
+
let c = [p2[0] - u12[0] * r, p2[1] - u12[1] * r];
|
|
99
|
+
let d = [p1[0] - u12[0] * r, p1[1] - u12[1] * r];
|
|
100
|
+
if (p0) {
|
|
101
|
+
const u01 = this.calculatePerpendicularVector(p0, p1);
|
|
102
|
+
const e = [p1[0] + u01[0] + u12[0], p1[1] + u01[1] + u12[1]];
|
|
103
|
+
a = this.computeLineIntersection(p1, e, a, b);
|
|
104
|
+
d = this.computeLineIntersection(p1, e, d, c);
|
|
105
|
+
}
|
|
106
|
+
if (p3) {
|
|
107
|
+
const u23 = this.calculatePerpendicularVector(p2, p3);
|
|
108
|
+
const e = [p2[0] + u23[0] + u12[0], p2[1] + u23[1] + u12[1]];
|
|
109
|
+
b = this.computeLineIntersection(p2, e, a, b);
|
|
110
|
+
c = this.computeLineIntersection(p2, e, d, c);
|
|
111
|
+
}
|
|
112
|
+
return 'M' + a + 'L' + b + ' ' + c + ' ' + d + 'Z';
|
|
113
|
+
}
|
|
114
|
+
computeLineIntersection(a, b, c, d) {
|
|
115
|
+
const x1 = c[0];
|
|
116
|
+
const x3 = a[0];
|
|
117
|
+
const x21 = d[0] - x1;
|
|
118
|
+
const x43 = b[0] - x3;
|
|
119
|
+
const y1 = c[1];
|
|
120
|
+
const y3 = a[1];
|
|
121
|
+
const y21 = d[1] - y1;
|
|
122
|
+
const y43 = b[1] - y3;
|
|
123
|
+
const ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
|
|
124
|
+
return [x1 + ua * x21, y1 + ua * y21];
|
|
125
|
+
}
|
|
126
|
+
calculatePerpendicularVector(p0, p1) {
|
|
127
|
+
const u01x = p0[1] - p1[1];
|
|
128
|
+
const u01y = p1[0] - p0[0];
|
|
129
|
+
const u01d = Math.sqrt(u01x * u01x + u01y * u01y);
|
|
130
|
+
return [u01x / u01d, u01y / u01d];
|
|
131
|
+
}
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: { variable: "variable", config: "config" }, ngImport: i0, template: "<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\r\n\r\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\r\n @if (!config.imageUrl) {\r\n <div class=\"text-container\">\r\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\r\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\r\n </div>\r\n } @else {\r\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\r\n }\r\n</div>\r\n\r\n@if (variable === circleVariable.Partial) {\r\n <div\r\n [ngClass]=\"{\r\n pulse: config.inner?.showIllumination,\r\n 'illuminated-external': showExternalPartialCircleProgress,\r\n 'illuminated-internal': !showExternalPartialCircleProgress,\r\n }\"\r\n ></div>\r\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n @if (config.showExternalPartialCircleProgress) {\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\r\n }\r\n <g transform=\"translate(0.25)\">\r\n <!-- response time indicators -->\r\n @if (config.showExternalPartialCircleProgress) {\r\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\r\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\r\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\r\n />\r\n }\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\r\n } @else {\r\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\r\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\r\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\r\n />\r\n }\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\r\n }\r\n <defs>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"5\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\r\n }\"\r\n />\r\n </g>\r\n </mask>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\r\n <g>\r\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\r\n </g>\r\n </mask>\r\n <radialGradient id=\"grad2\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n </radialGradient>\r\n\r\n <radialGradient id=\"gradInnerPink\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n </radialGradient>\r\n\r\n <radialGradient id=\"gradInnerTeal\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n </radialGradient>\r\n </defs>\r\n </g>\r\n @if (config.showValueProportionLabel) {\r\n <text\r\n x=\"25\"\r\n y=\"70\"\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n font-size=\"12\"\r\n fill=\"white\"\r\n stroke=\"black\"\r\n stroke-width=\"3\"\r\n stroke-linejoin=\"round\"\r\n stroke-linecap=\"round\"\r\n paint-order=\"stroke fill\"\r\n >\r\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\r\n </text>\r\n }\r\n <defs>\r\n <mask id=\"cut-circle\">\r\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\r\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\r\n </mask>\r\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\r\n </pattern>\r\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\r\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\r\n </filter>\r\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\r\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\r\n </filter>\r\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"6.63108\" />\r\n <feGaussianBlur stdDeviation=\"3.31554\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\r\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\r\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient\r\n id=\"paint4_radial_239_3673\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r=\"1\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\r\n >\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient\r\n id=\"paint6_radial_239_3673\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r=\"1\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\r\n >\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n </defs>\r\n </svg>\r\n\r\n @if (config.showExternalPartialCircleProgress) {\r\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\r\n <defs>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"8.5\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\r\n }\"\r\n />\r\n </g>\r\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\r\n </mask>\r\n <radialGradient id=\"grad\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n </radialGradient>\r\n </defs>\r\n </svg>\r\n }\r\n}\r\n@if (variable === circleVariable.Complete) {\r\n <svg\r\n class=\"circle-progress-d3__main\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n viewBox=\"-10 -10 90 90\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\r\n >\r\n <g transform=\"translate(0.3,-0.3)\">\r\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\r\n </g>\r\n </svg>\r\n\r\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\r\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\r\n <path\r\n opacity=\"0.15\"\r\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\r\n stroke-width=\"12\"\r\n stroke=\"black\"\r\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\r\n />\r\n </g>\r\n <defs>\r\n <mask id=\"cut-circle\">\r\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\r\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\r\n </mask>\r\n </defs>\r\n </svg>\r\n\r\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.mask]=\"'url(#' + pathId + ')'\"\r\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\r\n />\r\n <defs>\r\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"12\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\r\n }\"\r\n />\r\n </g>\r\n </mask>\r\n </defs>\r\n </svg>\r\n}\r\n", styles: [".pulse{overflow:visible!important}.pulse:before{content:\"\";position:absolute;inset:0;border-radius:50%;animation:pulse-animation 2s infinite}@keyframes pulse-animation{0%{transform:scale(.95);box-shadow:0 0 #fe3c73e3}70%{transform:scale(1);box-shadow:0 0 0 10px #fe3c7300}to{transform:scale(.95);box-shadow:0 0 #fe3c7300}}:host{position:relative;display:flex;width:var(--width);--width: 101px;--font-family: \"Calistoga\", serif;--color-text: #fff;--font-size-percentage: 17px}.label-hours{position:absolute;bottom:3.5em;left:3.5em;font-size:7px;z-index:99}.circle{position:absolute;top:48%;left:50%;height:var(--lib-circle-progress-height, 65%);width:var(--lib-circle-progress-width, 65%);transform:translate(-50%,-50%);background:linear-gradient(180deg,#27242c 61.33%,#0c0b0e 96.43%);border-radius:50%;display:grid;justify-content:center;align-items:center}.circle-text{width:85%;height:85%}.circle-img{display:block;overflow:hidden}.circle .text-container{display:grid}.circle .text-container .percent{text-align:center;color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-percentage)}.circle .text-container .bottom-text{text-align:center;opacity:.6;color:#ffffff80}.circle img{width:100%;height:100%;object-fit:cover}.circle-progress__image{z-index:5;position:relative}.circle-progress__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:5}.circle-progress__mask>g{transform:scale(.92);transform-origin:center center}.circle-progress__mask>g>path{transform-origin:center center}.circle-progress-d3__image{position:relative;z-index:8}.circle-progress-d3__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:11}.circle-progress-d3__mask>g{transform:scale(.88);transform-origin:center center}.circle-progress-d3__mask>g>path{transform-origin:center center}.circle-progress-d3__main{position:absolute;top:0;transform:scale(.69) translate(-12.05%,-11.9%);z-index:10}.pulse.illuminated-external{position:absolute;top:10%;left:11.5%;width:75%;height:75%}.pulse.illuminated-internal{position:absolute;top:14%;left:16%;width:67%;height:67%}.notification-icon{position:absolute;top:12.5%;right:12.5%;width:30%;z-index:6}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressComponent, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{ selector: 'lib-circle-progress', changeDetection: ChangeDetectionStrategy.OnPush, template: "<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\r\n\r\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\r\n @if (!config.imageUrl) {\r\n <div class=\"text-container\">\r\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\r\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\r\n </div>\r\n } @else {\r\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\r\n }\r\n</div>\r\n\r\n@if (variable === circleVariable.Partial) {\r\n <div\r\n [ngClass]=\"{\r\n pulse: config.inner?.showIllumination,\r\n 'illuminated-external': showExternalPartialCircleProgress,\r\n 'illuminated-internal': !showExternalPartialCircleProgress,\r\n }\"\r\n ></div>\r\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n @if (config.showExternalPartialCircleProgress) {\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\r\n }\r\n <g transform=\"translate(0.25)\">\r\n <!-- response time indicators -->\r\n @if (config.showExternalPartialCircleProgress) {\r\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\r\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\r\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\r\n />\r\n }\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\r\n } @else {\r\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\r\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\r\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\r\n />\r\n }\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\r\n }\r\n <defs>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"5\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\r\n }\"\r\n />\r\n </g>\r\n </mask>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\r\n <g>\r\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\r\n </g>\r\n </mask>\r\n <radialGradient id=\"grad2\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n </radialGradient>\r\n\r\n <radialGradient id=\"gradInnerPink\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\r\n </radialGradient>\r\n\r\n <radialGradient id=\"gradInnerTeal\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\r\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\r\n </radialGradient>\r\n </defs>\r\n </g>\r\n @if (config.showValueProportionLabel) {\r\n <text\r\n x=\"25\"\r\n y=\"70\"\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n font-size=\"12\"\r\n fill=\"white\"\r\n stroke=\"black\"\r\n stroke-width=\"3\"\r\n stroke-linejoin=\"round\"\r\n stroke-linecap=\"round\"\r\n paint-order=\"stroke fill\"\r\n >\r\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\r\n </text>\r\n }\r\n <defs>\r\n <mask id=\"cut-circle\">\r\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\r\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\r\n </mask>\r\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\r\n </pattern>\r\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\r\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\r\n </filter>\r\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\r\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\r\n </filter>\r\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"6.63108\" />\r\n <feGaussianBlur stdDeviation=\"3.31554\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\r\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\r\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient\r\n id=\"paint4_radial_239_3673\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r=\"1\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\r\n >\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient\r\n id=\"paint6_radial_239_3673\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r=\"1\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\r\n >\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\r\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\r\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\r\n </linearGradient>\r\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\r\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\r\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\r\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </radialGradient>\r\n </defs>\r\n </svg>\r\n\r\n @if (config.showExternalPartialCircleProgress) {\r\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\r\n <defs>\r\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"8.5\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\r\n }\"\r\n />\r\n </g>\r\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\r\n </mask>\r\n <radialGradient id=\"grad\">\r\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\r\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\r\n </radialGradient>\r\n </defs>\r\n </svg>\r\n }\r\n}\r\n@if (variable === circleVariable.Complete) {\r\n <svg\r\n class=\"circle-progress-d3__main\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n viewBox=\"-10 -10 90 90\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\r\n >\r\n <g transform=\"translate(0.3,-0.3)\">\r\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\r\n </g>\r\n </svg>\r\n\r\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\r\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\r\n <path\r\n opacity=\"0.15\"\r\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\r\n stroke-width=\"12\"\r\n stroke=\"black\"\r\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\r\n />\r\n </g>\r\n <defs>\r\n <mask id=\"cut-circle\">\r\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\r\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\r\n </mask>\r\n </defs>\r\n </svg>\r\n\r\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle\r\n r=\"45\"\r\n cx=\"45\"\r\n cy=\"45\"\r\n [attr.mask]=\"'url(#' + pathId + ')'\"\r\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\r\n />\r\n <defs>\r\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\r\n <g>\r\n <path\r\n #progressPath\r\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-width=\"12\"\r\n [ngStyle]=\"{\r\n 'stroke-dasharray': progressPath.getTotalLength(),\r\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\r\n }\"\r\n />\r\n </g>\r\n </mask>\r\n </defs>\r\n </svg>\r\n}\r\n", styles: [".pulse{overflow:visible!important}.pulse:before{content:\"\";position:absolute;inset:0;border-radius:50%;animation:pulse-animation 2s infinite}@keyframes pulse-animation{0%{transform:scale(.95);box-shadow:0 0 #fe3c73e3}70%{transform:scale(1);box-shadow:0 0 0 10px #fe3c7300}to{transform:scale(.95);box-shadow:0 0 #fe3c7300}}:host{position:relative;display:flex;width:var(--width);--width: 101px;--font-family: \"Calistoga\", serif;--color-text: #fff;--font-size-percentage: 17px}.label-hours{position:absolute;bottom:3.5em;left:3.5em;font-size:7px;z-index:99}.circle{position:absolute;top:48%;left:50%;height:var(--lib-circle-progress-height, 65%);width:var(--lib-circle-progress-width, 65%);transform:translate(-50%,-50%);background:linear-gradient(180deg,#27242c 61.33%,#0c0b0e 96.43%);border-radius:50%;display:grid;justify-content:center;align-items:center}.circle-text{width:85%;height:85%}.circle-img{display:block;overflow:hidden}.circle .text-container{display:grid}.circle .text-container .percent{text-align:center;color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-percentage)}.circle .text-container .bottom-text{text-align:center;opacity:.6;color:#ffffff80}.circle img{width:100%;height:100%;object-fit:cover}.circle-progress__image{z-index:5;position:relative}.circle-progress__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:5}.circle-progress__mask>g{transform:scale(.92);transform-origin:center center}.circle-progress__mask>g>path{transform-origin:center center}.circle-progress-d3__image{position:relative;z-index:8}.circle-progress-d3__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:11}.circle-progress-d3__mask>g{transform:scale(.88);transform-origin:center center}.circle-progress-d3__mask>g>path{transform-origin:center center}.circle-progress-d3__main{position:absolute;top:0;transform:scale(.69) translate(-12.05%,-11.9%);z-index:10}.pulse.illuminated-external{position:absolute;top:10%;left:11.5%;width:75%;height:75%}.pulse.illuminated-internal{position:absolute;top:14%;left:16%;width:67%;height:67%}.notification-icon{position:absolute;top:12.5%;right:12.5%;width:30%;z-index:6}\n"] }]
|
|
138
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { variable: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], config: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}] } });
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2lyY2xlLXByb2dyZXNzL2NpcmNsZS1wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9jaXJjbGUtcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBUzlELE1BQU0sT0FBTyx1QkFBdUI7SUEwQmxDLElBQ0ksTUFBTSxDQUFDLFNBQW9EO1FBQzdELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFF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QUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLENBQVcsRUFBRSxDQUFXO1FBQ2hGLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEVBQVksRUFBRSxFQUFZO1FBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQXpJVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwrR0NsQnBDLGlrZ0JBcVNBOzs0RkRuUmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNOytFQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQTBCRixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcbmltcG9ydCB7IENvbW1vbk9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9pbnRlcmZhY2VzL2lubmVyLXBhcnRpYWwtY2lyY2xlLXByb2dyZXNzLWNvbG9ycy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9ycy5jb25maWcnO1xyXG5pbXBvcnQgeyBpbm5lclByb2dyZXNzUGlua0NvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy1waW5rLWNvbG9ycy5jb25maWcnO1xyXG5pbXBvcnQgeyBpbm5lclByb2dyZXNzVGVhbENvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy10ZWFsLWNvbG9ycy5jb25maWcnO1xyXG5pbXBvcnQgeyBwcm9ncmVzc0RlZmF1bHRDb2xvcnMgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9sb29rdXAvcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcnMuY29uZmlnJztcclxuaW1wb3J0IHsgSU5ORVJfQ0lSQ0xFX1NUQVRFIH0gZnJvbSAnLi4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2VudW1zL2lubmVyLWNpcmNsZS1zdGF0ZS5lbnVtJztcclxuaW1wb3J0IHsgQ2lyY2xlVmFyaWFibGUgfSBmcm9tICcuL2VudW1zL2NpcmNsZS12YXJpYWJsZS5lbnVtJztcclxuaW1wb3J0IHsgQ2lyY2xlUHJvZ3Jlc3NDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvY2lyY2xlLXByb2dyZXNzLWNvbmZpZy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2lyY2xlLXByb2dyZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2lyY2xlLXByb2dyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaXJjbGUtcHJvZ3Jlc3MuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENpcmNsZVByb2dyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgdmFyaWFibGU6IENpcmNsZVZhcmlhYmxlID0gQ2lyY2xlVmFyaWFibGUuUGFydGlhbDtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnOiBQYXJ0aWFsPENpcmNsZVByb2dyZXNzQ29uZmlnPiA9IHtcclxuICAgIHZhbHVlOiAxMCxcclxuICAgIG1heDogMTAwLFxyXG4gICAgcGFydGlhbENvbG9yczogcHJvZ3Jlc3NEZWZhdWx0Q29sb3JzLFxyXG4gICAgc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzOiB0cnVlLFxyXG5cclxuICAgIGlubmVyOiB7XHJcbiAgICAgIHZhbHVlOiAxMDAsXHJcbiAgICAgIG1heDogMTAwLFxyXG4gICAgICBjb2xvcnM6IGlubmVyUHJvZ3Jlc3NEZWZhdWx0Q29sb3JzLFxyXG4gICAgICBzdGF0ZTogSU5ORVJfQ0lSQ0xFX1NUQVRFLlF1aWV0LFxyXG4gICAgICBzaG93SWxsdW1pbmF0aW9uOiBmYWxzZSxcclxuICAgIH0sXHJcbiAgICBpbWFnZVVybDogJycsXHJcbiAgICB3aWR0aDogJzYyLjZweCcsXHJcbiAgICBoZWlnaHQ6ICc2My4xOHB4JyxcclxuICAgIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbDogdHJ1ZSxcclxuICAgIGltZ09iamVjdFBvc2l0aW9uOiAndG9wJyxcclxuICAgIGhhc05vdGlmaWNhdGlvbjogZmFsc2UsXHJcbiAgICBwcmVmaXg6ICckJyxcclxuICAgIHN1ZmZpeDogJycsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgY29uZmlnKG5ld0NvbmZpZzogUGFydGlhbDxDaXJjbGVQcm9ncmVzc0NvbmZpZz4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdDb25maWcpIHtcclxuICAgICAgdGhpcy5fY29uZmlnID0geyAuLi50aGlzLl9jb25maWcsIC4uLm5ld0NvbmZpZyB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbmZpZygpOiBQYXJ0aWFsPENpcmNsZVByb2dyZXNzQ29uZmlnPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlubmVyUHJvZ3Jlc3NEZWZhdWx0Q29sb3JzOiBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgPSBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycztcclxuICBwdWJsaWMgaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnM6IElJbm5lclBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycyA9IGlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzO1xyXG4gIHB1YmxpYyBpbm5lclByb2dyZXNzVGVhbENvbG9yczogSUlubmVyUGFydGlhbENpcmNsZVByb2dyZXNzQ29sb3JzID0gaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnM7XHJcbiAgcHVibGljIGNpcmNsZVZhcmlhYmxlID0gQ2lyY2xlVmFyaWFibGU7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBJTk5FUl9DSVJDTEVfU1RBVEUgPSBJTk5FUl9DSVJDTEVfU1RBVEU7XHJcbiAgcHVibGljIHJlYWRvbmx5IHBhdGhJZDogc3RyaW5nID0gQ29tbW9uT3BlcmF0aW9ucy5yYW5kb21TdHJpbmcoMTApO1xyXG4gIHB1YmxpYyByZWFkb25seSBpbm5lckNpcmNsZVBhdGhJZDogc3RyaW5nID0gQ29tbW9uT3BlcmF0aW9ucy5yYW5kb21TdHJpbmcoMTApO1xyXG4gIHB1YmxpYyByZWFkb25seSBpbm5lckNpcmNsZUJlaGluZFBhdGhJZDogc3RyaW5nID0gQ29tbW9uT3BlcmF0aW9ucy5yYW5kb21TdHJpbmcoMTApO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YXJpYWJsZSA9PT0gQ2lyY2xlVmFyaWFibGUuQ29tcGxldGUpIHtcclxuICAgICAgdGhpcy5jcmVhdGVDaXJjbGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ2lyY2xlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcclxuXHJcbiAgICBjb25zdCBjb2xvciA9IGQzLmludGVycG9sYXRlUmdiKCcjMjIxRTI2JywgdGhpcy5jb25maWcucGFydGlhbENvbG9ycz8uaW5jb21wbGV0ZSk7XHJcblxyXG4gICAgY29uc3QgcGF0aCA9IGQzLnNlbGVjdChlbGVtZW50KS5zZWxlY3QoJ3BhdGgnKTtcclxuXHJcbiAgICBkMy5zZWxlY3QoZWxlbWVudClcclxuICAgICAgLnNlbGVjdEFsbCgncGF0aCcpXHJcbiAgICAgIC5kYXRhKHRoaXMuY3JlYXRlUXVhZHJpbGF0ZXJhbFNlZ21lbnRzKHRoaXMuZ2VuZXJhdGVQYXRoU2FtcGxlUG9pbnRzKHBhdGgubm9kZSgpLCAwLjUpKSlcclxuICAgICAgLmVudGVyKClcclxuICAgICAgLmFwcGVuZCgncGF0aCcpXHJcbiAgICAgIC5zdHlsZSgnZmlsbCcsIChkOiBudW1iZXJbXVtdKSA9PiBjb2xvcihkWyd0J10pKVxyXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsIChkOiBudW1iZXJbXVtdKSA9PiBjb2xvcihkWyd0J10pKVxyXG4gICAgICAuYXR0cignZCcsIChkOiBudW1iZXJbXVtdKSA9PiB0aGlzLmNvbnN0cnVjdEpvaW5lZExpbmVQYXRoKGRbMF0sIGRbMV0sIGRbMl0sIGRbM10sIDMyKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlUGF0aFNhbXBsZVBvaW50cyhwYXRoOiBTVkdQYXRoRWxlbWVudCwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXJbXVtdIHtcclxuICAgIGNvbnN0IG46IG51bWJlciA9IHBhdGguZ2V0VG90YWxMZW5ndGgoKTtcclxuICAgIGNvbnN0IHQ6IG51bWJlcltdID0gWzBdO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKChpICs9IHByZWNpc2lvbikgPCBuKSB0LnB1c2goaSk7XHJcbiAgICB0LnB1c2gobik7XHJcbiAgICByZXR1cm4gdC5tYXAoKHIpID0+IHtcclxuICAgICAgY29uc3QgZG9tUG9pbnQgPSBwYXRoLmdldFBvaW50QXRMZW5ndGgocik7XHJcbiAgICAgIGNvbnN0IGE6IG51bWJlcltdID0gW2RvbVBvaW50LngsIGRvbVBvaW50LnldO1xyXG4gICAgICBhWyd0J10gPSByIC8gbjtcclxuICAgICAgcmV0dXJuIGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUXVhZHJpbGF0ZXJhbFNlZ21lbnRzKHBvaW50czogbnVtYmVyW11bXSk6IG51bWJlcltdW11bXSB7XHJcbiAgICByZXR1cm4gKGQzLnJhbmdlKHBvaW50cy5sZW5ndGggLSAxKSBhcyBudW1iZXJbXSkubWFwKChpOiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgYTogbnVtYmVyW11bXSA9IFtwb2ludHNbaSAtIDFdLCBwb2ludHNbaV0sIHBvaW50c1tpICsgMV0sIHBvaW50c1tpICsgMl1dO1xyXG4gICAgICBhWyd0J10gPSAocG9pbnRzW2ldWyd0J10gKyBwb2ludHNbaSArIDFdWyd0J10pIC8gMjtcclxuICAgICAgcmV0dXJuIGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0Sm9pbmVkTGluZVBhdGgocDA6IG51bWJlcltdLCBwMTogbnVtYmVyW10sIHAyOiBudW1iZXJbXSwgcDM6IG51bWJlcltdLCB3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHUxMiA9IHRoaXMuY2FsY3VsYXRlUGVycGVuZGljdWxhclZlY3RvcihwMSwgcDIpO1xyXG4gICAgY29uc3QgciA9IHdpZHRoIC8gNjtcclxuICAgIGxldCBhOiBudW1iZXJbXSA9IFtwMVswXSArIHUxMlswXSAqIHIsIHAxWzFdICsgdTEyWzFdICogcl07XHJcbiAgICBsZXQgYjogbnVtYmVyW10gPSBbcDJbMF0gKyB1MTJbMF0gKiByLCBwMlsxXSArIHUxMlsxXSAqIHJdO1xyXG4gICAgbGV0IGM6IG51bWJlcltdID0gW3AyWzBdIC0gdTEyWzBdICogciwgcDJbMV0gLSB1MTJbMV0gKiByXTtcclxuICAgIGxldCBkOiBudW1iZXJbXSA9IFtwMVswXSAtIHUxMlswXSAqIHIsIHAxWzFdIC0gdTEyWzFdICogcl07XHJcblxyXG4gICAgaWYgKHAwKSB7XHJcbiAgICAgIGNvbnN0IHUwMSA9IHRoaXMuY2FsY3VsYXRlUGVycGVuZGljdWxhclZlY3RvcihwMCwgcDEpO1xyXG4gICAgICBjb25zdCBlID0gW3AxWzBdICsgdTAxWzBdICsgdTEyWzBdLCBwMVsxXSArIHUwMVsxXSArIHUxMlsxXV07XHJcbiAgICAgIGEgPSB0aGlzLmNvbXB1dGVMaW5lSW50ZXJzZWN0aW9uKHAxLCBlLCBhLCBiKTtcclxuICAgICAgZCA9IHRoaXMuY29tcHV0ZUxpbmVJbnRlcnNlY3Rpb24ocDEsIGUsIGQsIGMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwMykge1xyXG4gICAgICBjb25zdCB1MjMgPSB0aGlzLmNhbGN1bGF0ZVBlcnBlbmRpY3VsYXJWZWN0b3IocDIsIHAzKTtcclxuICAgICAgY29uc3QgZSA9IFtwMlswXSArIHUyM1swXSArIHUxMlswXSwgcDJbMV0gKyB1MjNbMV0gKyB1MTJbMV1dO1xyXG4gICAgICBiID0gdGhpcy5jb21wdXRlTGluZUludGVyc2VjdGlvbihwMiwgZSwgYSwgYik7XHJcbiAgICAgIGMgPSB0aGlzLmNvbXB1dGVMaW5lSW50ZXJzZWN0aW9uKHAyLCBlLCBkLCBjKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJ00nICsgYSArICdMJyArIGIgKyAnICcgKyBjICsgJyAnICsgZCArICdaJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZUxpbmVJbnRlcnNlY3Rpb24oYTogbnVtYmVyW10sIGI6IG51bWJlcltdLCBjOiBudW1iZXJbXSwgZDogbnVtYmVyW10pOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCB4MSA9IGNbMF07XHJcbiAgICBjb25zdCB4MyA9IGFbMF07XHJcbiAgICBjb25zdCB4MjEgPSBkWzBdIC0geDE7XHJcbiAgICBjb25zdCB4NDMgPSBiWzBdIC0geDM7XHJcbiAgICBjb25zdCB5MSA9IGNbMV07XHJcbiAgICBjb25zdCB5MyA9IGFbMV07XHJcbiAgICBjb25zdCB5MjEgPSBkWzFdIC0geTE7XHJcbiAgICBjb25zdCB5NDMgPSBiWzFdIC0geTM7XHJcbiAgICBjb25zdCB1YSA9ICh4NDMgKiAoeTEgLSB5MykgLSB5NDMgKiAoeDEgLSB4MykpIC8gKHk0MyAqIHgyMSAtIHg0MyAqIHkyMSk7XHJcbiAgICByZXR1cm4gW3gxICsgdWEgKiB4MjEsIHkxICsgdWEgKiB5MjFdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVQZXJwZW5kaWN1bGFyVmVjdG9yKHAwOiBudW1iZXJbXSwgcDE6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgdTAxeCA9IHAwWzFdIC0gcDFbMV07XHJcbiAgICBjb25zdCB1MDF5ID0gcDFbMF0gLSBwMFswXTtcclxuICAgIGNvbnN0IHUwMWQgPSBNYXRoLnNxcnQodTAxeCAqIHUwMXggKyB1MDF5ICogdTAxeSk7XHJcbiAgICByZXR1cm4gW3UwMXggLyB1MDFkLCB1MDF5IC8gdTAxZF07XHJcbiAgfVxyXG59XHJcbiIsIjxpbWcgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBjb25maWcuaGFzTm90aWZpY2F0aW9uID8gMSA6IDAgfVwiIHNyYz1cImFzc2V0cy9pY29ucy9ub3RpZmljYXRpb24tcG9wLnN2Z1wiIGNsYXNzPVwibm90aWZpY2F0aW9uLWljb25cIiBhbHQ9XCJtZW51IGJ0biBub3RpZmljYXRpb24gaWNvblwiIC8+XHJcblxyXG48ZGl2IGNsYXNzPVwiY2lyY2xlXCIgW25nQ2xhc3NdPVwieyAnY2lyY2xlLWltZyc6IGNvbmZpZy5pbWFnZVVybCwgJ2NpcmNsZS10ZXh0JzogIWNvbmZpZy5pbWFnZVVybCB9XCI+XHJcbiAgQGlmICghY29uZmlnLmltYWdlVXJsKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb250YWluZXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwZXJjZW50IGYtdy00MDAgZi14bCBoLTE2MFwiPnt7IGNvbmZpZy5wcmVmaXggKyBjb25maWcudmFsdWUgKyBjb25maWcuc3VmZml4IH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS10ZXh0IGYtdy00MDAgZi14cyBoLTEwMFwiPnt7IHR5cGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICB9IEBlbHNlIHtcclxuICAgIDxpbWcgW3NyY109XCJjb25maWcuaW1hZ2VVcmxcIiBbbmdTdHlsZV09XCJ7ICdvYmplY3QtcG9zaXRpb24nOiBjb25maWcuaW1nT2JqZWN0UG9zaXRpb24gfVwiIC8+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbkBpZiAodmFyaWFibGUgPT09IGNpcmNsZVZhcmlhYmxlLlBhcnRpYWwpIHtcclxuICA8ZGl2XHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgIHB1bHNlOiBjb25maWcuaW5uZXI/LnNob3dJbGx1bWluYXRpb24sXHJcbiAgICAgICdpbGx1bWluYXRlZC1leHRlcm5hbCc6IHNob3dFeHRlcm5hbFBhcnRpYWxDaXJjbGVQcm9ncmVzcyxcclxuICAgICAgJ2lsbHVtaW5hdGVkLWludGVybmFsJzogIXNob3dFeHRlcm5hbFBhcnRpYWxDaXJjbGVQcm9ncmVzcyxcclxuICAgIH1cIlxyXG4gID48L2Rpdj5cclxuICA8c3ZnIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzX19pbWFnZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwIDkwIDkwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+XHJcbiAgICBAaWYgKGNvbmZpZy5zaG93RXh0ZXJuYWxQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3MpIHtcclxuICAgICAgPGVsbGlwc2UgbWFzaz1cInVybCgjY3V0LWNpcmNsZSlcIiBjeD1cIjQ0LjMzNFwiIGN5PVwiNDQuMzAyNFwiIHJ4PVwiMzMuOTY5M1wiIHJ5PVwiMzMuNjM2M1wiIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfMjM5XzM2NzMpXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEgMC41KVwiIC8+XHJcbiAgICAgIDxlbGxpcHNlIG1hc2s9XCJ1cmwoI2N1dC1jaXJjbGUpXCIgY3g9XCI0NC4zMzRcIiBjeT1cIjQ0LjMwMjhcIiByeD1cIjI3LjI0MjdcIiByeT1cIjI2Ljk3NTdcIiBmaWxsPVwiIzI3MjQyQ1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyIDApXCIgLz5cclxuICAgICAgPGVsbGlwc2UgbWFzaz1cInVybCgjY3V0LWNpcmNsZSlcIiBjeD1cIjQ0LjMzNFwiIGN5PVwiNDQuMzAyOFwiIHJ4PVwiMjcuMjQyN1wiIHJ5PVwiMjYuOTc1N1wiIGZpbGw9XCJ1cmwoI3BhdHRlcm4wXzIzOV8zNjczKVwiIC8+XHJcbiAgICB9XHJcbiAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4yNSlcIj5cclxuICAgICAgPCEtLSByZXNwb25zZSB0aW1lIGluZGljYXRvcnMgLS0+XHJcbiAgICAgIEBpZiAoY29uZmlnLnNob3dFeHRlcm5hbFBhcnRpYWxDaXJjbGVQcm9ncmVzcykge1xyXG4gICAgICAgIEBpZiAoY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgfHwgY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlVucmVzcG9uc2l2ZSkge1xyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICByPVwiNDVcIlxyXG4gICAgICAgICAgICBjeD1cIjQ1XCJcclxuICAgICAgICAgICAgY3k9XCI0NVwiXHJcbiAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgPyAndXJsKCNncmFkSW5uZXJQaW5rKScgOiAndXJsKCNncmFkSW5uZXJUZWFsKSdcIlxyXG4gICAgICAgICAgICBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZUJlaGluZFBhdGhJZCArICcpJ1wiXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInNjYWxlKDAuNjU5IDAuNjU5KSB0cmFuc2xhdGUoKzIyIDIxLjUpIHJvdGF0ZSgyMjUsIDQ1LCA0NSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGNpcmNsZSByPVwiNDVcIiBjeD1cIjQ1XCIgY3k9XCI0NVwiIGZpbGw9XCJ1cmwoI2dyYWQyKVwiIFthdHRyLm1hc2tdPVwiJ3VybCgjJyArIGlubmVyQ2lyY2xlUGF0aElkICsgJyknXCIgdHJhbnNmb3JtPVwic2NhbGUoMC42NTkgMC42NTkpIHRyYW5zbGF0ZSgrMjIgMjEuNSkgcm90YXRlKDIyNSwgNDUsIDQ1KVwiIC8+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBpZiAoY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgfHwgY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlVucmVzcG9uc2l2ZSkge1xyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICByPVwiNDVcIlxyXG4gICAgICAgICAgICBjeD1cIjQ1XCJcclxuICAgICAgICAgICAgY3k9XCI0NVwiXHJcbiAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgPyAndXJsKCNncmFkSW5uZXJQaW5rKScgOiAndXJsKCNncmFkSW5uZXJUZWFsKSdcIlxyXG4gICAgICAgICAgICBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZUJlaGluZFBhdGhJZCArICcpJ1wiXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInNjYWxlKCswLjcwIDAuNzApIHRyYW5zbGF0ZSgrMjAuMCAxNi41KSByb3RhdGUoMjI1LCA0NSwgNDUpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxjaXJjbGUgcj1cIjQ1XCIgY3g9XCI0NVwiIGN5PVwiNDVcIiBmaWxsPVwidXJsKCNncmFkMilcIiBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZVBhdGhJZCArICcpJ1wiIHRyYW5zZm9ybT1cInNjYWxlKCswLjcwIDAuNzApIHRyYW5zbGF0ZSgrMjAuMCAxNi41KSByb3RhdGUoMjI1LCA0NSwgNDUpXCIgLz5cclxuICAgICAgfVxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgICA8bWFzayBjbGFzcz1cImNpcmNsZS1wcm9ncmVzc19fbWFza1wiIFthdHRyLmlkXT1cImlubmVyQ2lyY2xlUGF0aElkXCI+XHJcbiAgICAgICAgICA8Zz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAjcHJvZ3Jlc3NQYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0gNDUgMCBBIDQ1IDQ1IDAgMSAxIDQ0Ljk5OTkgMFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjVcIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICdzdHJva2UtZGFzaGFycmF5JzogcHJvZ3Jlc3NQYXRoLmdldFRvdGFsTGVuZ3RoKCksXHJcbiAgICAgICAgICAgICAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiBwcm9ncmVzc1BhdGguZ2V0VG90YWxMZW5ndGgoKSAtIChjb25maWcuaW5uZXI/LnZhbHVlICogcHJvZ3Jlc3NQYXRoLmdldFRvdGFsTGVuZ3RoKCkpIC8gY29uZmlnLmlubmVyPy5tYXgsXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgIDxtYXNrIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzX19tYXNrXCIgW2F0dHIuaWRdPVwiaW5uZXJDaXJjbGVCZWhpbmRQYXRoSWRcIj5cclxuICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTSA0NSAwIEEgNDUgNDUgMCAxIDEgNDQuOTk5OSAwXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNVwiIC8+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD1cImdyYWQyXCI+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnRlcnRpYXJ5XCIgLz5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjgwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnRlcnRpYXJ5XCIgLz5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjkxJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnByaW1hcnlcIiAvPlxyXG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiOTUlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcuaW5uZXI/LmNvbG9ycz8uc2Vjb25kYXJ5XCIgLz5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjEwMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5pbm5lcj8uY29sb3JzPy50ZXJ0aWFyeVwiIC8+XHJcbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cclxuXHJcbiAgICAgICAgPHJhZGlhbEdyYWRpZW50IGlkPVwiZ3JhZElubmVyUGlua1wiPlxyXG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzPy50ZXJ0aWFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI4MCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzPy50ZXJ0aWFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI5MSVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzPy5wcmltYXJ5XCIgLz5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjk1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnM/LnNlY29uZGFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzUGlua0NvbG9ycz8udGVydGlhcnlcIiAvPlxyXG4gICAgICAgIDwvcmFkaWFsR3JhZGllbnQ+XHJcblxyXG4gICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD1cImdyYWRJbm5lclRlYWxcIj5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzVGVhbENvbG9ycz8udGVydGlhcnlcIiAvPlxyXG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiODAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzVGVhbENvbG9ycz8udGVydGlhcnlcIiAvPlxyXG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiOTElXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzVGVhbENvbG9ycz8ucHJpbWFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI5NSVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NUZWFsQ29sb3JzPy5zZWNvbmRhcnlcIiAvPlxyXG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnM/LnRlcnRpYXJ5XCIgLz5cclxuICAgICAgICA8L3JhZGlhbEdyYWRpZW50PlxyXG4gICAgICA8L2RlZnM+XHJcbiAgICA8L2c+XHJcbiAgICBAaWYgKGNvbmZpZy5zaG93VmFsdWVQcm9wb3J0aW9uTGFiZWwpIHtcclxuICAgICAgPHRleHRcclxuICAgICAgICB4PVwiMjVcIlxyXG4gICAgICAgIHk9XCI3MFwiXHJcbiAgICAgICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxyXG4gICAgICAgIGRvbWluYW50LWJhc2VsaW5lPVwibWlkZGxlXCJcclxuICAgICAgICBmb250LXNpemU9XCIxMlwiXHJcbiAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICBzdHJva2U9XCJibGFja1wiXHJcbiAgICAgICAgc3Ryb2tlLXdpZHRoPVwiM1wiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgIHBhaW50LW9yZGVyPVwic3Ryb2tlIGZpbGxcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgKDI0ICogY29uZmlnLmlubmVyLnZhbHVlKSAvIGNvbmZpZy5pbm5lci5tYXggfCBudW1iZXI6ICcxLjAtMCcgfX1cclxuICAgICAgPC90ZXh0PlxyXG4gICAgfVxyXG4gICAgPGRlZnM+XHJcbiAgICAgIDxtYXNrIGlkPVwiY3V0LWNpcmNsZVwiPlxyXG4gICAgICAgIDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjkwXCIgaGVpZ2h0PVwiOTBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxjaXJjbGUgcj1cIjI3LjVcIiBjeD1cIjQzLjVcIiBjeT1cIjQzLjVcIiBmaWxsPVwiYmxhY2tcIj48L2NpcmNsZT5cclxuICAgICAgPC9tYXNrPlxyXG4gICAgICA8cGF0dGVybiBpZD1cInBhdHRlcm4wXzIzOV8zNjczXCIgcGF0dGVybkNvbnRlbnRVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiPlxyXG4gICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpbWFnZTBfMjM5XzM2NzNcIiB0cmFuc2Zvcm09XCJzY2FsZSgxKVwiIC8+XHJcbiAgICAgIDwvcGF0dGVybj5cclxuICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZl8yMzlfMzY3M1wiIHg9XCIwLjUxMDYwMlwiIHk9XCIwLjE0NTkwOVwiIHdpZHRoPVwiODcuNjQ2OFwiIGhlaWdodD1cIjc0LjM3NlwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjQuOTI3MDVcIiByZXN1bHQ9XCJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzIzOV8zNjczXCIgLz5cclxuICAgICAgPC9maWx0ZXI+XHJcbiAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIxX2ZfMjM5XzM2NzNcIiB4PVwiMTAuNzc5XCIgeT1cIjExLjEyNzhcIiB3aWR0aD1cIjY1LjQ4MzFcIiBoZWlnaHQ9XCI2NS40ODMzXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMi4xMjMwOVwiIHJlc3VsdD1cImVmZmVjdDFfZm9yZWdyb3VuZEJsdXJfMjM5XzM2NzNcIiAvPlxyXG4gICAgICA8L2ZpbHRlcj5cclxuICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjJfZF8yMzlfMzY3M1wiIHg9XCI5Ljg4XCIgeT1cIjE2LjA0NzRcIiB3aWR0aD1cIjY4Ljg4NzNcIiBoZWlnaHQ9XCI2OC44ODc0XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgPGZlT2Zmc2V0IGR5PVwiNi42MzEwOFwiIC8+XHJcbiAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjMuMzE1NTRcIiAvPlxyXG4gICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiIC8+XHJcbiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMFwiIC8+XHJcbiAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yMzlfMzY3M1wiIC8+XHJcbiAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yMzlfMzY3M1wiIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgPC9maWx0ZXI+XHJcbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50MF9saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjcxLjQyMjRcIiB5MT1cIjEzLjc3NDZcIiB4Mj1cIjU2Ljg1ODlcIiB5Mj1cIjg4LjE5MzJcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjU4MTgyMVwiIHN0b3AtY29sb3I9XCIjMjcyNDJDXCIgLz5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwQzBCMEVcIiAvPlxyXG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDFfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3Ny4wNjgyXCIgeTE9XCI1Ljk2OTc0XCIgeDI9XCI1LjIxMjg4XCIgeTI9XCIxMS41NDU2XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8ucHJpbWFyeVwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnNlY29uZGFyeVwiIC8+XHJcbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50Ml9saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjc3LjA2OFwiIHkxPVwiNS45Njk3NFwiIHgyPVwiNS4yMTI3XCIgeTI9XCIxMS41NDU2XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8ucHJpbWFyeVwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnNlY29uZGFyeVwiIC8+XHJcbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50M19saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjc3LjA2ODJcIiB5MT1cIjUuOTY5NzRcIiB4Mj1cIjUuMjEyODhcIiB5Mj1cIjExLjU0NTZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICA8c3RvcCBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5wcmltYXJ5XCIgLz5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uc2Vjb25kYXJ5XCIgLz5cclxuICAgICAgPC9saW5lYXJHcmFkaWVudD5cclxuICAgICAgPHJhZGlhbEdyYWRpZW50XHJcbiAgICAgICAgaWQ9XCJwYWludDRfcmFkaWFsXzIzOV8zNjczXCJcclxuICAgICAgICBjeD1cIjBcIlxyXG4gICAgICAgIGN5PVwiMFwiXHJcbiAgICAgICAgcj1cIjFcIlxyXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXHJcbiAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNDQuNjcwNSA0My45Njk0KSByb3RhdGUoLTkwKSBzY2FsZSgzNi4zMDA2IDM3Ljg1MDUpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuNjI5NjU0XCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC44MjI5MTdcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5wcmltYXJ5XCIgLz5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjk4ODk1M1wiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIiAvPlxyXG4gICAgICA8L3JhZGlhbEdyYWRpZW50PlxyXG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDVfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3MC45Nzk4XCIgeTE9XCIxMS45OTMyXCIgeDI9XCIxMC43MDM0XCIgeTI9XCIxNi42NzA2XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8ucHJpbWFyeVwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnNlY29uZGFyeVwiIC8+XHJcbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgIDxyYWRpYWxHcmFkaWVudFxyXG4gICAgICAgIGlkPVwicGFpbnQ2X3JhZGlhbF8yMzlfMzY3M1wiXHJcbiAgICAgICAgY3g9XCIwXCJcclxuICAgICAgICBjeT1cIjBcIlxyXG4gICAgICAgIHI9XCIxXCJcclxuICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxyXG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDQzLjgwMjcgNDMuODY5NSkgcm90YXRlKC05MCkgc2NhbGUoMzAuNDUxIDMxLjc1MTIpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuNjI5NjU0XCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC44MjI5MTdcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5wcmltYXJ5XCIgLz5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjk4ODk1M1wiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIiAvPlxyXG4gICAgICA8L3JhZGlhbEdyYWRpZW50PlxyXG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDdfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3MS4xMjQ4XCIgeTE9XCIxMi43NDc2XCIgeDI9XCIxMi4yOTI4XCIgeTI9XCIxNy4zMTI5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XHJcbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcuaW5uZXI/LmNvbG9ycz8udGVydGlhcnlcIiAvPlxyXG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5pbm5lcj8uY29sb3JzPy5zZWNvbmRhcnlcIiAvPlxyXG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICA8cmFkaWFsR3JhZGllbnQgaWQ9XCJwYWludDhfcmFkaWFsXzIzOV8zNjczXCIgY3g9XCIwXCIgY3k9XCIwXCIgcj1cIjFcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0NC41OTkgNDMuODYpIHJvdGF0ZSgtOTApIHNjYWxlKDI5LjcyMTMgMzAuOTkwMylcIj5cclxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjYyOTY1NFwiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIiAvPlxyXG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuODgwMTY4XCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcuaW5uZXI/LmNvbG9ycz8ucHJpbWFyeVwiIC8+XHJcbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC45ODg5NTNcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiBzdG9wLW9wYWNpdHk9XCIwXCIgLz5cclxuICAgICAgPC9yYWRpYWxHcmFkaWVudD5cclxuICAgIDwvZGVmcz5cclxuICA8L3N2Zz5cclxuXHJcbiAgQGlmIChjb25maWcuc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzKSB7XHJcbiAgICA8c3ZnIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzX19zdmdcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgdmlld0JveD1cIjAgMCA5MCA5MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICA8Y2lyY2xlIHI9XCI0NVwiIGN4PVwiNDVcIiBjeT1cIjQ1XCIgZmlsbD1cInVybCgjZ3JhZClcIiBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBwYXRoSWQgKyAnKSdcIiAvPlxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgICA8bWFzayBjbGFzcz1cImNpcmNsZS1wcm9ncmVzc19fbWFza1wiIFthdHRyLmlkXT1cInBhdGhJZFwiPlxyXG4gICAgICAgICAgPGc+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgI3Byb2dyZXNzUGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNIDcuMjU5ODI0NDQyNDU1OTE1NSA2OS41MDg3NTY1NzU2NzYxNCBBIDQ1IDQ1IDAgMSAxIDgyLjc0MDE3NTU1NzU0NDA5IDY5LjUwODc1NjU3NTY3NjE0XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiOC41XCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpLFxyXG4gICAgICAgICAgICAgICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogcHJvZ3Jlc3NQYXRoLmdldFRvdGFsTGVuZ3RoKCkgLSAoY29uZmlnLnZhbHVlICogcHJvZ3Jlc3NQYXRoLmdldFRvdGFsTGVuZ3RoKCkpIC8gY29uZmlnLm1heCxcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICAgIDxjaXJjbGUgcj1cIjM3LjVcIiBjeD1cIjQ1XCIgY3k9XCI0NVwiIGZpbGw9XCJibGFja1wiIC8+XHJcbiAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD1cImdyYWRcIj5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uZ3JhZGllbnRQcmltYXJ5XCIgLz5cclxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjgwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LmdyYWRpZW50UHJpbWFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI5MCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5ncmFkaWVudFNlY29uZGFyeVwiIC8+XHJcbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uZ3JhZGllbnRQcmltYXJ5XCIgLz5cclxuICAgICAgICA8L3JhZGlhbEdyYWRpZW50PlxyXG4gICAgICA8L2RlZnM+XHJcbiAgICA8L3N2Zz5cclxuICB9XHJcbn1cclxuQGlmICh2YXJpYWJsZSA9PT0gY2lyY2xlVmFyaWFibGUuQ29tcGxldGUpIHtcclxuICA8c3ZnXHJcbiAgICBjbGFzcz1cImNpcmNsZS1wcm9ncmVzcy1kM19fbWFpblwiXHJcbiAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgaGVpZ2h0PVwiMTAwJVwiXHJcbiAgICB2aWV3Qm94PVwiLTEwIC0xMCA5MCA5MFwiXHJcbiAgICBmaWxsPVwibm9uZVwiXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcbiAgICBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IGNvbmZpZy52YWx1ZSA9PT0gMCA/ICdub25lJyA6ICdibG9jaycgfVwiXHJcbiAgPlxyXG4gICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMywtMC4zKVwiPlxyXG4gICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2U9XCJ0cmFuc3BhcmVudFwiIGQ9XCJNIDAgNDUgQSA0NSA0NSAwIDAgMSA0NSAwXCIgc3R5bGU9XCJ0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xLjRweCwgLTAuN3B4KVwiPjwvcGF0aD5cclxuICAgIDwvZz5cclxuICA8L3N2Zz5cclxuXHJcbiAgPHN2ZyBjbGFzcz1cImNpcmNsZS1wcm9ncmVzcy1kM19faW1hZ2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgdmlld0JveD1cIjAgMCA5MCA5MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPlxyXG4gICAgPGVsbGlwc2UgbWFzaz1cInVybCgjY3V0LWNpcmNsZSlcIiBjeD1cIjQ0LjMzNFwiIGN5PVwiNDQuMzAyNFwiIHJ4PVwiMzMuOTY5M1wiIHJ5PVwiMzMuNjM2M1wiIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfMjM5XzM2NzMpXCIgLz5cclxuICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjMsLTAuMylcIiBvcGFjaXR5PVwiMVwiPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIG9wYWNpdHk9XCIwLjE1XCJcclxuICAgICAgICBkPVwiTSAwIDQ1IEEgNDUgNDUgMCAwIDEgOTAgNDUgTSA5MCA0NSBBIDQ1IDQ1IDAgMCAxIDAgNDVcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEyXCJcclxuICAgICAgICBzdHJva2U9XCJibGFja1wiXHJcbiAgICAgICAgc3R5bGU9XCJ0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7IHRyYW5zZm9ybTogc2NhbGUoMC42OSkgdHJhbnNsYXRlKC0xLjRweCwgLTAuN3B4KVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2c+XHJcbiAgICA8ZGVmcz5cclxuICAgICAgPG1hc2sgaWQ9XCJjdXQtY2lyY2xlXCI+XHJcbiAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiOTBcIiBoZWlnaHQ9XCI5MFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPGNpcmNsZSByPVwiMjcuNVwiIGN4PVwiNDQuNVwiIGN5PVwiNDRcIiBmaWxsPVwiYmxhY2tcIj48L2NpcmNsZT5cclxuICAgICAgPC9tYXNrPlxyXG4gICAgPC9kZWZzPlxyXG4gIDwvc3ZnPlxyXG5cclxuICA8c3ZnIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzLWQzX19zdmdcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgdmlld0JveD1cIjAgMCA5MCA5MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgPGNpcmNsZVxyXG4gICAgICByPVwiNDVcIlxyXG4gICAgICBjeD1cIjQ1XCJcclxuICAgICAgY3k9XCI0NVwiXHJcbiAgICAgIFthdHRyLm1hc2tdPVwiJ3VybCgjJyArIHBhdGhJZCArICcpJ1wiXHJcbiAgICAgIFtuZ1N0eWxlXT1cInsgZmlsbDogY29uZmlnLnZhbHVlID09PSBjb25maWcubWF4ID8gY29uZmlnLnBhcnRpYWxDb2xvcnM/LmNvbXBsZXRlIDogY29uZmlnLnBhcnRpYWxDb2xvcnM/LmluY29tcGxldGUgfVwiXHJcbiAgICAvPlxyXG4gICAgPGRlZnM+XHJcbiAgICAgIDxtYXNrIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzLWQzX19tYXNrXCIgW2F0dHIuaWRdPVwicGF0aElkXCI+XHJcbiAgICAgICAgPGc+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAjcHJvZ3Jlc3NQYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNIDQ1IDAgQSA0NSA0NSAwIDEgMSA0NC45OTk5IDBcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxMlwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpLFxyXG4gICAgICAgICAgICAgICdzdHJva2UtZGFzaG9mZnNldCc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpIC0gKGNvbmZpZy52YWx1ZSAqIHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpKSAvIGNvbmZpZy5tYXgsXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2c+XHJcbiAgICAgIDwvbWFzaz5cclxuICAgIDwvZGVmcz5cclxuICA8L3N2Zz5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CircleProgressComponent } from './circle-progress.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class CircleProgressModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, declarations: [CircleProgressComponent], imports: [CommonModule], exports: [CircleProgressComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, imports: [CommonModule] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [CircleProgressComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [CircleProgressComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2lyY2xlLXByb2dyZXNzL2NpcmNsZS1wcm9ncmVzcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBT3RFLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQUpoQix1QkFBdUIsYUFDNUIsWUFBWSxhQUNaLHVCQUF1QjtnSEFFdEIsb0JBQW9CLFlBSHJCLFlBQVk7OzRGQUdYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaXJjbGVQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4vY2lyY2xlLXByb2dyZXNzLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0NpcmNsZVByb2dyZXNzQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBleHBvcnRzOiBbQ2lyY2xlUHJvZ3Jlc3NDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUge31cclxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var CircleVariable;
|
|
2
|
+
(function (CircleVariable) {
|
|
3
|
+
CircleVariable["Partial"] = "partial";
|
|
4
|
+
CircleVariable["Complete"] = "complete";
|
|
5
|
+
})(CircleVariable || (CircleVariable = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXZhcmlhYmxlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9lbnVtcy9jaXJjbGUtdmFyaWFibGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENpcmNsZVZhcmlhYmxlIHtcclxuICBQYXJ0aWFsID0gJ3BhcnRpYWwnLFxyXG4gIENvbXBsZXRlID0gJ2NvbXBsZXRlJyxcclxufVxyXG4iXX0=
|
package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9pbnRlcmZhY2VzL2NpcmNsZS1wcm9ncmVzcy1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgfSBmcm9tICcuLi8uLi8vY2xpZW50LWhvbWUvaW50ZXJmYWNlcy9pbm5lci1wYXJ0aWFsLWNpcmNsZS1wcm9ncmVzcy1jb2xvcnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSU5ORVJfQ0lSQ0xFX1NUQVRFIH0gZnJvbSAnLi4vLi4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2VudW1zL2lubmVyLWNpcmNsZS1zdGF0ZS5lbnVtJztcclxuaW1wb3J0IHsgSVBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycyB9IGZyb20gJy4vLi4vLi4vY2xpZW50LWhvbWUvaW50ZXJmYWNlcy9wYXJ0aWFsLWNpcmNsZS1wcm9ncmVzcy1jb2xvcnMuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2lyY2xlUHJvZ3Jlc3NDb25maWcge1xyXG4gIC8qKiBPdXRlciAvIG1haW4gcmluZyAqL1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgbWF4OiBudW1iZXI7XHJcbiAgcGFydGlhbENvbG9ycz86IElQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnM7XHJcbiAgc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIElubmVyIHJpbmcgKi9cclxuICBpbm5lcj86IHtcclxuICAgIHZhbHVlOiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxuICAgIGNvbG9ycz86IElJbm5lclBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycztcclxuICAgIHN0YXRlOiBJTk5FUl9DSVJDTEVfU1RBVEU7XHJcbiAgICBzaG93SWxsdW1pbmF0aW9uPzogYm9vbGVhbjtcclxuICB9O1xyXG5cclxuICAvKiogVmlzdWFscyAqL1xyXG4gIGltYWdlVXJsPzogc3RyaW5nO1xyXG5cclxuICB3aWR0aD86IHN0cmluZztcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcblxyXG4gIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbD86IGJvb2xlYW47XHJcbiAgaW1nT2JqZWN0UG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nIHwgJ3JpZ2h0JyB8ICdsZWZ0JztcclxuICBoYXNOb3RpZmljYXRpb24/OiBib29sZWFuO1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgaGlkZVByb2dyZXNzPzogYm9vbGVhbjtcclxuICB0eXBlPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { ButtonsModule } from '@naniteninja/ionic-lib';
|
|
6
|
+
import { LibChatComponentModule } from '../chat/chat.component.module';
|
|
7
|
+
import { SharedModule } from '../../shared/shared.module';
|
|
8
|
+
import { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';
|
|
9
|
+
import { LibClientMatchOverviewComponent } from '../client-match-overview/client-match-overview.component';
|
|
10
|
+
import { ProgressTickerService } from '../client-match-overview/progress-ticker/progress-ticker.service';
|
|
11
|
+
import { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';
|
|
12
|
+
import { MATCHER_STATUSES } from '../matcher-statuses/lookups/matcher-statuses.lookup';
|
|
13
|
+
import { MatcherStatusesComponent } from '../matcher-statuses/matcher-statuses.component';
|
|
14
|
+
import { SpiderChartComponent } from '../spider-chart/spider-chart.component';
|
|
15
|
+
import { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';
|
|
16
|
+
import { ClientHomeComponent } from './enums/client-home-component.enum';
|
|
17
|
+
import { defaultClientHomeConfig } from './lookup/client-home.config';
|
|
18
|
+
import { ChatMetaPipe } from './pipes/chat-meta.pipe';
|
|
19
|
+
import { GetColorByMatcherPipe } from './pipes/get-color-by-matcher.pipe';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@angular/common";
|
|
22
|
+
export class LibClientHomeComponent {
|
|
23
|
+
constructor(cdr) {
|
|
24
|
+
this.cdr = cdr;
|
|
25
|
+
this.activeIndexChange = new EventEmitter();
|
|
26
|
+
this.addMessage = new EventEmitter();
|
|
27
|
+
this.getMessages = new EventEmitter();
|
|
28
|
+
this.bookEvent = new EventEmitter();
|
|
29
|
+
this.removeSuggestion = new EventEmitter();
|
|
30
|
+
this.handleAppearPopup = new EventEmitter();
|
|
31
|
+
this.alertStatusFields = AlertStatusFields;
|
|
32
|
+
this.components = ClientHomeComponent;
|
|
33
|
+
this.assetPaths = {
|
|
34
|
+
traitVisual: 'assets/trait-visual/force-directed-graph.png',
|
|
35
|
+
};
|
|
36
|
+
this.MATCHER_STATUSES = MATCHER_STATUSES;
|
|
37
|
+
this.defaultNumberOfItems = Array.from({ length: 10 }, () => null);
|
|
38
|
+
this.ticker = inject(ProgressTickerService);
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.config = {
|
|
42
|
+
...defaultClientHomeConfig,
|
|
43
|
+
...this.config,
|
|
44
|
+
};
|
|
45
|
+
this.componentDestroyed$ = new Subject();
|
|
46
|
+
this.config?.clientMatches$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((clientMatches) => {
|
|
47
|
+
this.clientMatches = [];
|
|
48
|
+
this.cdr.detectChanges();
|
|
49
|
+
this.clientMatches = clientMatches;
|
|
50
|
+
this.updateSpiderChart();
|
|
51
|
+
this.cdr.detectChanges();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
ngOnDestroy() {
|
|
55
|
+
this.componentDestroyed$.next();
|
|
56
|
+
this.componentDestroyed$.complete();
|
|
57
|
+
}
|
|
58
|
+
onActiveIndexChange(index) {
|
|
59
|
+
this.config.activeIndex = index;
|
|
60
|
+
this.activeIndexChange.emit(index);
|
|
61
|
+
this.cdr.detectChanges();
|
|
62
|
+
}
|
|
63
|
+
handleClientMatch(match, index) {
|
|
64
|
+
match.isExpanded = !match.isExpanded;
|
|
65
|
+
this.clientMatches[index].isExpanded = match.isExpanded;
|
|
66
|
+
this.updateSpiderChart();
|
|
67
|
+
}
|
|
68
|
+
updateSpiderChart() {
|
|
69
|
+
if (!this.config.default && this.config.spiderConfig && this.components.ClientMatchSpiderChart === this.config.component) {
|
|
70
|
+
this.config.spiderConfig.datasets = this.clientMatches
|
|
71
|
+
.filter((clientMatche) => clientMatche.isExpanded)
|
|
72
|
+
.map((clientMatche, index) => {
|
|
73
|
+
const values = {};
|
|
74
|
+
this.config?.spiderConfig?.attributes?.forEach((attribute) => {
|
|
75
|
+
values[attribute.key] = clientMatche[attribute.key];
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
title: clientMatche.primary?.name || clientMatche?.secondary?.name,
|
|
79
|
+
keys: this.config?.spiderConfig?.attributes.map((attribute) => attribute.key),
|
|
80
|
+
values,
|
|
81
|
+
polygon_color: this.config?.polygonColors?.[index],
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
addMessageEmit(event, prospectId, matchRequest) {
|
|
87
|
+
this.addMessage.emit({ message: event, prospectId, matchRequest });
|
|
88
|
+
}
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientHomeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\r\n @if (components.ClientMatchSpiderChart === config?.component) {\r\n <lib-spider-chart\r\n [datasets]=\"config.spiderConfig?.datasets\"\r\n [config]=\"config?.spiderConfig\"\r\n [polygon_colors]=\"config?.polygonColors\"\r\n [showChartInfo]=\"false\"\r\n ></lib-spider-chart>\r\n } @else if (components.ClientMatchTraitChart === config?.component) {\r\n <div style=\"display: flex; justify-content: center\">\r\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\r\n </div>\r\n }\r\n\r\n <lib-dashboard-swipeable-tabs\r\n [activeIndex]=\"config?.activeIndex\"\r\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\r\n [thumbsSwiperOptions]=\"{\r\n virtual: {\r\n enabled: clientMatches?.length > 5,\r\n addSlidesAfter: 8,\r\n addSlidesBefore: 8,\r\n cache: true,\r\n },\r\n slidesPerView: 'auto',\r\n grabCursor: true,\r\n centeredSlides: false,\r\n freeMode: {\r\n enabled: true,\r\n sticky: true,\r\n },\r\n observer: true,\r\n observeParents: true,\r\n }\"\r\n [mainSwiperOptions]=\"{\r\n virtual: {\r\n enabled: clientMatches?.length > 5,\r\n addSlidesAfter: 2,\r\n addSlidesBefore: 2,\r\n cache: true,\r\n },\r\n centeredSlides: true,\r\n grabCursor: true,\r\n keyboard: { enabled: true, onlyInViewport: false },\r\n effect: 'coverflow',\r\n spaceBetween: 5,\r\n coverflowEffect: {\r\n rotate: 0,\r\n slideShadows: false,\r\n scale: 0.9,\r\n },\r\n observer: true,\r\n observeParents: true,\r\n }\"\r\n [bottomThumbs]=\"config?.bottomThumbs\"\r\n [generalSwiperHeight]=\"'100%'\"\r\n [enableMainSwiper]=\"true\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\r\n >\r\n <ng-container thumb-slides>\r\n @if (config.default || !clientMatches?.length) {\r\n @for (match of defaultNumberOfItems; let i = $index; track match) {\r\n <swiper-slide>\r\n <lib-client-match-overview\r\n [overview]=\"{}\"\r\n [expand]=\"0\"\r\n [class.lib-client-match-overview-expand]=\"true\"\r\n (click)=\"(null)\"\r\n [partialColors]=\"null\"\r\n [default]=\"config.default\"\r\n [showValueProportionLabel]=\"false\"\r\n [hideProgressBar]=\"false\"\r\n ></lib-client-match-overview>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (match of clientMatches; let i = $index; track match._id) {\r\n <swiper-slide>\r\n @if (config?.chatAdsTemplate && i === 0) {\r\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\r\n }\r\n <lib-client-match-overview\r\n [overview]=\"match\"\r\n [expand]=\"config?.activeIndex === i\"\r\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\r\n [partialColors]=\"match | getColorByMatcher: config\"\r\n [loading]=\"config?.loading?.clientMatches\"\r\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\r\n [hideProgressBar]=\"config?.hideProgressBar\"\r\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\r\n ></lib-client-match-overview>\r\n </swiper-slide>\r\n }\r\n }\r\n </ng-container>\r\n <ng-container main-slides>\r\n @switch (config?.component) {\r\n @case (components.ChatScheduler) {\r\n @if (config.default || !(config?.schedulers$ | async)?.length) {\r\n @for (item of defaultNumberOfItems; track $index) {\r\n <swiper-slide class=\"scheduler\">\r\n <div class=\"slide-content without-shadow\">\r\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\r\n </div>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\r\n <swiper-slide class=\"scheduler\">\r\n <div class=\"slide-content without-shadow\">\r\n <lib-scheduler\r\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\r\n [events$]=\"scheduler.events$\"\r\n [loading$]=\"config?.loading$\"\r\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\r\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\r\n ></lib-scheduler>\r\n </div>\r\n </swiper-slide>\r\n }\r\n }\r\n }\r\n @case (components.ChatHandoff) {\r\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\r\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\r\n <swiper-slide class=\"chat\">\r\n <lib-matcher-statuses\r\n [inputValue]=\"config.chatInputValue\"\r\n [messages]=\"chat?.messages || []\"\r\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\r\n (getMessages)=\"getMessages.emit()\"\r\n [maxLength]=\"maxLength\"\r\n [responseTime]=\"chat?.prospectResponseTime || ''\"\r\n [hideStatuses]=\"config.hideStatuses\"\r\n ></lib-matcher-statuses>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\r\n <swiper-slide class=\"chat\">\r\n <div class=\"slide-content\">\r\n <lib-matcher-statuses\r\n [status]=\"clientMatch.prospectData.status\"\r\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\r\n [inputValue]=\"config.chatInputValue\"\r\n [messages]=\"clientMatch.prospectData?.messages || []\"\r\n [includeTime]=\"config?.includeTime\"\r\n [includeGifMessage]=\"config?.includeGifMessage\"\r\n (getMessages)=\"getMessages.emit()\"\r\n [maxLength]=\"config?.maxLength\"\r\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\r\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\r\n [hideStatuses]=\"config.hideStatuses\"\r\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\r\n ></lib-matcher-statuses>\r\n </div>\r\n </swiper-slide>\r\n }\r\n }\r\n }\r\n }\r\n </ng-container>\r\n </lib-dashboard-swipeable-tabs>\r\n\r\n <ng-template #empty>\r\n <lib-section-separator></lib-section-separator>\r\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual{max-width:270px;width:100%;height:240px;aspect-ratio:270/240}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
91
|
+
}
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientHomeComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ selector: 'lib-client-home', standalone: true, imports: [
|
|
95
|
+
CommonModule,
|
|
96
|
+
LibClientMatchOverviewComponent,
|
|
97
|
+
TranslateModule,
|
|
98
|
+
LibDashboardSwipeableTabsComponent,
|
|
99
|
+
LibChatComponentModule,
|
|
100
|
+
LibSchedulerComponent,
|
|
101
|
+
SpiderChartComponent,
|
|
102
|
+
ButtonsModule,
|
|
103
|
+
SharedModule,
|
|
104
|
+
MatcherStatusesComponent,
|
|
105
|
+
GetColorByMatcherPipe,
|
|
106
|
+
ChatMetaPipe,
|
|
107
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\r\n @if (components.ClientMatchSpiderChart === config?.component) {\r\n <lib-spider-chart\r\n [datasets]=\"config.spiderConfig?.datasets\"\r\n [config]=\"config?.spiderConfig\"\r\n [polygon_colors]=\"config?.polygonColors\"\r\n [showChartInfo]=\"false\"\r\n ></lib-spider-chart>\r\n } @else if (components.ClientMatchTraitChart === config?.component) {\r\n <div style=\"display: flex; justify-content: center\">\r\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\r\n </div>\r\n }\r\n\r\n <lib-dashboard-swipeable-tabs\r\n [activeIndex]=\"config?.activeIndex\"\r\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\r\n [thumbsSwiperOptions]=\"{\r\n virtual: {\r\n enabled: clientMatches?.length > 5,\r\n addSlidesAfter: 8,\r\n addSlidesBefore: 8,\r\n cache: true,\r\n },\r\n slidesPerView: 'auto',\r\n grabCursor: true,\r\n centeredSlides: false,\r\n freeMode: {\r\n enabled: true,\r\n sticky: true,\r\n },\r\n observer: true,\r\n observeParents: true,\r\n }\"\r\n [mainSwiperOptions]=\"{\r\n virtual: {\r\n enabled: clientMatches?.length > 5,\r\n addSlidesAfter: 2,\r\n addSlidesBefore: 2,\r\n cache: true,\r\n },\r\n centeredSlides: true,\r\n grabCursor: true,\r\n keyboard: { enabled: true, onlyInViewport: false },\r\n effect: 'coverflow',\r\n spaceBetween: 5,\r\n coverflowEffect: {\r\n rotate: 0,\r\n slideShadows: false,\r\n scale: 0.9,\r\n },\r\n observer: true,\r\n observeParents: true,\r\n }\"\r\n [bottomThumbs]=\"config?.bottomThumbs\"\r\n [generalSwiperHeight]=\"'100%'\"\r\n [enableMainSwiper]=\"true\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\r\n >\r\n <ng-container thumb-slides>\r\n @if (config.default || !clientMatches?.length) {\r\n @for (match of defaultNumberOfItems; let i = $index; track match) {\r\n <swiper-slide>\r\n <lib-client-match-overview\r\n [overview]=\"{}\"\r\n [expand]=\"0\"\r\n [class.lib-client-match-overview-expand]=\"true\"\r\n (click)=\"(null)\"\r\n [partialColors]=\"null\"\r\n [default]=\"config.default\"\r\n [showValueProportionLabel]=\"false\"\r\n [hideProgressBar]=\"false\"\r\n ></lib-client-match-overview>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (match of clientMatches; let i = $index; track match._id) {\r\n <swiper-slide>\r\n @if (config?.chatAdsTemplate && i === 0) {\r\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\r\n }\r\n <lib-client-match-overview\r\n [overview]=\"match\"\r\n [expand]=\"config?.activeIndex === i\"\r\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\r\n [partialColors]=\"match | getColorByMatcher: config\"\r\n [loading]=\"config?.loading?.clientMatches\"\r\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\r\n [hideProgressBar]=\"config?.hideProgressBar\"\r\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\r\n ></lib-client-match-overview>\r\n </swiper-slide>\r\n }\r\n }\r\n </ng-container>\r\n <ng-container main-slides>\r\n @switch (config?.component) {\r\n @case (components.ChatScheduler) {\r\n @if (config.default || !(config?.schedulers$ | async)?.length) {\r\n @for (item of defaultNumberOfItems; track $index) {\r\n <swiper-slide class=\"scheduler\">\r\n <div class=\"slide-content without-shadow\">\r\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\r\n </div>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\r\n <swiper-slide class=\"scheduler\">\r\n <div class=\"slide-content without-shadow\">\r\n <lib-scheduler\r\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\r\n [events$]=\"scheduler.events$\"\r\n [loading$]=\"config?.loading$\"\r\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\r\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\r\n ></lib-scheduler>\r\n </div>\r\n </swiper-slide>\r\n }\r\n }\r\n }\r\n @case (components.ChatHandoff) {\r\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\r\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\r\n <swiper-slide class=\"chat\">\r\n <lib-matcher-statuses\r\n [inputValue]=\"config.chatInputValue\"\r\n [messages]=\"chat?.messages || []\"\r\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\r\n (getMessages)=\"getMessages.emit()\"\r\n [maxLength]=\"maxLength\"\r\n [responseTime]=\"chat?.prospectResponseTime || ''\"\r\n [hideStatuses]=\"config.hideStatuses\"\r\n ></lib-matcher-statuses>\r\n </swiper-slide>\r\n }\r\n } @else {\r\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\r\n <swiper-slide class=\"chat\">\r\n <div class=\"slide-content\">\r\n <lib-matcher-statuses\r\n [status]=\"clientMatch.prospectData.status\"\r\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\r\n [inputValue]=\"config.chatInputValue\"\r\n [messages]=\"clientMatch.prospectData?.messages || []\"\r\n [includeTime]=\"config?.includeTime\"\r\n [includeGifMessage]=\"config?.includeGifMessage\"\r\n (getMessages)=\"getMessages.emit()\"\r\n [maxLength]=\"config?.maxLength\"\r\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\r\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\r\n [hideStatuses]=\"config.hideStatuses\"\r\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\r\n ></lib-matcher-statuses>\r\n </div>\r\n </swiper-slide>\r\n }\r\n }\r\n }\r\n }\r\n </ng-container>\r\n </lib-dashboard-swipeable-tabs>\r\n\r\n <ng-template #empty>\r\n <lib-section-separator></lib-section-separator>\r\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual{max-width:270px;width:100%;height:240px;aspect-ratio:270/240}}\n"] }]
|
|
108
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], activeIndexChange: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}], addMessage: [{
|
|
113
|
+
type: Output
|
|
114
|
+
}], getMessages: [{
|
|
115
|
+
type: Output
|
|
116
|
+
}], bookEvent: [{
|
|
117
|
+
type: Output
|
|
118
|
+
}], removeSuggestion: [{
|
|
119
|
+
type: Output
|
|
120
|
+
}], handleAppearPopup: [{
|
|
121
|
+
type: Output
|
|
122
|
+
}] } });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtaG9tZS9jbGllbnQtaG9tZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NsaWVudC1ob21lL2NsaWVudC1ob21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFx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LENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWUsRUFBRSxVQUFrQixFQUFFLFlBQW9DO1FBQzdGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQTdFVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwwVEM5Q25DLDZ6T0EwS0EsNjJERDdJSSxZQUFZLCtWQUNaLCtCQUErQixtUkFDL0IsZUFBZSwrQkFDZixrQ0FBa0MsOFNBQ2xDLHNCQUFzQiwrQkFDdEIscUJBQXFCLHNQQUNyQixvQkFBb0IsK0hBQ3BCLGFBQWEsOEJBQ2IsWUFBWSwrQkFDWix3QkFBd0IsK09BQ3hCLHFCQUFxQixxREFDckIsWUFBWTs7NEZBTUgsc0JBQXNCO2tCQXJCbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwrQkFBK0I7d0JBQy9CLGVBQWU7d0JBQ2Ysa0NBQWtDO3dCQUNsQyxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLFlBQVk7cUJBQ2IsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07c0ZBR3RDLE1BQU07c0JBQWQsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCdXR0b25zTW9kdWxlIH0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XHJcbmltcG9ydCB7IExpYkNoYXRDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9jaGF0L2NoYXQuY29tcG9uZW50Lm1vZHVsZSc7XHJcbmltcG9ydCB7IElNZXNzYWdlIH0gZnJvbSAnLi4vY2hhdC9pbnRlcmZhY2VzL21lc3NhZ2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJU2NoZWR1bGVyQWN0aW9uIH0gZnJvbSAnLi4vY2FsZW5kYXIvc2NoZWR1bGVyL2ludGVyZmFjZXMvc2NoZWR1bGVyLmFjdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMaWJTY2hlZHVsZXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9zY2hlZHVsZXIvc2NoZWR1bGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpYkNsaWVudE1hdGNoT3ZlcnZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3IH0gZnJvbSAnLi4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2ludGVyZmFjZXMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElEYXNoYm9hcmRNYXRjaFJlcXVlc3QgfSBmcm9tICcuLi9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9kYXNoYm9hcmQtbWF0Y2gtcmVxdWVzdC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1RpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvcHJvZ3Jlc3MtdGlja2VyL3Byb2dyZXNzLXRpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTdGF0dXNGaWVsZHMgfSBmcm9tICcuLi9saWItY2xpZW50LWRhc2hib2FyZC9lbnVtcy9hbGVydC1zdGF0dXMtZmllbGRzLmVudW0nO1xyXG5pbXBvcnQgeyBNQVRDSEVSX1NUQVRVU0VTIH0gZnJvbSAnLi4vbWF0Y2hlci1zdGF0dXNlcy9sb29rdXBzL21hdGNoZXItc3RhdHVzZXMubG9va3VwJztcclxuaW1wb3J0IHsgTWF0Y2hlclN0YXR1c2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vbWF0Y2hlci1zdGF0dXNlcy9tYXRjaGVyLXN0YXR1c2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwaWRlckNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vc3BpZGVyLWNoYXJ0L3NwaWRlci1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaWJEYXNoYm9hcmRTd2lwZWFibGVUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLXN3aXBlYWJsZS10YWJzL2Rhc2hib2FyZC1zd2lwZWFibGUtdGFicy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGllbnRIb21lQ29tcG9uZW50IH0gZnJvbSAnLi9lbnVtcy9jbGllbnQtaG9tZS1jb21wb25lbnQuZW51bSc7XHJcbmltcG9ydCB7IElIb21lRGFzaGJvYXJkSW5wdXRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2hvbWUtZGFzaGJvYXJkLWlucHV0cy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q2xpZW50SG9tZUNvbmZpZyB9IGZyb20gJy4vbG9va3VwL2NsaWVudC1ob21lLmNvbmZpZyc7XHJcbmltcG9ydCB7IENoYXRNZXRhUGlwZSB9IGZyb20gJy4vcGlwZXMvY2hhdC1tZXRhLnBpcGUnO1xyXG5pbXBvcnQgeyBHZXRDb2xvckJ5TWF0Y2hlclBpcGUgfSBmcm9tICcuL3BpcGVzL2dldC1jb2xvci1ieS1tYXRjaGVyLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2xpZW50LWhvbWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTGliQ2xpZW50TWF0Y2hPdmVydmlld0NvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIExpYkRhc2hib2FyZFN3aXBlYWJsZVRhYnNDb21wb25lbnQsXHJcbiAgICBMaWJDaGF0Q29tcG9uZW50TW9kdWxlLFxyXG4gICAgTGliU2NoZWR1bGVyQ29tcG9uZW50LFxyXG4gICAgU3BpZGVyQ2hhcnRDb21wb25lbnQsXHJcbiAgICBCdXR0b25zTW9kdWxlLFxyXG4gICAgU2hhcmVkTW9kdWxlLFxyXG4gICAgTWF0Y2hlclN0YXR1c2VzQ29tcG9uZW50LFxyXG4gICAgR2V0Q29sb3JCeU1hdGNoZXJQaXBlLFxyXG4gICAgQ2hhdE1ldGFQaXBlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NsaWVudC1ob21lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jbGllbnQtaG9tZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliQ2xpZW50SG9tZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjb25maWc6IElIb21lRGFzaGJvYXJkSW5wdXRzO1xyXG5cclxuICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRNZXNzYWdlOiBFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBJTWVzc2FnZTsgcHJvc3BlY3RJZDogc3RyaW5nOyBtYXRjaFJlcXVlc3Q6IElEYXNoYm9hcmRNYXRjaFJlcXVlc3QgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGdldE1lc3NhZ2VzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJvb2tFdmVudDogRXZlbnRFbWl0dGVyPElTY2hlZHVsZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVTdWdnZXN0aW9uOiBFdmVudEVtaXR0ZXI8SVNjaGVkdWxlckFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGhhbmRsZUFwcGVhclBvcHVwOiBFdmVudEVtaXR0ZXI8QWxlcnRTdGF0dXNGaWVsZHM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgYWxlcnRTdGF0dXNGaWVsZHMgPSBBbGVydFN0YXR1c0ZpZWxkcztcclxuICBwdWJsaWMgY29tcG9uZW50cyA9IENsaWVudEhvbWVDb21wb25lbnQ7XHJcbiAgcHVibGljIGNsaWVudE1hdGNoZXM6IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3W107XHJcbiAgcHVibGljIGFjdGl2ZUNoYXRIZWFkSW5kZXg6IG51bWJlcjtcclxuICBwdWJsaWMgYXNzZXRQYXRocyA9IHtcclxuICAgIHRyYWl0VmlzdWFsOiAnYXNzZXRzL3RyYWl0LXZpc3VhbC9mb3JjZS1kaXJlY3RlZC1ncmFwaC5wbmcnLFxyXG4gIH07XHJcbiAgcHJpdmF0ZSBjb21wb25lbnREZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHB1YmxpYyBNQVRDSEVSX1NUQVRVU0VTOiB0eXBlb2YgTUFUQ0hFUl9TVEFUVVNFUyA9IE1BVENIRVJfU1RBVFVTRVM7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHROdW1iZXJPZkl0ZW1zID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTAgfSwgKCkgPT4gbnVsbCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdGlja2VyID0gaW5qZWN0KFByb2dyZXNzVGlja2VyU2VydmljZSk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0ge1xyXG4gICAgICAuLi5kZWZhdWx0Q2xpZW50SG9tZUNvbmZpZyxcclxuICAgICAgLi4udGhpcy5jb25maWcsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuY29uZmlnPy5jbGllbnRNYXRjaGVzJD8ucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChjbGllbnRNYXRjaGVzOiBJTGliQ2xpZW50TWF0Y2hPdmVydmlld1tdKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xpZW50TWF0Y2hlcyA9IFtdO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY2xpZW50TWF0Y2hlcyA9IGNsaWVudE1hdGNoZXM7XHJcbiAgICAgIHRoaXMudXBkYXRlU3BpZGVyQ2hhcnQoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFjdGl2ZUluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnLmFjdGl2ZUluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsaWVudE1hdGNoKG1hdGNoOiBJTGliQ2xpZW50TWF0Y2hPdmVydmlldywgaW5kZXg6IG51bWJlcikge1xyXG4gICAgbWF0Y2guaXNFeHBhbmRlZCA9ICFtYXRjaC5pc0V4cGFuZGVkO1xyXG4gICAgdGhpcy5jbGllbnRNYXRjaGVzW2luZGV4XS5pc0V4cGFuZGVkID0gbWF0Y2guaXNFeHBhbmRlZDtcclxuICAgIHRoaXMudXBkYXRlU3BpZGVyQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVTcGlkZXJDaGFydCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuZGVmYXVsdCAmJiB0aGlzLmNvbmZpZy5zcGlkZXJDb25maWcgJiYgdGhpcy5jb21wb25lbnRzLkNsaWVudE1hdGNoU3BpZGVyQ2hhcnQgPT09IHRoaXMuY29uZmlnLmNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5zcGlkZXJDb25maWcuZGF0YXNldHMgPSB0aGlzLmNsaWVudE1hdGNoZXNcclxuICAgICAgICAuZmlsdGVyKChjbGllbnRNYXRjaGU6IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3KSA9PiBjbGllbnRNYXRjaGUuaXNFeHBhbmRlZClcclxuICAgICAgICAubWFwKChjbGllbnRNYXRjaGU6IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB7fTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnPy5zcGlkZXJDb25maWc/LmF0dHJpYnV0ZXM/LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZXNbYXR0cmlidXRlLmtleV0gPSBjbGllbnRNYXRjaGVbYXR0cmlidXRlLmtleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBjbGllbnRNYXRjaGUucHJpbWFyeT8ubmFtZSB8fCBjbGllbnRNYXRjaGU/LnNlY29uZGFyeT8ubmFtZSxcclxuICAgICAgICAgICAga2V5czogdGhpcy5jb25maWc/LnNwaWRlckNvbmZpZz8uYXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4gYXR0cmlidXRlLmtleSksXHJcbiAgICAgICAgICAgIHZhbHVlcyxcclxuICAgICAgICAgICAgcG9seWdvbl9jb2xvcjogdGhpcy5jb25maWc/LnBvbHlnb25Db2xvcnM/LltpbmRleF0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE1lc3NhZ2VFbWl0KGV2ZW50OiBJTWVzc2FnZSwgcHJvc3BlY3RJZDogc3RyaW5nLCBtYXRjaFJlcXVlc3Q6IElEYXNoYm9hcmRNYXRjaFJlcXVlc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkTWVzc2FnZS5lbWl0KHsgbWVzc2FnZTogZXZlbnQsIHByb3NwZWN0SWQsIG1hdGNoUmVxdWVzdCB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNsaWVudC1ob21lXCI+XHJcbiAgQGlmIChjb21wb25lbnRzLkNsaWVudE1hdGNoU3BpZGVyQ2hhcnQgPT09IGNvbmZpZz8uY29tcG9uZW50KSB7XHJcbiAgICA8bGliLXNwaWRlci1jaGFydFxyXG4gICAgICBbZGF0YXNldHNdPVwiY29uZmlnLnNwaWRlckNvbmZpZz8uZGF0YXNldHNcIlxyXG4gICAgICBbY29uZmlnXT1cImNvbmZpZz8uc3BpZGVyQ29uZmlnXCJcclxuICAgICAgW3BvbHlnb25fY29sb3JzXT1cImNvbmZpZz8ucG9seWdvbkNvbG9yc1wiXHJcbiAgICAgIFtzaG93Q2hhcnRJbmZvXT1cImZhbHNlXCJcclxuICAgID48L2xpYi1zcGlkZXItY2hhcnQ+XHJcbiAgfSBAZWxzZSBpZiAoY29tcG9uZW50cy5DbGllbnRNYXRjaFRyYWl0Q2hhcnQgPT09IGNvbmZpZz8uY29tcG9uZW50KSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXJcIj5cclxuICAgICAgPGltZyBjbGFzcz1cInRyYWl0LXZpc3VhbFwiIFtzcmNdPVwiYXNzZXRQYXRocy50cmFpdFZpc3VhbFwiIC8+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxsaWItZGFzaGJvYXJkLXN3aXBlYWJsZS10YWJzXHJcbiAgICBbYWN0aXZlSW5kZXhdPVwiY29uZmlnPy5hY3RpdmVJbmRleFwiXHJcbiAgICBbc2xpZGVDb250ZW50TWF4SGVpZ2h0XT1cImNvbmZpZz8uc2xpZGVDb250ZW50TWF4SGVpZ2h0XCJcclxuICAgIFt0aHVtYnNTd2lwZXJPcHRpb25zXT1cIntcclxuICAgICAgdmlydHVhbDoge1xyXG4gICAgICAgIGVuYWJsZWQ6IGNsaWVudE1hdGNoZXM/Lmxlbmd0aCA+IDUsXHJcbiAgICAgICAgYWRkU2xpZGVzQWZ0ZXI6IDgsXHJcbiAgICAgICAgYWRkU2xpZGVzQmVmb3JlOiA4LFxyXG4gICAgICAgIGNhY2hlOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICBzbGlkZXNQZXJWaWV3OiAnYXV0bycsXHJcbiAgICAgIGdyYWJDdXJzb3I6IHRydWUsXHJcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiBmYWxzZSxcclxuICAgICAgZnJlZU1vZGU6IHtcclxuICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgIHN0aWNreTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgb2JzZXJ2ZXI6IHRydWUsXHJcbiAgICAgIG9ic2VydmVQYXJlbnRzOiB0cnVlLFxyXG4gICAgfVwiXHJcbiAgICBbbWFpblN3aXBlck9wdGlvbnNdPVwie1xyXG4gICAgICB2aXJ0dWFsOiB7XHJcbiAgICAgICAgZW5hYmxlZDogY2xpZW50TWF0Y2hlcz8ubGVuZ3RoID4gNSxcclxuICAgICAgICBhZGRTbGlkZXNBZnRlcjogMixcclxuICAgICAgICBhZGRTbGlkZXNCZWZvcmU6IDIsXHJcbiAgICAgICAgY2FjaGU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxyXG4gICAgICBncmFiQ3Vyc29yOiB0cnVlLFxyXG4gICAgICBrZXlib2FyZDogeyBlbmFibGVkOiB0cnVlLCBvbmx5SW5WaWV3cG9ydDogZmFsc2UgfSxcclxuICAgICAgZWZmZWN0OiAnY292ZXJmbG93JyxcclxuICAgICAgc3BhY2VCZXR3ZWVuOiA1LFxyXG4gICAgICBjb3ZlcmZsb3dFZmZlY3Q6IHtcclxuICAgICAgICByb3RhdGU6IDAsXHJcbiAgICAgICAgc2xpZGVTaGFkb3dzOiBmYWxzZSxcclxuICAgICAgICBzY2FsZTogMC45LFxyXG4gICAgICB9LFxyXG4gICAgICBvYnNlcnZlcjogdHJ1ZSxcclxuICAgICAgb2JzZXJ2ZVBhcmVudHM6IHRydWUsXHJcbiAgICB9XCJcclxuICAgIFtib3R0b21UaHVtYnNdPVwiY29uZmlnPy5ib3R0b21UaHVtYnNcIlxyXG4gICAgW2dlbmVyYWxTd2lwZXJIZWlnaHRdPVwiJzEwMCUnXCJcclxuICAgIFtlbmFibGVNYWluU3dpcGVyXT1cInRydWVcIlxyXG4gICAgKGFjdGl2ZUluZGV4Q2hhbmdlKT1cIm9uQWN0aXZlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAqbmdJZj1cIihjb25maWc/LmxvYWRpbmckIHwgYXN5bmMpICE9PSB0cnVlIHx8IGNvbmZpZz8uZGVmYXVsdDsgZWxzZSBlbXB0eVwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciB0aHVtYi1zbGlkZXM+XHJcbiAgICAgIEBpZiAoY29uZmlnLmRlZmF1bHQgfHwgIWNsaWVudE1hdGNoZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIEBmb3IgKG1hdGNoIG9mIGRlZmF1bHROdW1iZXJPZkl0ZW1zOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgbWF0Y2gpIHtcclxuICAgICAgICAgIDxzd2lwZXItc2xpZGU+XHJcbiAgICAgICAgICAgIDxsaWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3XHJcbiAgICAgICAgICAgICAgW292ZXJ2aWV3XT1cInt9XCJcclxuICAgICAgICAgICAgICBbZXhwYW5kXT1cIjBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5saWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3LWV4cGFuZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiKG51bGwpXCJcclxuICAgICAgICAgICAgICBbcGFydGlhbENvbG9yc109XCJudWxsXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdF09XCJjb25maWcuZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgW3Nob3dWYWx1ZVByb3BvcnRpb25MYWJlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2hpZGVQcm9ncmVzc0Jhcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID48L2xpYi1jbGllbnQtbWF0Y2gtb3ZlcnZpZXc+XHJcbiAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBmb3IgKG1hdGNoIG9mIGNsaWVudE1hdGNoZXM7IGxldCBpID0gJGluZGV4OyB0cmFjayBtYXRjaC5faWQpIHtcclxuICAgICAgICAgIDxzd2lwZXItc2xpZGU+XHJcbiAgICAgICAgICAgIEBpZiAoY29uZmlnPy5jaGF0QWRzVGVtcGxhdGUgJiYgaSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maWc/LmNoYXRBZHNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxsaWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3XHJcbiAgICAgICAgICAgICAgW292ZXJ2aWV3XT1cIm1hdGNoXCJcclxuICAgICAgICAgICAgICBbZXhwYW5kXT1cImNvbmZpZz8uYWN0aXZlSW5kZXggPT09IGlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5saWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3LWV4cGFuZF09XCJjb25maWc/LmFjdGl2ZUluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICBbcGFydGlhbENvbG9yc109XCJtYXRjaCB8IGdldENvbG9yQnlNYXRjaGVyOiBjb25maWdcIlxyXG4gICAgICAgICAgICAgIFtsb2FkaW5nXT1cImNvbmZpZz8ubG9hZGluZz8uY2xpZW50TWF0Y2hlc1wiXHJcbiAgICAgICAgICAgICAgW3Nob3dWYWx1ZVByb3BvcnRpb25MYWJlbF09XCJjb25maWc/LnNob3dWYWx1ZVByb3BvcnRpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgW2hpZGVQcm9ncmVzc0Jhcl09XCJjb25maWc/LmhpZGVQcm9ncmVzc0JhclwiXHJcbiAgICAgICAgICAgICAgW21ldGFdPVwiY29uZmlnPy5jbGllbnRNYXRjaGVzJCB8IGNoYXRNZXRhOiBtYXRjaC5faWQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgID48L2xpYi1jbGllbnQtbWF0Y2gtb3ZlcnZpZXc+XHJcbiAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYWluLXNsaWRlcz5cclxuICAgICAgQHN3aXRjaCAoY29uZmlnPy5jb21wb25lbnQpIHtcclxuICAgICAgICBAY2FzZSAoY29tcG9uZW50cy5DaGF0U2NoZWR1bGVyKSB7XHJcbiAgICAgICAgICBAaWYgKGNvbmZpZy5kZWZhdWx0IHx8ICEoY29uZmlnPy5zY2hlZHVsZXJzJCB8IGFzeW5jKT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZGVmYXVsdE51bWJlck9mSXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxzd2lwZXItc2xpZGUgY2xhc3M9XCJzY2hlZHVsZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZS1jb250ZW50IHdpdGhvdXQtc2hhZG93XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItc2NoZWR1bGVyIFtsb2FkaW5nJF09XCJjb25maWc/LmxvYWRpbmckXCIgW2RlZmF1bHRdPVwiY29uZmlnLmRlZmF1bHRcIiBbYWRzVGVtcGxhdGVdPVwiY29uZmlnPy5zY2hlZHVsZXJBZHNUZW1wbGF0ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj48L2xpYi1zY2hlZHVsZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBmb3IgKHNjaGVkdWxlciBvZiBjb25maWc/LnNjaGVkdWxlcnMkIHwgYXN5bmM7IGxldCBpID0gJGluZGV4OyB0cmFjayBzY2hlZHVsZXIpIHtcclxuICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGNsYXNzPVwic2NoZWR1bGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGUtY29udGVudCB3aXRob3V0LXNoYWRvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLXNjaGVkdWxlclxyXG4gICAgICAgICAgICAgICAgICAgIFthZHNUZW1wbGF0ZV09XCJjb25maWc/LnNjaGVkdWxlckFkc1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZXZlbnRzJF09XCJzY2hlZHVsZXIuZXZlbnRzJFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmckXT1cImNvbmZpZz8ubG9hZGluZyRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChib29rRXZlbnQpPVwiYm9va0V2ZW50LmVtaXQoJGV2ZW50LCBzY2hlZHVsZXIubWF0Y2hSZXF1ZXN0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZVN1Z2dlc3Rpb24pPVwicmVtb3ZlU3VnZ2VzdGlvbi5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9saWItc2NoZWR1bGVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9zd2lwZXItc2xpZGU+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKGNvbXBvbmVudHMuQ2hhdEhhbmRvZmYpIHtcclxuICAgICAgICAgIEBpZiAoY29uZmlnLmRlZmF1bHQgfHwgIShjb25maWc/LmNsaWVudE1hdGNoZXMkIHwgYXN5bmMpPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgQGZvciAoY2hhdCBvZiBkZWZhdWx0TnVtYmVyT2ZJdGVtczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGNoYXQpIHtcclxuICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGNsYXNzPVwiY2hhdFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1tYXRjaGVyLXN0YXR1c2VzXHJcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFZhbHVlXT1cImNvbmZpZy5jaGF0SW5wdXRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFttZXNzYWdlc109XCJjaGF0Py5tZXNzYWdlcyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgIChzZW5kTWVzc2FnZSk9XCJhZGRNZXNzYWdlRW1pdCgkZXZlbnQsIGNoYXQucHJvc3BlY3RJZCwge30pXCJcclxuICAgICAgICAgICAgICAgICAgKGdldE1lc3NhZ2VzKT1cImdldE1lc3NhZ2VzLmVtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGltZV09XCJjaGF0Py5wcm9zcGVjdFJlc3BvbnNlVGltZSB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtoaWRlU3RhdHVzZXNdPVwiY29uZmlnLmhpZGVTdGF0dXNlc1wiXHJcbiAgICAgICAgICAgICAgICA+PC9saWItbWF0Y2hlci1zdGF0dXNlcz5cclxuICAgICAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBmb3IgKGNsaWVudE1hdGNoIG9mIGNvbmZpZz8uY2xpZW50TWF0Y2hlcyQgfCBhc3luYzsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGNsaWVudE1hdGNoLnByb3NwZWN0RGF0YS5wcm9zcGVjdElkKSB7XHJcbiAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZSBjbGFzcz1cImNoYXRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItbWF0Y2hlci1zdGF0dXNlc1xyXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiY2xpZW50TWF0Y2gucHJvc3BlY3REYXRhLnN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Fkc1RlbXBsYXRlXT1cImNvbmZpZz8uY2hhdFRhYkFkc1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb25maWcuY2hhdElucHV0VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttZXNzYWdlc109XCJjbGllbnRNYXRjaC5wcm9zcGVjdERhdGE/Lm1lc3NhZ2VzIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZVRpbWVdPVwiY29uZmlnPy5pbmNsdWRlVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVHaWZNZXNzYWdlXT1cImNvbmZpZz8uaW5jbHVkZUdpZk1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChnZXRNZXNzYWdlcyk9XCJnZXRNZXNzYWdlcy5lbWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiY29uZmlnPy5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXNwb25zZVRpbWVdPVwiY2xpZW50TWF0Y2gucHJvc3BlY3REYXRhLnByb3NwZWN0UmVzcG9uc2VUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAoc2VuZE1lc3NhZ2UpPVwiYWRkTWVzc2FnZUVtaXQoJGV2ZW50LCBjbGllbnRNYXRjaC5wcm9zcGVjdERhdGEucHJvc3BlY3RJZCwgY2xpZW50TWF0Y2gubWF0Y2hSZXF1ZXN0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVTdGF0dXNlc109XCJjb25maWcuaGlkZVN0YXR1c2VzXCJcclxuICAgICAgICAgICAgICAgICAgICBbcHJvc3BlY3RKb2luRGF0ZV09XCJjbGllbnRNYXRjaC5wcm9zcGVjdERhdGEucHJvc3BlY3RKb2luRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1tYXRjaGVyLXN0YXR1c2VzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9zd2lwZXItc2xpZGU+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbGliLWRhc2hib2FyZC1zd2lwZWFibGUtdGFicz5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNlbXB0eT5cclxuICAgIDxsaWItc2VjdGlvbi1zZXBhcmF0b3I+PC9saWItc2VjdGlvbi1zZXBhcmF0b3I+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVzc3NhZ2UgZi1sZyBmLWdpbHJveS1yZWd1bGFyXCI+e3sgZW1wdHlNZXNzYWdlIH19PC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|