@alauda-fe/common 1.3.0 → 1.3.1
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/api/helpers.d.ts +8 -16
- package/array-form-table/form/component.d.ts +1 -1
- package/business/resource-select/internals/namespace-list/component.d.ts +3 -1
- package/business/resource-select/module.d.ts +2 -1
- package/core/components/tree/toggle.d.ts +3 -3
- package/core/constants/constants.d.ts +4 -1
- package/core/constants/patterns.d.ts +8 -0
- package/core/constants/status-icons.d.ts +2 -1
- package/core/services/encode-url-param.interceptor.d.ts +12 -0
- package/core/services/public-api.d.ts +1 -0
- package/core/services/time.service.d.ts +1 -0
- package/core/types/k8s/crd.d.ts +11 -5
- package/core/types/k8s/raw.d.ts +25 -38
- package/core/types/resource-definitions.d.ts +57 -71
- package/core/utils/common.d.ts +5 -11
- package/core/utils/disabled-state.d.ts +20 -0
- package/core/utils/public-api.d.ts +2 -0
- package/core/utils/workload.d.ts +66 -0
- package/esm2022/abnormal-page/abnormal-page.component.mjs +5 -4
- package/esm2022/abnormal-page/abnormal-page.module.mjs +2 -2
- package/esm2022/api/acp-common-api.service.mjs +3 -3
- package/esm2022/api/api-compatible.interceptor.mjs +1 -1
- package/esm2022/api/api-gateway.interceptor.mjs +3 -3
- package/esm2022/api/api-gateway.service.mjs +2 -2
- package/esm2022/api/cluster-version.service.mjs +3 -3
- package/esm2022/api/crypto.interceptor.mjs +4 -4
- package/esm2022/api/helpers.mjs +1 -1
- package/esm2022/api/k8s-api-resource.service.mjs +4 -4
- package/esm2022/api/k8s-api.service.mjs +6 -6
- package/esm2022/api/page-visibility.service.mjs +2 -2
- package/esm2022/api/platform-ui.service.mjs +2 -2
- package/esm2022/api/product.service.mjs +3 -3
- package/esm2022/api/project-api.service.mjs +3 -3
- package/esm2022/api/resource-update.service.mjs +3 -3
- package/esm2022/array-form-table/base-string-map-form.component.mjs +3 -3
- package/esm2022/array-form-table/form/component.mjs +104 -111
- package/esm2022/array-form-table/form/module.mjs +2 -2
- package/esm2022/array-form-table/key-value-form/component.mjs +53 -58
- package/esm2022/array-form-table/key-value-table/component.mjs +7 -7
- package/esm2022/array-form-table/string-array-form/component.mjs +48 -52
- package/esm2022/async-data/async-data-loader.mjs +1 -1
- package/esm2022/async-data/async-data.module.mjs +2 -2
- package/esm2022/async-data/error-page/component.mjs +21 -22
- package/esm2022/async-data/page-state/component.mjs +16 -15
- package/esm2022/authorization/app-init-url.mjs +1 -1
- package/esm2022/authorization/guard.service.mjs +4 -4
- package/esm2022/authorization/interceptor.service.mjs +4 -4
- package/esm2022/authorization/session-manage.service.mjs +5 -5
- package/esm2022/authorization/state.service.mjs +2 -2
- package/esm2022/authorization/storage-token.mjs +2 -2
- package/esm2022/business/module-info/api.service.mjs +3 -3
- package/esm2022/business/notification-disabled-container/component.mjs +14 -14
- package/esm2022/business/resource-select/base-list.mjs +3 -3
- package/esm2022/business/resource-select/context.service.mjs +3 -3
- package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +22 -20
- package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +22 -20
- package/esm2022/business/resource-select/exports/namespace-page/component.mjs +6 -5
- package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +37 -35
- package/esm2022/business/resource-select/exports/project-page/component.mjs +6 -5
- package/esm2022/business/resource-select/exports/project-selector/component.mjs +23 -22
- package/esm2022/business/resource-select/helpers.directive.mjs +2 -2
- package/esm2022/business/resource-select/internals/cluster-list/component.mjs +7 -6
- package/esm2022/business/resource-select/internals/data-grid/component.mjs +173 -176
- package/esm2022/business/resource-select/internals/icon/component.mjs +3 -2
- package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +5 -4
- package/esm2022/business/resource-select/internals/namespace-list/component.mjs +145 -100
- package/esm2022/business/resource-select/internals/no-data/component.mjs +12 -14
- package/esm2022/business/resource-select/internals/project-list/component.mjs +5 -4
- package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +7 -6
- package/esm2022/business/resource-select/internals/selector-popup/component.mjs +6 -5
- package/esm2022/business/resource-select/internals/selector-popup/ref.mjs +1 -1
- package/esm2022/business/resource-select/internals/selector-popup/service.mjs +3 -3
- package/esm2022/business/resource-select/module.mjs +17 -14
- package/esm2022/business/resource-select/project.service.mjs +3 -3
- package/esm2022/business/resource-select/utils.mjs +1 -1
- package/esm2022/chart/chart.module.mjs +2 -2
- package/esm2022/chart/chart.service.mjs +4 -4
- package/esm2022/chart/common/axis/axis-label.component.mjs +4 -3
- package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +27 -27
- package/esm2022/chart/common/axis/x-axis.component.mjs +6 -5
- package/esm2022/chart/common/axis/x-plot-lines.component.mjs +7 -6
- package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +35 -35
- package/esm2022/chart/common/axis/y-axis.component.mjs +9 -8
- package/esm2022/chart/common/axis/y-plot-lines.component.mjs +6 -5
- package/esm2022/chart/common/chart/chart.component.mjs +41 -43
- package/esm2022/chart/common/legend/legend.component.mjs +62 -65
- package/esm2022/chart/common/range-area/range-area.component.mjs +13 -11
- package/esm2022/chart/common/reference-area/reference-area.component.mjs +4 -3
- package/esm2022/chart/common/series/area-series.component.mjs +15 -14
- package/esm2022/chart/common/series/bar-path.component.mjs +20 -21
- package/esm2022/chart/common/series/bar-series.component.mjs +8 -7
- package/esm2022/chart/common/series/line-series.component.mjs +7 -6
- package/esm2022/chart/common/series/series.component.mjs +3 -3
- package/esm2022/chart/common/tooltip/tooltip.component.mjs +73 -81
- package/esm2022/chart/custom-template/dropdown-legend.mjs +23 -25
- package/esm2022/chart/utils.mjs +1 -1
- package/esm2022/code/code-display-dialog/component.mjs +9 -8
- package/esm2022/code/code-editor-configs.mjs +2 -2
- package/esm2022/code/code.module.mjs +2 -2
- package/esm2022/code/k8s-yaml-display-dialog/component.mjs +9 -8
- package/esm2022/code/resource-yaml-display/component.mjs +21 -22
- package/esm2022/core/abstract/base-form-container.mjs +3 -3
- package/esm2022/core/abstract/base-nested-form-control.mjs +5 -5
- package/esm2022/core/components/tree/module.mjs +2 -2
- package/esm2022/core/components/tree/node/component.mjs +7 -6
- package/esm2022/core/components/tree/outlet.mjs +4 -4
- package/esm2022/core/components/tree/padding.mjs +6 -6
- package/esm2022/core/components/tree/toggle.mjs +9 -9
- package/esm2022/core/components/tree/tree/component.mjs +4 -3
- package/esm2022/core/constants/constants.mjs +4 -1
- package/esm2022/core/constants/patterns.mjs +10 -1
- package/esm2022/core/constants/status-icons.mjs +2 -1
- package/esm2022/core/constants/tokens.mjs +1 -1
- package/esm2022/core/directives/aui-code-editor.directive.mjs +3 -3
- package/esm2022/core/directives/click-outside.directive.mjs +4 -4
- package/esm2022/core/directives/declare.directive.mjs +2 -2
- package/esm2022/core/directives/disabled.directive.mjs +4 -4
- package/esm2022/core/directives/feature-gate.directive.mjs +4 -4
- package/esm2022/core/directives/intercept-deactivate.directive.mjs +4 -4
- package/esm2022/core/directives/last-form-item.directive.mjs +3 -3
- package/esm2022/core/directives/page-header-content.directive.mjs +3 -3
- package/esm2022/core/directives/readonly-field.directive.mjs +8 -7
- package/esm2022/core/directives/resize.directive.mjs +3 -3
- package/esm2022/core/directives/scroll-border-observer.directive.mjs +4 -4
- package/esm2022/core/directives/scroll-to-first-invalid.directive.mjs +5 -5
- package/esm2022/core/guards/feature.guard.mjs +4 -4
- package/esm2022/core/guards/intercept-deactivate.guard.mjs +3 -3
- package/esm2022/core/guards/leave-edit-page.guard.mjs +3 -3
- package/esm2022/core/guards/project-namespace.guard.mjs +5 -5
- package/esm2022/core/module.mjs +2 -2
- package/esm2022/core/pipes/calc.pipe.mjs +2 -2
- package/esm2022/core/pipes/cron-human-readable.pipe.mjs +2 -2
- package/esm2022/core/pipes/crontab-next.pipe.mjs +3 -3
- package/esm2022/core/pipes/duration.pipe.mjs +3 -3
- package/esm2022/core/pipes/field-not-available.pipe.mjs +2 -2
- package/esm2022/core/pipes/img-header.pipe.mjs +2 -2
- package/esm2022/core/pipes/img-theme.pipe.mjs +3 -3
- package/esm2022/core/pipes/k8s-util.pipe.mjs +24 -24
- package/esm2022/core/pipes/k8s-util.pipe.module.mjs +2 -2
- package/esm2022/core/pipes/keyvalue.pipe.mjs +3 -3
- package/esm2022/core/pipes/marked.pipe.mjs +2 -2
- package/esm2022/core/pipes/minimum-format.pipe.mjs +3 -3
- package/esm2022/core/pipes/page-env.pipe.mjs +5 -5
- package/esm2022/core/pipes/parse-json-translate.pipe.mjs +3 -3
- package/esm2022/core/pipes/parse-json.pipe.mjs +2 -2
- package/esm2022/core/pipes/pure.pipe.mjs +2 -2
- package/esm2022/core/pipes/pure.pipe.module.mjs +2 -2
- package/esm2022/core/pipes/safe.pipe.mjs +3 -3
- package/esm2022/core/pipes/sanitize.pipe.mjs +3 -3
- package/esm2022/core/pipes/time.pipe.mjs +9 -9
- package/esm2022/core/pipes/timezone-display.pipe.mjs +2 -2
- package/esm2022/core/services/aui-paginator-intl.service.mjs +3 -3
- package/esm2022/core/services/aui-tooltip-copy-intl.service.mjs +3 -3
- package/esm2022/core/services/context.service.mjs +4 -4
- package/esm2022/core/services/custom-code-editor-intl.service.mjs +3 -3
- package/esm2022/core/services/encode-url-param.interceptor.mjs +32 -0
- package/esm2022/core/services/feature-gate.service.mjs +3 -3
- package/esm2022/core/services/form-row-duplicate/form-row-duplicate.service.mjs +3 -3
- package/esm2022/core/services/intercept-deactivate.service.mjs +3 -3
- package/esm2022/core/services/k8s-util.service.mjs +3 -3
- package/esm2022/core/services/on-resize.service.mjs +5 -5
- package/esm2022/core/services/public-api.mjs +2 -1
- package/esm2022/core/services/silently-navigate.service.mjs +3 -3
- package/esm2022/core/services/time.service.mjs +4 -3
- package/esm2022/core/services/ui-state.service.mjs +2 -2
- package/esm2022/core/services/workspace-helper.service.mjs +2 -2
- package/esm2022/core/services/yaml-util.service.mjs +4 -4
- package/esm2022/core/types/k8s/crd.mjs +1 -1
- package/esm2022/core/types/k8s/raw.mjs +1 -1
- package/esm2022/core/types/resource-definitions.mjs +42 -65
- package/esm2022/core/utils/cache-store.mjs +1 -1
- package/esm2022/core/utils/common.mjs +3 -2
- package/esm2022/core/utils/create-recursive-filter.mjs +1 -1
- package/esm2022/core/utils/cron-util.mjs +1 -1
- package/esm2022/core/utils/decorators.mjs +1 -1
- package/esm2022/core/utils/disabled-state.mjs +47 -0
- package/esm2022/core/utils/format-number.mjs +1 -1
- package/esm2022/core/utils/k8s-util.mjs +1 -1
- package/esm2022/core/utils/observable.mjs +1 -1
- package/esm2022/core/utils/operators.mjs +1 -1
- package/esm2022/core/utils/public-api.mjs +3 -1
- package/esm2022/core/utils/request-pool.mjs +1 -1
- package/esm2022/core/utils/resources.mjs +1 -1
- package/esm2022/core/utils/sort-fn.mjs +1 -1
- package/esm2022/core/utils/tree.mjs +1 -1
- package/esm2022/core/utils/unit.mjs +1 -1
- package/esm2022/core/utils/version.mjs +1 -1
- package/esm2022/core/utils/workload.mjs +183 -0
- package/esm2022/core/utils/workspace.mjs +1 -1
- package/esm2022/core/utils/yaml.mjs +1 -1
- package/esm2022/custom-columns-setting/component.mjs +30 -23
- package/esm2022/disabled-container/disabled-container.component.mjs +4 -3
- package/esm2022/disabled-container/disabled-container.module.mjs +2 -2
- package/esm2022/editable-text/component.mjs +14 -12
- package/esm2022/editable-text/module.mjs +2 -2
- package/esm2022/effect-directive/coerce-number.directive.mjs +4 -4
- package/esm2022/effect-directive/e2e-attribute-binding.directive.mjs +3 -3
- package/esm2022/effect-directive/event.directive.mjs +3 -3
- package/esm2022/effect-directive/min-max.directive.mjs +3 -3
- package/esm2022/effect-directive/module.mjs +2 -2
- package/esm2022/effect-directive/trim.directive.mjs +3 -3
- package/esm2022/effect-directive/validators.directive.mjs +3 -3
- package/esm2022/exec/module.mjs +2 -2
- package/esm2022/exec/placeholder/component.mjs +4 -3
- package/esm2022/exec/service.mjs +3 -3
- package/esm2022/exec/terminal/component.mjs +77 -69
- package/esm2022/exec/terminal-group/component.mjs +42 -44
- package/esm2022/feature-gate-forbidden/component/component.mjs +9 -8
- package/esm2022/feature-gate-forbidden/module.mjs +2 -2
- package/esm2022/form/directives/value-trace.directive.mjs +4 -4
- package/esm2022/form/errors-mapper/base-errors-mapper.mjs +3 -3
- package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +3 -3
- package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +6 -5
- package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +7 -6
- package/esm2022/form/errors-mapper/errors-mapper.module.mjs +2 -2
- package/esm2022/form/labels-editor/component.mjs +36 -36
- package/esm2022/form/taints-editor/component.mjs +42 -42
- package/esm2022/form/upload-file/component.mjs +9 -7
- package/esm2022/form/utils.mjs +1 -1
- package/esm2022/form/validators/async-function-validator.directive.mjs +4 -3
- package/esm2022/form/validators/dns1123-subdomain.mjs +1 -1
- package/esm2022/form/validators/function-validator.directive.mjs +4 -3
- package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +9 -7
- package/esm2022/form/validators/module.mjs +7 -8
- package/esm2022/form/validators/not-be-validator.directive.mjs +4 -3
- package/esm2022/form/validators/one-of-validator.directive.mjs +4 -3
- package/esm2022/form/validators/resource-limit.mjs +1 -1
- package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +30 -28
- package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +3 -3
- package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +6 -7
- package/esm2022/form/validators/utils.mjs +1 -1
- package/esm2022/graph-canvas/components/graph-actions.component.mjs +3 -2
- package/esm2022/graph-canvas/components/graph-canvas.component.mjs +25 -23
- package/esm2022/graph-canvas/components/graph-link.component.mjs +12 -13
- package/esm2022/graph-canvas/components/graph-links.component.mjs +3 -2
- package/esm2022/graph-canvas/components/graph-node.directive.mjs +4 -4
- package/esm2022/graph-canvas/graph-canvas.module.mjs +2 -2
- package/esm2022/graph-canvas/graph-store.service.mjs +2 -2
- package/esm2022/grid-layout/components/grid/component.mjs +5 -4
- package/esm2022/grid-layout/components/grid-items/component.mjs +8 -7
- package/esm2022/grid-layout/directives/drag-handler.directive.mjs +3 -3
- package/esm2022/grid-layout/directives/placeholder.directive.mjs +3 -3
- package/esm2022/grid-layout/directives/remove-handler.directive.mjs +3 -3
- package/esm2022/grid-layout/directives/resize-handler.directive.mjs +3 -3
- package/esm2022/grid-layout/grid-layout.service.mjs +2 -2
- package/esm2022/grid-layout/grid-placeholder.service.mjs +3 -3
- package/esm2022/grid-layout/module.mjs +2 -2
- package/esm2022/grid-layout/utils/grid.utils.mjs +1 -1
- package/esm2022/grid-layout/utils/react-grid-layout.utils.mjs +1 -1
- package/esm2022/grid-layout/utils/scroll.utils.mjs +1 -1
- package/esm2022/help-document/component.mjs +18 -16
- package/esm2022/help-document/directive.mjs +4 -4
- package/esm2022/help-document/module.mjs +2 -2
- package/esm2022/help-document/service.mjs +4 -4
- package/esm2022/iframe-config/config.service.mjs +3 -3
- package/esm2022/k8s-resource-list/footer/component.mjs +53 -51
- package/esm2022/k8s-resource-list/k8s-resource-list.mjs +3 -6
- package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +2 -2
- package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +1 -1
- package/esm2022/k8s-resource-list/utils.mjs +1 -1
- package/esm2022/k8s-shared/constants.mjs +53 -0
- package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +30 -0
- package/esm2022/k8s-shared/k8s-shared-util.service.mjs +3 -3
- package/esm2022/k8s-shared/public-api.mjs +2 -1
- package/esm2022/k8s-shared/update-description-dialog/component.mjs +10 -9
- package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +22 -20
- package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +13 -11
- package/esm2022/lazy-component/lazy-load-component.mjs +25 -26
- package/esm2022/lazy-component/visibility.service.mjs +2 -2
- package/esm2022/license/license-api.mjs +3 -3
- package/esm2022/license/license-error/component.mjs +25 -25
- package/esm2022/license/license-error/module.mjs +2 -2
- package/esm2022/license/license.guard.mjs +4 -4
- package/esm2022/license/license.service.mjs +4 -4
- package/esm2022/list-display/component.mjs +39 -40
- package/esm2022/metric-chart/common-chart.service.mjs +3 -3
- package/esm2022/metric-chart/helpers.mjs +1 -1
- package/esm2022/metric-chart/metric-chart.component.mjs +6 -5
- package/esm2022/metric-chart/metric-chart.module.mjs +2 -2
- package/esm2022/metric-chart/metric-time-pick.mjs +20 -17
- package/esm2022/metric-chart/utils.mjs +1 -1
- package/esm2022/multi-search/action-input/component.mjs +180 -181
- package/esm2022/multi-search/form/component.mjs +26 -22
- package/esm2022/multi-search/multi-search-tags/component.mjs +33 -31
- package/esm2022/mutable/element.mjs +1 -1
- package/esm2022/mutable/mosaic/mosaic.component.mjs +6 -5
- package/esm2022/mutable/mosaic/mosaic.directive.mjs +3 -3
- package/esm2022/mutable/mutable.directive.mjs +4 -4
- package/esm2022/mutable/mutable.module.mjs +2 -2
- package/esm2022/notification/feedback-notification/component.mjs +22 -23
- package/esm2022/notification/notification-util.service.mjs +3 -3
- package/esm2022/notification/resource-error.interceptor.mjs +3 -3
- package/esm2022/overview-banner/overview-banner.component.mjs +3 -2
- package/esm2022/overview-banner/overview-banner.module.mjs +2 -2
- package/esm2022/page-guard/component/component.mjs +70 -78
- package/esm2022/page-guard/component/helper-directives.mjs +5 -5
- package/esm2022/page-guard/module.mjs +2 -2
- package/esm2022/page-scaffold/module.mjs +2 -2
- package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb-slot.directive.mjs +3 -3
- package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +177 -88
- package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.service.mjs +2 -2
- package/esm2022/page-scaffold/navigation/breadcrumb/module.mjs +2 -2
- package/esm2022/page-scaffold/navigation/lottie-icons/animation-data.mjs +1 -3
- package/esm2022/page-scaffold/navigation/lottie-icons/lottie-icon.directive.mjs +3 -3
- package/esm2022/page-scaffold/navigation/lottie-icons/module.mjs +2 -2
- package/esm2022/page-scaffold/navigation/lottie-icons/replace-lottie-colors.mjs +11 -11
- package/esm2022/page-scaffold/navigation/module.mjs +2 -2
- package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +128 -99
- package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +30 -32
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +21 -19
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.module.mjs +4 -4
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +1 -1
- package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +6 -5
- package/esm2022/page-scaffold/page/context.service.mjs +2 -2
- package/esm2022/page-scaffold/page/helper-directives.mjs +10 -10
- package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +11 -11
- package/esm2022/page-scaffold/page/notices/notice.component.mjs +15 -15
- package/esm2022/page-scaffold/page/page.component.mjs +20 -20
- package/esm2022/page-scaffold/page/page.module.mjs +2 -2
- package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +40 -39
- package/esm2022/page-scaffold/page-header/account-menu/module.mjs +2 -2
- package/esm2022/page-scaffold/page-header/common-layout/common-layout.module.mjs +2 -2
- package/esm2022/page-scaffold/page-header/common-layout/context.service.mjs +4 -4
- package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +58 -59
- package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +64 -65
- package/esm2022/page-scaffold/page-header/common-layout/product-select/service.mjs +2 -2
- package/esm2022/page-scaffold/page-header/common-layout/project-select/base-selection.mjs +3 -3
- package/esm2022/page-scaffold/page-header/common-layout/store.service.mjs +3 -3
- package/esm2022/page-scaffold/page-header/component.mjs +24 -25
- package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +15 -14
- package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +27 -27
- package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +22 -21
- package/esm2022/page-scaffold/page-header/header-notify/header-notify.module.mjs +2 -2
- package/esm2022/page-scaffold/page-header/header-notify/notify.service.mjs +5 -5
- package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +59 -62
- package/esm2022/page-scaffold/page-header/help-menu/module.mjs +2 -2
- package/esm2022/page-scaffold/page-header/module.mjs +2 -2
- package/esm2022/permission/helpers.mjs +1 -1
- package/esm2022/permission/k8s-permission.service.mjs +3 -3
- package/esm2022/permission/permission.guard.mjs +3 -3
- package/esm2022/pie-derivative-chart/donut-status/component.mjs +29 -28
- package/esm2022/pie-derivative-chart/indicator-color.directive.mjs +3 -3
- package/esm2022/pie-derivative-chart/numerical-limit.pipe.mjs +3 -3
- package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +2 -2
- package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +54 -59
- package/esm2022/pod-status/component.mjs +167 -0
- package/esm2022/pod-status/public-api.mjs +4 -0
- package/esm2022/pod-status/status.mjs +84 -0
- package/esm2022/pod-status/typings.mjs +19 -0
- package/esm2022/public-api.mjs +3 -1
- package/esm2022/searchable-selector/component.mjs +73 -75
- package/esm2022/searchable-selector/module.mjs +2 -2
- package/esm2022/skeleton/item/component.mjs +4 -3
- package/esm2022/skeleton/module.mjs +2 -2
- package/esm2022/skeleton/nav-skeleton/component.mjs +8 -7
- package/esm2022/table/component.mjs +253 -271
- package/esm2022/table/helper.mjs +1 -1
- package/esm2022/table/helpers.directive.mjs +3 -3
- package/esm2022/table/module.mjs +40 -31
- package/esm2022/table/util.service.mjs +4 -4
- package/esm2022/translate/helpers.mjs +1 -1
- package/esm2022/translate/i18n-config.mjs +3 -8
- package/esm2022/translate/translate.directive.mjs +9 -9
- package/esm2022/translate/translate.module.mjs +2 -2
- package/esm2022/translate/translate.pipe.mjs +3 -3
- package/esm2022/translate/translate.service.mjs +4 -4
- package/esm2022/view-chart/custom-template/dropdown-legend.mjs +24 -26
- package/esm2022/view-chart/legend/legend.component.mjs +66 -70
- package/esm2022/view-chart/view-chart.component.mjs +90 -98
- package/esm2022/view-chart/view-chart.module.mjs +2 -2
- package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +24 -26
- package/esm2022/view-zchart/legend/legend.component.mjs +77 -82
- package/esm2022/view-zchart/units.mjs +1 -1
- package/esm2022/view-zchart/view-zchart.component.mjs +111 -120
- package/esm2022/view-zchart/view-zchart.module.mjs +2 -2
- package/esm2022/widget/card-section/card-section.component.mjs +13 -12
- package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +45 -46
- package/esm2022/widget/current-time/component.mjs +4 -3
- package/esm2022/widget/date-range-picker/component.mjs +42 -40
- package/esm2022/widget/field-set/column/component.mjs +5 -3
- package/esm2022/widget/field-set/group/component.mjs +3 -2
- package/esm2022/widget/field-set/item/component.mjs +8 -7
- package/esm2022/widget/foldable-block/component.mjs +25 -24
- package/esm2022/widget/foldable-item-in-table/component.mjs +41 -42
- package/esm2022/widget/loading-mask/loading-mask.component.mjs +9 -9
- package/esm2022/widget/password-input/component.mjs +72 -71
- package/esm2022/widget/relative-time/component.mjs +4 -3
- package/esm2022/widget/resource-multi-select/component.mjs +20 -19
- package/esm2022/widget/resource-multi-select/util.mjs +1 -1
- package/esm2022/widget/search-panel/component.mjs +3 -2
- package/esm2022/widget/search-panel/helper.directive.mjs +2 -2
- package/esm2022/widget/search-panel/search-item/component.mjs +3 -2
- package/esm2022/widget/select-prefix-label/directive.mjs +4 -4
- package/esm2022/widget/status-icon/status-icon.component.mjs +16 -15
- package/esm2022/widget/tags-label/component.mjs +61 -62
- package/esm2022/widget/terminating-tag/component.mjs +4 -3
- package/esm2022/widget/text-ellipsis/component.mjs +11 -11
- package/esm2022/widget/text-tooltip/directive.mjs +3 -3
- package/esm2022/widget/text-with-url/component.mjs +8 -8
- package/esm2022/widget/widget.module.mjs +2 -2
- package/esm2022/widget/zero-state/zero-state.component.mjs +17 -17
- package/esm2022/window-channel/base-window-channel.mjs +1 -1
- package/esm2022/window-channel/directives/host-link.directive.mjs +2 -2
- package/esm2022/window-channel/host-window-channel.service.mjs +3 -3
- package/esm2022/window-channel/plugin-window-channel.service.mjs +3 -3
- package/esm2022/workload-status-icon/component.mjs +72 -0
- package/esm2022/workload-status-icon/public-api.mjs +2 -0
- package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +68 -71
- package/esm2022/xterm/xterm-terminal/xterm-terminal.directive.mjs +3 -3
- package/esm2022/xterm/xterm.component.mjs +5 -4
- package/exec/terminal/component.d.ts +0 -1
- package/form/validators/async-function-validator.directive.d.ts +1 -1
- package/form/validators/function-validator.directive.d.ts +1 -1
- package/form/validators/maxlength-minlength-validator.directive.d.ts +2 -2
- package/form/validators/module.d.ts +8 -8
- package/form/validators/not-be-validator.directive.d.ts +1 -1
- package/form/validators/one-of-validator.directive.d.ts +1 -1
- package/form/validators/resource-limit.d.ts +1 -1
- package/form/validators/strong-password/strong-password-validator.module.d.ts +2 -2
- package/graph-canvas/components/graph-canvas.component.d.ts +2 -2
- package/k8s-resource-list/footer/component.d.ts +2 -1
- package/k8s-shared/constants.d.ts +7 -0
- package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +9 -0
- package/k8s-shared/public-api.d.ts +1 -0
- package/license/license-api.d.ts +1 -1
- package/license/license-error/component.d.ts +1 -1
- package/metric-chart/helpers.d.ts +1 -1
- package/package.json +2 -1
- package/page-guard/component/component.d.ts +1 -1
- package/page-scaffold/navigation/breadcrumb/breadcrumb.component.d.ts +2 -0
- package/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.d.ts +1 -0
- package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +8 -1
- package/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.d.ts +2 -1
- package/page-scaffold/page-header/header-notify/utils.d.ts +3 -3
- package/pod-status/component.d.ts +27 -0
- package/pod-status/public-api.d.ts +3 -0
- package/pod-status/status.d.ts +4 -0
- package/pod-status/typings.d.ts +16 -0
- package/public-api.d.ts +2 -0
- package/styles/ansi-color.scss +131 -0
- package/styles/global.scss +3 -1
- package/styles/tailwind-preset.scss +1 -1
- package/table/component.d.ts +2 -1
- package/table/module.d.ts +22 -6
- package/widget/zero-state/zero-state.component.d.ts +1 -1
- package/workload-status-icon/component.d.ts +36 -0
- package/workload-status-icon/public-api.d.ts +1 -0
- package/a-chart/a-chart.module.d.ts +0 -16
- package/a-chart/base-chart.d.ts +0 -24
- package/a-chart/chart-status.component.d.ts +0 -15
- package/a-chart/chart.component.d.ts +0 -56
- package/a-chart/components/base-component.d.ts +0 -12
- package/a-chart/components/legend/base-legend.component.d.ts +0 -31
- package/a-chart/components/legend/dropdown-legend.d.ts +0 -17
- package/a-chart/components/legend/legend.component.d.ts +0 -17
- package/a-chart/components/legend/public-api.d.ts +0 -3
- package/a-chart/components/public-api.d.ts +0 -3
- package/a-chart/components/title.component.d.ts +0 -17
- package/a-chart/constant.d.ts +0 -6
- package/a-chart/public-api.d.ts +0 -12
- package/a-chart/types.d.ts +0 -38
- package/a-chart/utils.d.ts +0 -13
- package/a-metric-chart/a-metric-chart.component.d.ts +0 -154
- package/a-metric-chart/a-metric-chart.module.d.ts +0 -16
- package/a-metric-chart/bar-gauge/bar-gauge.component.d.ts +0 -25
- package/a-metric-chart/base-chart.component.d.ts +0 -14
- package/a-metric-chart/metric-chart-refresh.service.d.ts +0 -8
- package/a-metric-chart/public-api.d.ts +0 -14
- package/a-metric-chart/stat-chart/stat-chart.component.d.ts +0 -11
- package/a-metric-chart/table-chart/table-chart.component.d.ts +0 -29
- package/a-metric-chart/types.d.ts +0 -130
- package/a-metric-chart/utils/public-api.d.ts +0 -3
- package/a-metric-chart/utils/range.d.ts +0 -1
- package/a-metric-chart/utils/unit.d.ts +0 -48
- package/a-metric-chart/utils/util.d.ts +0 -45
- package/api/monitor-api.service.d.ts +0 -104
- package/esm2022/a-chart/a-chart.module.mjs +0 -76
- package/esm2022/a-chart/base-chart.mjs +0 -98
- package/esm2022/a-chart/chart-status.component.mjs +0 -195
- package/esm2022/a-chart/chart.component.mjs +0 -307
- package/esm2022/a-chart/components/base-component.mjs +0 -23
- package/esm2022/a-chart/components/legend/base-legend.component.mjs +0 -111
- package/esm2022/a-chart/components/legend/dropdown-legend.mjs +0 -199
- package/esm2022/a-chart/components/legend/legend.component.mjs +0 -102
- package/esm2022/a-chart/components/legend/public-api.mjs +0 -4
- package/esm2022/a-chart/components/public-api.mjs +0 -4
- package/esm2022/a-chart/components/title.component.mjs +0 -99
- package/esm2022/a-chart/constant.mjs +0 -24
- package/esm2022/a-chart/public-api.mjs +0 -13
- package/esm2022/a-chart/types.mjs +0 -7
- package/esm2022/a-chart/utils.mjs +0 -37
- package/esm2022/a-metric-chart/a-metric-chart.component.mjs +0 -937
- package/esm2022/a-metric-chart/a-metric-chart.module.mjs +0 -74
- package/esm2022/a-metric-chart/bar-gauge/bar-gauge.component.mjs +0 -166
- package/esm2022/a-metric-chart/base-chart.component.mjs +0 -30
- package/esm2022/a-metric-chart/metric-chart-refresh.service.mjs +0 -18
- package/esm2022/a-metric-chart/public-api.mjs +0 -15
- package/esm2022/a-metric-chart/stat-chart/stat-chart.component.mjs +0 -122
- package/esm2022/a-metric-chart/table-chart/table-chart.component.mjs +0 -201
- package/esm2022/a-metric-chart/types.mjs +0 -26
- package/esm2022/a-metric-chart/utils/public-api.mjs +0 -4
- package/esm2022/a-metric-chart/utils/range.mjs +0 -35
- package/esm2022/a-metric-chart/utils/unit.mjs +0 -83
- package/esm2022/a-metric-chart/utils/util.mjs +0 -243
- package/esm2022/api/monitor-api.service.mjs +0 -158
- package/esm2022/notification/notification-util.module.mjs +0 -32
- package/esm2022/page-scaffold/navigation/lottie-icons/animations/dashboard.json +0 -1
- package/notification/notification-util.module.d.ts +0 -10
|
@@ -10,76 +10,73 @@ import * as i0 from "@angular/core";
|
|
|
10
10
|
import * as i1 from "../../chart.service";
|
|
11
11
|
const _c0 = ["tooltip"];
|
|
12
12
|
const _c1 = ["aclTooltip", ""];
|
|
13
|
+
const _c2 = a0 => ({ context: a0 });
|
|
14
|
+
const _c3 = () => ({});
|
|
13
15
|
function ChartTooltipComponent__svg_g_0__svg_circle_1_Template(rf, ctx) { if (rf & 1) {
|
|
14
16
|
i0.ɵɵnamespaceSVG();
|
|
15
|
-
i0.ɵɵelement(0, "circle",
|
|
17
|
+
i0.ɵɵelement(0, "circle", 8);
|
|
16
18
|
i0.ɵɵpipe(1, "pure");
|
|
17
19
|
} if (rf & 2) {
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
i0.ɵɵattribute("visibility",
|
|
20
|
+
const item_r1 = ctx.$implicit;
|
|
21
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
22
|
+
i0.ɵɵattribute("visibility", ctx_r1.contextService.disabledLegend.has(item_r1.name) ? "hidden" : "")("stroke", item_r1.color)("cx", ctx_r1.anchorPos)("cy", item_r1.y ? i0.ɵɵpipeBind2(1, 4, item_r1.y, ctx_r1.contextService.y) || 0 : 1000);
|
|
21
23
|
} }
|
|
22
24
|
function ChartTooltipComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {
|
|
23
25
|
i0.ɵɵnamespaceSVG();
|
|
24
26
|
i0.ɵɵelementStart(0, "g");
|
|
25
|
-
i0.ɵɵtemplate(1, ChartTooltipComponent__svg_g_0__svg_circle_1_Template, 2, 7, "circle",
|
|
27
|
+
i0.ɵɵtemplate(1, ChartTooltipComponent__svg_g_0__svg_circle_1_Template, 2, 7, "circle", 7);
|
|
26
28
|
i0.ɵɵelementEnd();
|
|
27
29
|
} if (rf & 2) {
|
|
28
|
-
const
|
|
29
|
-
i0.ɵɵattribute("opacity",
|
|
30
|
-
i0.ɵɵadvance(
|
|
31
|
-
i0.ɵɵproperty("ngForOf",
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵattribute("opacity", ctx_r1.anchorOpacity);
|
|
32
|
+
i0.ɵɵadvance();
|
|
33
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.tooltipContext == null ? null : ctx_r1.tooltipContext.values);
|
|
32
34
|
} }
|
|
33
|
-
const _c2 = function (a0) { return { context: a0 }; };
|
|
34
35
|
function ChartTooltipComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
i0.ɵɵ
|
|
36
|
-
i0.ɵɵ
|
|
37
|
-
i0.ɵɵelementStart(0, "div", 8)(1, "div", 9);
|
|
38
|
-
i0.ɵɵelementContainer(2, 10);
|
|
36
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
|
|
37
|
+
i0.ɵɵelementContainer(2, 11);
|
|
39
38
|
i0.ɵɵelementEnd();
|
|
40
|
-
i0.ɵɵelementStart(3, "div",
|
|
41
|
-
i0.ɵɵelementContainer(4,
|
|
39
|
+
i0.ɵɵelementStart(3, "div", 12);
|
|
40
|
+
i0.ɵɵelementContainer(4, 11);
|
|
42
41
|
i0.ɵɵpipe(5, "pure");
|
|
43
42
|
i0.ɵɵelementEnd()();
|
|
44
|
-
i0.ɵɵelement(6, "div",
|
|
43
|
+
i0.ɵɵelement(6, "div", 13);
|
|
45
44
|
} if (rf & 2) {
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
45
|
+
const context_r3 = ctx.context;
|
|
46
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
47
|
+
const defaultTitleTemplate_r4 = i0.ɵɵreference(6);
|
|
48
|
+
const defaultPointTemplate_r5 = i0.ɵɵreference(8);
|
|
50
49
|
i0.ɵɵadvance(2);
|
|
51
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
50
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.titleTemplate || defaultTitleTemplate_r4)("ngTemplateOutletContext", i0.ɵɵpureFunction1(7, _c2, context_r3));
|
|
52
51
|
i0.ɵɵadvance(2);
|
|
53
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
52
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.pointTemplate || defaultPointTemplate_r5)("ngTemplateOutletContext", i0.ɵɵpipeBind2(5, 4, context_r3, ctx_r1.mergePointContext));
|
|
54
53
|
} }
|
|
55
54
|
function ChartTooltipComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
i0.ɵɵnamespaceSVG();
|
|
57
55
|
i0.ɵɵtext(0);
|
|
58
56
|
i0.ɵɵpipe(1, "translate");
|
|
59
57
|
i0.ɵɵpipe(2, "pure");
|
|
60
58
|
} if (rf & 2) {
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
59
|
+
const context_r6 = ctx.context;
|
|
60
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
61
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.titleTranslation ? i0.ɵɵpipeBind3(1, 1, context_r6 == null ? null : context_r6.title, null, true) : i0.ɵɵpipeBind3(2, 5, context_r6 == null ? null : context_r6.title, ctx_r1.handleDateFormat, ctx_r1.dateFormat), "\n");
|
|
64
62
|
} }
|
|
65
63
|
function ChartTooltipComponent_ng_template_7_li_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
66
64
|
i0.ɵɵelementContainerStart(0);
|
|
67
|
-
i0.ɵɵelementContainer(1,
|
|
65
|
+
i0.ɵɵelementContainer(1, 11);
|
|
68
66
|
i0.ɵɵelementContainerEnd();
|
|
69
67
|
} if (rf & 2) {
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
i0.ɵɵadvance(
|
|
73
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
68
|
+
const item_r7 = i0.ɵɵnextContext().$implicit;
|
|
69
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
70
|
+
i0.ɵɵadvance();
|
|
71
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.pointNameTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, item_r7));
|
|
74
72
|
} }
|
|
75
|
-
const _c3 = function () { return {}; };
|
|
76
73
|
function ChartTooltipComponent_ng_template_7_li_1_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
77
74
|
i0.ɵɵtext(0);
|
|
78
75
|
i0.ɵɵpipe(1, "translate");
|
|
79
76
|
} if (rf & 2) {
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
77
|
+
const item_r7 = i0.ɵɵnextContext().$implicit;
|
|
78
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
79
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.translation ? i0.ɵɵpipeBind3(1, 1, item_r7.name, i0.ɵɵpureFunction0(5, _c3), true) : item_r7.name, " ");
|
|
83
80
|
} }
|
|
84
81
|
function ChartTooltipComponent_ng_template_7_li_1_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
85
82
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -91,9 +88,9 @@ function ChartTooltipComponent_ng_template_7_li_1_span_9_Template(rf, ctx) { if
|
|
|
91
88
|
i0.ɵɵtext(1);
|
|
92
89
|
i0.ɵɵelementEnd();
|
|
93
90
|
} if (rf & 2) {
|
|
94
|
-
const
|
|
95
|
-
i0.ɵɵadvance(
|
|
96
|
-
i0.ɵɵtextInterpolate(
|
|
91
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵtextInterpolate(ctx_r1.valuePrefix);
|
|
97
94
|
} }
|
|
98
95
|
function ChartTooltipComponent_ng_template_7_li_1_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
99
96
|
i0.ɵɵelementStart(0, "span", 26);
|
|
@@ -101,20 +98,18 @@ function ChartTooltipComponent_ng_template_7_li_1_span_13_Template(rf, ctx) { if
|
|
|
101
98
|
i0.ɵɵpipe(2, "pure");
|
|
102
99
|
i0.ɵɵelementEnd();
|
|
103
100
|
} if (rf & 2) {
|
|
104
|
-
const
|
|
105
|
-
i0.ɵɵadvance(
|
|
106
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1,
|
|
101
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
102
|
+
i0.ɵɵadvance();
|
|
103
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r1.valueSuffix, ctx_r1.tooltipSuffixFormat));
|
|
107
104
|
} }
|
|
108
105
|
function ChartTooltipComponent_ng_template_7_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
-
i0.ɵɵelementStart(0, "li",
|
|
110
|
-
i0.ɵɵelement(2, "span",
|
|
111
|
-
i0.ɵɵelementStart(3, "span",
|
|
112
|
-
i0.ɵɵtemplate(4, ChartTooltipComponent_ng_template_7_li_1_ng_container_4_Template, 2, 4, "ng-container",
|
|
113
|
-
i0.ɵɵtemplate(5, ChartTooltipComponent_ng_template_7_li_1_ng_template_5_Template, 2, 6, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
|
|
106
|
+
i0.ɵɵelementStart(0, "li", 16)(1, "div", 17);
|
|
107
|
+
i0.ɵɵelement(2, "span", 18);
|
|
108
|
+
i0.ɵɵelementStart(3, "span", 19);
|
|
109
|
+
i0.ɵɵtemplate(4, ChartTooltipComponent_ng_template_7_li_1_ng_container_4_Template, 2, 4, "ng-container", 20)(5, ChartTooltipComponent_ng_template_7_li_1_ng_template_5_Template, 2, 6, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
114
110
|
i0.ɵɵelementEnd()();
|
|
115
111
|
i0.ɵɵelementStart(7, "div", 21);
|
|
116
|
-
i0.ɵɵtemplate(8, ChartTooltipComponent_ng_template_7_li_1_ng_container_8_Template, 2, 0, "ng-container",
|
|
117
|
-
i0.ɵɵtemplate(9, ChartTooltipComponent_ng_template_7_li_1_span_9_Template, 2, 1, "span", 22);
|
|
112
|
+
i0.ɵɵtemplate(8, ChartTooltipComponent_ng_template_7_li_1_ng_container_8_Template, 2, 0, "ng-container", 5)(9, ChartTooltipComponent_ng_template_7_li_1_span_9_Template, 2, 1, "span", 22);
|
|
118
113
|
i0.ɵɵelementStart(10, "span", 23);
|
|
119
114
|
i0.ɵɵtext(11);
|
|
120
115
|
i0.ɵɵpipe(12, "pure");
|
|
@@ -122,35 +117,33 @@ function ChartTooltipComponent_ng_template_7_li_1_Template(rf, ctx) { if (rf & 1
|
|
|
122
117
|
i0.ɵɵtemplate(13, ChartTooltipComponent_ng_template_7_li_1_span_13_Template, 3, 4, "span", 24);
|
|
123
118
|
i0.ɵɵelementEnd()();
|
|
124
119
|
} if (rf & 2) {
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
i0.ɵɵclassProp("active",
|
|
120
|
+
const item_r7 = ctx.$implicit;
|
|
121
|
+
const elseTemplate_r8 = i0.ɵɵreference(6);
|
|
122
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
123
|
+
i0.ɵɵclassProp("active", item_r7 == null ? null : item_r7.active);
|
|
129
124
|
i0.ɵɵadvance(2);
|
|
130
|
-
i0.ɵɵstyleProp("background",
|
|
125
|
+
i0.ɵɵstyleProp("background", item_r7.color);
|
|
131
126
|
i0.ɵɵadvance(2);
|
|
132
|
-
i0.ɵɵproperty("ngIf",
|
|
127
|
+
i0.ɵɵproperty("ngIf", ctx_r1.pointNameTemplate)("ngIfElse", elseTemplate_r8);
|
|
133
128
|
i0.ɵɵadvance(4);
|
|
134
|
-
i0.ɵɵproperty("ngIf", !
|
|
135
|
-
i0.ɵɵadvance(
|
|
136
|
-
i0.ɵɵproperty("ngIf",
|
|
129
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.columnLayout);
|
|
130
|
+
i0.ɵɵadvance();
|
|
131
|
+
i0.ɵɵproperty("ngIf", ctx_r1.valuePrefix);
|
|
137
132
|
i0.ɵɵadvance(2);
|
|
138
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 10,
|
|
133
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 10, item_r7, ctx_r1.pointFormat));
|
|
139
134
|
i0.ɵɵadvance(2);
|
|
140
|
-
i0.ɵɵproperty("ngIf",
|
|
135
|
+
i0.ɵɵproperty("ngIf", ctx_r1.valueSuffix);
|
|
141
136
|
} }
|
|
142
137
|
function ChartTooltipComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵ
|
|
144
|
-
i0.ɵɵ
|
|
145
|
-
i0.ɵɵelementStart(0, "ul", 13);
|
|
146
|
-
i0.ɵɵtemplate(1, ChartTooltipComponent_ng_template_7_li_1_Template, 14, 13, "li", 14);
|
|
138
|
+
i0.ɵɵelementStart(0, "ul", 14);
|
|
139
|
+
i0.ɵɵtemplate(1, ChartTooltipComponent_ng_template_7_li_1_Template, 14, 13, "li", 15);
|
|
147
140
|
i0.ɵɵelementEnd();
|
|
148
141
|
} if (rf & 2) {
|
|
149
|
-
const
|
|
150
|
-
const
|
|
151
|
-
i0.ɵɵclassProp("column-layout",
|
|
152
|
-
i0.ɵɵadvance(
|
|
153
|
-
i0.ɵɵproperty("ngForOf",
|
|
142
|
+
const context_r9 = ctx.context;
|
|
143
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
144
|
+
i0.ɵɵclassProp("column-layout", ctx_r1.columnLayout);
|
|
145
|
+
i0.ɵɵadvance();
|
|
146
|
+
i0.ɵɵproperty("ngForOf", context_r9)("ngForTrackBy", ctx_r1.itemTrackBy);
|
|
154
147
|
} }
|
|
155
148
|
export function handleDateFormat(date, format = DATE_TIME_FORMAT) {
|
|
156
149
|
return String(dayjs(date).isValid() ? dayjs(date).format(format) : date);
|
|
@@ -472,25 +465,23 @@ export class ChartTooltipComponent {
|
|
|
472
465
|
} if (rf & 2) {
|
|
473
466
|
let _t;
|
|
474
467
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.auiTooltipRef = _t.first);
|
|
475
|
-
} }, inputs: { dateFormat: "dateFormat", valuePrefix: "valuePrefix", valueSuffix: "valueSuffix", columnLayout: "columnLayout", tooltipTemplate: "tooltipTemplate", pointTemplate: "pointTemplate", pointNameTemplate: "pointNameTemplate", pointTemplateContext: "pointTemplateContext", titleTemplate: "titleTemplate", autoSort: "autoSort", translation: "translation", titleTranslation: "titleTranslation", pointFormat: "pointFormat" }, attrs: _c1, decls: 9, vars: 13, consts: [[
|
|
476
|
-
i0.ɵɵtemplate(0, ChartTooltipComponent__svg_g_0_Template, 2, 2, "g",
|
|
468
|
+
} }, inputs: { dateFormat: "dateFormat", valuePrefix: "valuePrefix", valueSuffix: "valueSuffix", columnLayout: "columnLayout", tooltipTemplate: "tooltipTemplate", pointTemplate: "pointTemplate", pointNameTemplate: "pointNameTemplate", pointTemplateContext: "pointTemplateContext", titleTemplate: "titleTemplate", autoSort: "autoSort", translation: "translation", titleTranslation: "titleTranslation", pointFormat: "pointFormat" }, attrs: _c1, decls: 9, vars: 13, consts: [["tooltip", "auiTooltip"], ["defaultTooltipTemplate", ""], ["defaultTitleTemplate", ""], ["defaultPointTemplate", ""], ["elseTemplate", ""], [4, "ngIf"], ["stroke", "#999", "auiTooltipTrigger", "manual", "auiTooltipClass", "tooltipClass", 3, "auiTooltip", "auiTooltipContext", "auiTooltipDisabled", "auiTooltipPosition"], ["r", "2.5", "stroke-width", "1", "fill", "#fff", 4, "ngFor", "ngForOf"], ["r", "2.5", "stroke-width", "1", "fill", "#fff"], [1, "tooltip-content"], [1, "title"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "context"], [2, "position", "absolute", "pointer-events", "none", "width", "100%", "height", "100%"], [1, "context-list"], ["class", "context-item", 3, "active", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "context-item"], [1, "left"], [1, "item-icon"], [1, "item-name"], [4, "ngIf", "ngIfElse"], [1, "right"], ["class", "item-prefix", 4, "ngIf"], [1, "item-value"], ["class", "item-suffix", 4, "ngIf"], [1, "item-prefix"], [1, "item-suffix"]], template: function ChartTooltipComponent_Template(rf, ctx) { if (rf & 1) {
|
|
469
|
+
i0.ɵɵtemplate(0, ChartTooltipComponent__svg_g_0_Template, 2, 2, "g", 5);
|
|
477
470
|
i0.ɵɵnamespaceSVG();
|
|
478
|
-
i0.ɵɵelement(1, "rect",
|
|
479
|
-
i0.ɵɵtemplate(3, ChartTooltipComponent_ng_template_3_Template, 7, 9, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
480
|
-
i0.ɵɵtemplate(5, ChartTooltipComponent_ng_template_5_Template, 3, 9, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
481
|
-
i0.ɵɵtemplate(7, ChartTooltipComponent_ng_template_7_Template, 2, 4, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
|
|
471
|
+
i0.ɵɵelement(1, "rect", 6, 0);
|
|
472
|
+
i0.ɵɵtemplate(3, ChartTooltipComponent_ng_template_3_Template, 7, 9, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(5, ChartTooltipComponent_ng_template_5_Template, 3, 9, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(7, ChartTooltipComponent_ng_template_7_Template, 2, 4, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
482
473
|
} if (rf & 2) {
|
|
483
|
-
const
|
|
474
|
+
const defaultTooltipTemplate_r10 = i0.ɵɵreference(4);
|
|
484
475
|
i0.ɵɵproperty("ngIf", !ctx.isBand);
|
|
485
|
-
i0.ɵɵadvance(
|
|
486
|
-
i0.ɵɵproperty("auiTooltip", ctx.tooltipTemplate ||
|
|
476
|
+
i0.ɵɵadvance();
|
|
477
|
+
i0.ɵɵproperty("auiTooltip", ctx.tooltipTemplate || defaultTooltipTemplate_r10)("auiTooltipContext", i0.ɵɵpureFunction1(11, _c2, ctx.tooltipContext))("auiTooltipDisabled", ctx.anchorVisibility)("auiTooltipPosition", ctx.typeStandard && ctx.isBand ? "top" : "start");
|
|
487
478
|
i0.ɵɵattribute("x", ctx.anchorPos)("visibility", ctx.anchorVisibility)("y", ctx.anchorY)("width", 0.5)("height", ctx.anchorHeight)("opacity", ctx.anchorOpacity);
|
|
488
479
|
} }, styles: [".tooltipClass{pointer-events:none;max-width:800px!important}.tooltip-content[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-6))}.tooltip-content[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{margin-bottom:8px}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] ul[_ngcontent-%COMP%], .tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]:not(:last-child), .tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(:last-child){margin-bottom:6px}.tooltip-content[_ngcontent-%COMP%] .context-list[_ngcontent-%COMP%]{display:flex;flex-direction:column}.tooltip-content[_ngcontent-%COMP%] .context-list[_ngcontent-%COMP%] .active[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-10))}.tooltip-content[_ngcontent-%COMP%] .context-item[_ngcontent-%COMP%]{display:flex}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] .left[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] .right[_ngcontent-%COMP%]{text-align:right;white-space:nowrap}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] .column-layout[_ngcontent-%COMP%] .right[_ngcontent-%COMP%]{flex:1 1 auto;text-align:right}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] .column-layout[_ngcontent-%COMP%] .left[_ngcontent-%COMP%]{margin-right:8px}.tooltip-content[_ngcontent-%COMP%] .context[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%]{margin-right:4px;width:6px;border-radius:50%;height:6px;background-color:rgb(var(--aui-color-n-10));display:inline-block;font-size:6px}"], changeDetection: 0 }); }
|
|
489
480
|
}
|
|
490
|
-
(
|
|
481
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChartTooltipComponent, [{
|
|
491
482
|
type: Component,
|
|
492
483
|
args: [{ selector: 'g[aclTooltip]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:g\n [attr.opacity]=\"anchorOpacity\"\n *ngIf=\"!isBand\"\n>\n <svg:circle\n [attr.visibility]=\"\n contextService.disabledLegend.has(item.name) ? 'hidden' : ''\n \"\n *ngFor=\"let item of tooltipContext?.values\"\n r=\"2.5\"\n [attr.stroke]=\"item.color\"\n stroke-width=\"1\"\n fill=\"#fff\"\n [attr.cx]=\"anchorPos\"\n [attr.cy]=\"item.y ? (item.y | pure: contextService.y) || 0 : 1000\"\n ></svg:circle>\n</svg:g>\n\n<svg:rect\n stroke=\"#999\"\n [attr.x]=\"anchorPos\"\n [attr.visibility]=\"anchorVisibility\"\n [attr.y]=\"anchorY\"\n [attr.width]=\"0.5\"\n [attr.height]=\"anchorHeight\"\n #tooltip=\"auiTooltip\"\n [attr.opacity]=\"anchorOpacity\"\n [auiTooltip]=\"tooltipTemplate || defaultTooltipTemplate\"\n [auiTooltipContext]=\"{ context: tooltipContext }\"\n [auiTooltipDisabled]=\"anchorVisibility\"\n auiTooltipTrigger=\"manual\"\n [auiTooltipPosition]=\"typeStandard && isBand ? 'top' : 'start'\"\n auiTooltipClass=\"tooltipClass\"\n/>\n\n<ng-template\n #defaultTooltipTemplate\n let-context=\"context\"\n>\n <div class=\"tooltip-content\">\n <div class=\"title\">\n <ng-container\n [ngTemplateOutlet]=\"titleTemplate || defaultTitleTemplate\"\n [ngTemplateOutletContext]=\"{ context: context }\"\n ></ng-container>\n </div>\n <div class=\"context\">\n <ng-container\n [ngTemplateOutlet]=\"pointTemplate || defaultPointTemplate\"\n [ngTemplateOutletContext]=\"context | pure: mergePointContext\"\n ></ng-container>\n </div>\n </div>\n <div\n style=\"position: absolute; pointer-events: none; width: 100%; height: 100%\"\n ></div>\n</ng-template>\n\n<ng-template\n #defaultTitleTemplate\n let-context=\"context\"\n>\n {{\n titleTranslation\n ? (context?.title | translate: null:true)\n : (context?.title | pure: handleDateFormat:dateFormat)\n }}\n</ng-template>\n\n<ng-template\n #defaultPointTemplate\n let-context=\"context\"\n let-source=\"source\"\n>\n <ul\n class=\"context-list\"\n [class.column-layout]=\"columnLayout\"\n >\n <li\n class=\"context-item\"\n *ngFor=\"let item of context; trackBy: itemTrackBy\"\n [class.active]=\"item?.active\"\n >\n <div class=\"left\">\n <span\n class=\"item-icon\"\n [style.background]=\"item.color\"\n ></span>\n <span class=\"item-name\">\n <ng-container *ngIf=\"pointNameTemplate; else elseTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"pointNameTemplate\"\n [ngTemplateOutletContext]=\"{ context: item }\"\n ></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{ translation ? (item.name | translate: {}:true) : item.name }}\n </ng-template>\n </span>\n </div>\n\n <div class=\"right\">\n <ng-container *ngIf=\"!columnLayout\">: </ng-container>\n <span\n class=\"item-prefix\"\n *ngIf=\"valuePrefix\"\n >{{ valuePrefix }}</span\n >\n <span class=\"item-value\">{{ item | pure: pointFormat }}</span>\n <span\n class=\"item-suffix\"\n *ngIf=\"valueSuffix\"\n >{{ valueSuffix | pure: tooltipSuffixFormat }}</span\n >\n </div>\n </li>\n </ul>\n</ng-template>\n", styles: ["::ng-deep .tooltipClass{pointer-events:none;max-width:800px!important}.tooltip-content{color:rgb(var(--aui-color-n-6))}.tooltip-content .title{margin-bottom:8px}.tooltip-content .context ul,.tooltip-content .context li{padding:0;margin:0;list-style:none}.tooltip-content .context ul:not(:last-child),.tooltip-content .context li:not(:last-child){margin-bottom:6px}.tooltip-content .context-list{display:flex;flex-direction:column}.tooltip-content .context-list .active{color:rgb(var(--aui-color-n-10))}.tooltip-content .context-item{display:flex}.tooltip-content .context .left{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tooltip-content .context .right{text-align:right;white-space:nowrap}.tooltip-content .context .column-layout .right{flex:1 1 auto;text-align:right}.tooltip-content .context .column-layout .left{margin-right:8px}.tooltip-content .context .item-icon{margin-right:4px;width:6px;border-radius:50%;height:6px;background-color:rgb(var(--aui-color-n-10));display:inline-block;font-size:6px}\n"] }]
|
|
493
|
-
}],
|
|
484
|
+
}], () => [{ type: i1.ContextChartService }, { type: i0.ChangeDetectorRef }], { dateFormat: [{
|
|
494
485
|
type: Input
|
|
495
486
|
}], valuePrefix: [{
|
|
496
487
|
type: Input
|
|
@@ -520,4 +511,5 @@ export class ChartTooltipComponent {
|
|
|
520
511
|
type: ViewChild,
|
|
521
512
|
args: ['tooltip']
|
|
522
513
|
}] }); })();
|
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY2hhcnQvY29tbW9uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY2hhcnQvY29tbW9uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUVYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQXFCLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsbUJBQW1CLEdBQ3BCLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0lDcEJuQiw0QkFXYzs7Ozs7SUFWWixvR0FFQyx5QkFBQSx3QkFBQSx3RkFBQTs7O0lBUEwsbUJBR0M7SUFIRCx5QkFHQztJQUNDLDBGQVdjO0lBQ2hCLGlCQUFROzs7SUFmTiwrQ0FBOEI7SUFPWCxlQUF5QjtJQUF6Qiw2RkFBeUI7Ozs7O0lBK0I1QyxvQkFBNkI7SUFBN0IsOEJBQTZCLGFBQUE7SUFFekIsNEJBR2dCO0lBQ2xCLGlCQUFNO0lBQ04sK0JBQXFCO0lBQ25CLDRCQUdnQjs7SUFDbEIsaUJBQU0sRUFBQTtJQUVSLDBCQUVPOzs7Ozs7SUFiRCxlQUEwRDtJQUExRCw4REFBMEQsb0VBQUE7SUFNMUQsZUFBMEQ7SUFBMUQsOERBQTBELHdGQUFBOzs7O0lBY2hFLFlBS0Y7Ozs7OztJQUxFLCtQQUtGOzs7SUFzQlUsNkJBQTJEO0lBQ3pELDRCQUdnQjtJQUNsQiwwQkFBZTs7OztJQUhYLGVBQXNDO0lBQXRDLDREQUFzQyxpRUFBQTs7OztJQUt4QyxZQUNGOzs7OztJQURFLDRJQUNGOzs7SUFLRiw2QkFBb0M7SUFBQSxrQkFBRTtJQUFBLDBCQUFlOzs7SUFDckQsZ0NBR0c7SUFBQSxZQUFpQjtJQUFBLGlCQUNuQjs7O0lBREUsZUFBaUI7SUFBakIseUNBQWlCOzs7SUFHcEIsZ0NBR0c7SUFBQSxZQUE2Qzs7SUFBQSxpQkFDL0M7OztJQURFLGVBQTZDO0lBQTdDLDRGQUE2Qzs7O0lBbENwRCw4QkFJQyxjQUFBO0lBRUcsMkJBR1E7SUFDUixnQ0FBd0I7SUFDdEIsNEdBS2U7SUFDZiwySUFFYztJQUNoQixpQkFBTyxFQUFBO0lBR1QsK0JBQW1CO0lBQ2pCLDJHQUFxRDtJQUNyRCw0RkFJQztJQUNELGlDQUF5QjtJQUFBLGFBQThCOztJQUFBLGlCQUFPO0lBQzlELDhGQUlDO0lBQ0gsaUJBQU0sRUFBQTs7Ozs7SUFqQ04sbUVBQTZCO0lBS3pCLGVBQStCO0lBQS9CLDRDQUErQjtJQUdoQixlQUF5QjtJQUF6QixnREFBeUIsa0JBQUE7SUFhM0IsZUFBbUI7SUFBbkIsNENBQW1CO0lBRy9CLGVBQWlCO0lBQWpCLDBDQUFpQjtJQUdLLGVBQThCO0lBQTlCLDJFQUE4QjtJQUdwRCxlQUFpQjtJQUFqQiwwQ0FBaUI7Ozs7SUFyQzFCLG9CQUdDO0lBSEQsOEJBR0M7SUFDQyxxRkFxQ0s7SUFDUCxpQkFBSzs7OztJQXhDSCxvREFBb0M7SUFJakIsZUFBWTtJQUFaLHFDQUFZLG9DQUFBOztBRC9CbkMsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWdCLEVBQUUsTUFBTSxHQUFHLGdCQUFnQjtJQUMxRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFTRCxNQUFNLE9BQU8scUJBQXFCO0lBbURoQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUk7WUFDNUMsQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU07Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7WUFDMUMsQ0FBQyxDQUFDLFFBQVE7WUFDVixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxRCxNQUFNLENBQUMsR0FBc0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWMsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFjLEVBQUUsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUN6QiwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsR0FBRyxHQUFHO1lBQ04sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEMsT0FBTztvQkFDTCxFQUFFLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFO29CQUNwQixFQUFFLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRTtvQkFDaEQsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztvQkFDbEQsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQztZQUNKLENBQUMsQ0FBQztTQUNILEVBQ0QsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBSUQsWUFDa0IsY0FBbUMsRUFDbEMsR0FBc0I7UUFEdkIsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBckdoQyxlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFNOUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFZckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUluQixnQkFBVyxHQUF3QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFTckUsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEMsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFJWixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFtRDFDLGVBQVUsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBaUU5QixzQkFBaUIsR0FBRyxDQUFDLE9BQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM3QyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsR0FBSSxJQUFJLENBQUMsb0JBQWtDO1NBQzVDLENBQUMsQ0FBQztRQUVILGdCQUFXLEdBQWlDLENBQUMsQ0FBUyxFQUFFLEtBQWtCLEVBQUUsRUFBRSxDQUM1RSxLQUFLLENBQUMsSUFBSSxDQUFDO0lBbkVWLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRO2FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQjthQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRztvQkFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztvQkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzlDLEdBQUcsSUFBSTt3QkFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO3FCQUM3QixDQUFDLENBQUM7aUJBQ0osQ0FBQzthQUNIO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBYSxFQUFFLE9BQXFCO1FBQzVDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxhQUFhLElBQUksWUFBWSxFQUFFO1lBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RSxzQkFBc0I7WUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBV0QsbUJBQW1CO0lBQ1gsWUFBWSxDQUFDLENBQWE7UUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQ3JFLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBVyxFQUM5RCxZQUFZLENBQ2IsQ0FBQztZQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsU0FBaUIsRUFBRSxLQUEyQjtRQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVTtZQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRTtnQkFDakQsQ0FBQyxDQUFxQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxvQkFBb0IsQ0FBQyxTQUFpQixFQUFFLEtBQTJCO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLFlBQVk7WUFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNsRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUMzQixPQUFPLENBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7d0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQVcsQ0FBQyxFQUFFOzRCQUM1RCxPQUFPLENBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dDQUM1QixHQUFHLENBQ0osQ0FBQzt5QkFDSDt3QkFDRCxPQUFPLEdBQUcsQ0FBQztvQkFDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUNiLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsbUJBQW1CO0lBQ1gsWUFBWSxDQUFDLFNBQWlCLEVBQUUsSUFBWTtRQUNsRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixLQUFLLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQzNCLEtBQUssTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2YsTUFBTTtxQkFDUDtpQkFDRjtnQkFDRCxNQUFNO2FBQ1A7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQ0FBa0M7SUFDMUIsaUJBQWlCLENBQUMsS0FBYSxFQUFFLE1BQThCO1FBQ3JFLE1BQU0sTUFBTSxHQUFrQixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ2hFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLE9BQU87b0JBQ0wsR0FBRyxHQUFHO29CQUNOO3dCQUNFLEdBQUcsSUFBSTt3QkFDUCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7d0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO3FCQUNqQjtpQkFDRixDQUFDO2FBQ0g7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU87WUFDTCxLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVM7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CLENBQUMsS0FBMEI7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pFLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsU0FBUyxFQUFFO2dCQUNsQyxPQUFPO29CQUNMLEdBQUcsR0FBRztvQkFDTixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUNwQixDQUNFLElBQUksRUFDSixJQUE2RCxFQUM3RCxLQUFLLEVBQ0wsRUFBRTt3QkFDRixJQUNFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFXLENBQUM7NEJBQ3pELENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDM0M7NEJBQ0EsT0FBTztnQ0FDTCxHQUFHLElBQUk7Z0NBQ1A7b0NBQ0UsR0FBRyxJQUFJO29DQUNQLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztvQ0FDWixLQUFLLEVBQ0gsSUFBSSxDQUFDLEtBQUs7d0NBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7aUNBQ2xEOzZCQUNGLENBQUM7eUJBQ0g7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQyxFQUNELEVBQUUsQ0FDSDtpQkFDRixDQUFDO2FBQ0g7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLE9BQU87WUFDTCxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUztZQUNyQyxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQzdCLE9BQU8sQ0FDTyxDQUFDO1FBQ2pCLElBQUksY0FBYyxFQUFFO1lBQ2xCLGNBQWMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0NBQWdDLENBQ3RDLElBQTJCLEVBQzNCLElBQVk7UUFFWixJQUFJLE1BQTJCLENBQUM7UUFDaEMsS0FBSyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztnQkFDbEIsTUFBTTthQUNQO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLFlBQWlDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7WUFDckQsQ0FBQyxDQUFxQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVU7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFXLEVBQzlELFlBQVksQ0FDYixHQUFHLENBQUMsQ0FDTjtZQUNILENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLFlBQWlDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVO1lBQzNDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBc0IsRUFBRSxLQUFLLEdBQUcsRUFBRTtRQUN4RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztzRkF6WlUscUJBQXFCO29FQUFyQixxQkFBcUI7Ozs7OztZQzVEbEMsdUVBZ0JRO1lBRVIsbUJBZUU7WUFmRiw2QkFlRTtZQUVGLHVIQXFCYztZQUVkLHVIQVNjO1lBRWQsdUhBZ0RjOzs7WUFuSFgsa0NBQWE7WUF5QmQsZUFBd0Q7WUFBeEQsdURBQXdELHNFQUFBLDRDQUFBLHdFQUFBO1lBUHhELGtDQUFvQixvQ0FBQSxrQkFBQSxjQUFBLDRCQUFBLDhCQUFBOzs7dUZEd0NULHFCQUFxQjtjQVBqQyxTQUFTOzJCQUVFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTtzR0FHdEMsVUFBVTtrQkFBbEIsS0FBSztZQUVHLFdBQVc7a0JBQW5CLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRUcsWUFBWTtrQkFBcEIsS0FBSztZQUVHLGVBQWU7a0JBQXZCLEtBQUs7WUFFRyxhQUFhO2tCQUFyQixLQUFLO1lBRUcsaUJBQWlCO2tCQUF6QixLQUFLO1lBRUcsb0JBQW9CO2tCQUE1QixLQUFLO1lBRUcsYUFBYTtrQkFBckIsS0FBSztZQUVHLFFBQVE7a0JBQWhCLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBRUcsV0FBVztrQkFBbkIsS0FBSztZQUVnQixhQUFhO2tCQUFsQyxTQUFTO21CQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbHRpcCB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjYWxlQmFuZCB9IGZyb20gJ2QzJztcbmltcG9ydCBkYXlqcywgeyBDb25maWdUeXBlIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFULCBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2hhcnREYXRhLCBDaGFydERhdGFJdGVtIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jaGFydC9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENvbnRleHRDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZpbmRDbG9zZXN0UG9pbnRJbmRleCxcbiAgZ2V0WFBvcyxcbiAgdG9vbHRpcFN1ZmZpeEZvcm1hdCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG50eXBlIFhWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGU7XG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRJdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICB4OiBYVmFsdWU7XG4gIHk6IG51bWJlcjtcbiAgdW5pdD86IHN0cmluZztcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBDdXJyZW50UG9zaXRpb25JdGVtIHtcbiAgeDE6IG51bWJlcjtcbiAgeDI6IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUb29sdGlwQ29udGV4dCB7XG4gIHRpdGxlOiBYVmFsdWU7XG4gIHNvdXJjZTogQ2hhcnREYXRhW107XG4gIHZhbHVlczogQ29udGV4dEl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZURhdGVGb3JtYXQoZGF0ZTogQ29uZmlnVHlwZSwgZm9ybWF0ID0gREFURV9USU1FX0ZPUk1BVCkge1xuICByZXR1cm4gU3RyaW5nKGRheWpzKGRhdGUpLmlzVmFsaWQoKSA/IGRheWpzKGRhdGUpLmZvcm1hdChmb3JtYXQpIDogZGF0ZSk7XG59XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2dbYWNsVG9vbHRpcF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0VG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGF0ZUZvcm1hdCA9IERBVEVfVElNRV9GT1JNQVQ7XG5cbiAgQElucHV0KCkgdmFsdWVQcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSB2YWx1ZVN1ZmZpeDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGNvbHVtbkxheW91dCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgcG9pbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgcG9pbnROYW1lVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHBvaW50VGVtcGxhdGVDb250ZXh0OiB1bmtub3duO1xuXG4gIEBJbnB1dCgpIHRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIGF1dG9Tb3J0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpdGxlVHJhbnNsYXRpb246IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcG9pbnRGb3JtYXQ6IChkOiBDb250ZXh0SXRlbSkgPT4gc3RyaW5nIHwgbnVtYmVyID0gZCA9PiBkLnk7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcpIGF1aVRvb2x0aXBSZWY6IEJhc2VUb29sdGlwO1xuXG4gIHZpZXc6IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9O1xuXG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgYW5jaG9yUG9zID0gMDtcbiAgYW5jaG9yT3BhY2l0eSA9IDA7XG4gIGFuY2hvckhlaWdodCA9IDA7XG4gIGFuY2hvclkgPSAwO1xuICBsYXN0QW5jaG9yUG9zOiBudW1iZXI7XG4gIHRvb2x0aXBDb250ZXh0OiBUb29sdGlwQ29udGV4dDtcblxuICBoYWNrZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEYXRlRm9ybWF0ID0gaGFuZGxlRGF0ZUZvcm1hdDtcblxuICB0b29sdGlwU3VmZml4Rm9ybWF0ID0gdG9vbHRpcFN1ZmZpeEZvcm1hdDtcblxuICBhY3RpdmVMZWdlbmQ6IHN0cmluZztcblxuICBnZXQgdHlwZVN0YW5kYXJkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmJhck9wdGlvbnMudHlwZSA9PT0gJ3N0YW5kYXJkJztcbiAgfVxuXG4gIGdldCBpc0JhbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UuYmFyT3B0aW9ucy5pc0JhbmQ7XG4gIH1cblxuICBnZXQgYW5jaG9yVmlzaWJpbGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5zaXplID09PVxuICAgICAgKHRoaXMudHlwZVN0YW5kYXJkXG4gICAgICAgID8gdGhpcy5jb250ZXh0U2VydmljZS5pbm5lckRvbWFpbi5sZW5ndGhcbiAgICAgICAgOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YT8ubGVuZ3RoKVxuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBncm91cFBvc2l0aW9uKCkge1xuICAgIC8vIOiuoeeulyBncm91cCDlvIDlp4vnu5PmnZ/kvY3nva5cbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS54U2VyaWVzVmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgeCA9IDxTY2FsZUJhbmQ8c3RyaW5nPj50aGlzLmNvbnRleHRTZXJ2aWNlLng7XG4gICAgICBjb25zdCB4MSA9IHgoaXRlbSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHsgeDEsIHgyOiB4MSArIHguYmFuZHdpZHRoKCksIGluZGV4LCBncm91cE5hbWU6IGl0ZW0gYXMgc3RyaW5nIH07XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRpb25JdGVtUG9zaXRpb24oKSB7XG4gICAgLy8g5qC55o2uIGdyb3VwIOiuoeeulyBpdGVtIOW8gOWni+e7k+adn+S9jee9rlxuICAgIHJldHVybiB0aGlzLmdyb3VwUG9zaXRpb24ucmVkdWNlKFxuICAgICAgKGFjYywgcG9zaXRpb24sIGluZGV4KSA9PiBbXG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgLi4udGhpcy5jb250ZXh0U2VydmljZS5pbm5lckRvbWFpbi5tYXAoKGlubmVyLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmFySW5uZXJTY2FsZSA9IHRoaXMuY29udGV4dFNlcnZpY2UuYmFySW5uZXJTY2FsZSgpO1xuICAgICAgICAgIGNvbnN0IHgxID0gYmFySW5uZXJTY2FsZShpbm5lcik7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgxOiB4MSArIHBvc2l0aW9uLngxLFxuICAgICAgICAgICAgeDI6IHgxICsgcG9zaXRpb24ueDEgKyBiYXJJbm5lclNjYWxlLmJhbmR3aWR0aCgpLFxuICAgICAgICAgICAgbmFtZTogaW5uZXIsXG4gICAgICAgICAgICBncm91cE5hbWU6IHRoaXMuY29udGV4dFNlcnZpY2UueFNlcmllc1ZhbHVlW2luZGV4XSxcbiAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIFtdLFxuICAgICk7XG4gIH1cblxuICBjYWxjdWxhdGVZID0gKF86IG51bWJlcikgPT4gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dFNlcnZpY2U6IENvbnRleHRDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFuY2hvckhlaWdodCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnRWaWV3LmhlaWdodDtcbiAgICAgICAgdGhpcy52aWV3ID0gdGhpcy5jb250ZXh0U2VydmljZS5jaGFydFZpZXc7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UubGVnZW5kQWN0aXZhdGUkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUobGVnZW5kID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVMZWdlbmQgPSBsZWdlbmQ7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBDb250ZXh0Py52YWx1ZXMpIHtcbiAgICAgICAgICB0aGlzLnRvb2x0aXBDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4udGhpcy50b29sdGlwQ29udGV4dCxcbiAgICAgICAgICAgIHZhbHVlczogdGhpcy50b29sdGlwQ29udGV4dC52YWx1ZXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgYWN0aXZlOiBpdGVtLm5hbWUgPT09IGxlZ2VuZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGU6IE1vdXNlRXZlbnQsIHJlY3REb20/OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHhQb3MgPSBnZXRYUG9zKGUsIHRoaXMuY29udGV4dFNlcnZpY2UsIHJlY3REb20pO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleCA9IGZpbmRDbG9zZXN0UG9pbnRJbmRleCh4UG9zLCB0aGlzLmNvbnRleHRTZXJ2aWNlKTtcbiAgICBjb25zdCBjbG9zZXN0UG9pbnQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnhTZXJpZXNWYWx1ZVtjbG9zZXN0SW5kZXhdO1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmJhck9wdGlvbnMuaXNCYW5kKSB7XG4gICAgICB0aGlzLmJhck1vdXNlTW92ZShlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hbmNob3JQb3MgPSB4UG9zO1xuICAgIGlmICh0aGlzLmFuY2hvclBvcyAhPT0gdGhpcy5sYXN0QW5jaG9yUG9zICYmIGNsb3Nlc3RQb2ludCkge1xuICAgICAgdGhpcy50b29sdGlwQ29udGV4dCA9IHRoaXMuZ2V0VG9vbHRpcENvbnRleHQoY2xvc2VzdEluZGV4LCBjbG9zZXN0UG9pbnQpO1xuICAgICAgLy8g5YC85Li6IG51bGwg5LiN5bGV56S6IHRvb2x0aXBcbiAgICAgIGNvbnN0IG5vRGF0YSA9ICF0aGlzLnRvb2x0aXBDb250ZXh0Py52YWx1ZXM/LnNvbWUoZCA9PiBkLnkgIT09IG51bGwpO1xuICAgICAgaWYgKG5vRGF0YSkge1xuICAgICAgICB0aGlzLmFuY2hvck9wYWNpdHkgPSAwO1xuICAgICAgICB0aGlzLmxhc3RBbmNob3JQb3MgPSAtMTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0QW5jaG9yUG9zID0gdGhpcy5hbmNob3JQb3M7XG4gICAgICAgIHRoaXMuYW5jaG9yT3BhY2l0eSA9IDAuNztcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuYW5jaG9yT3BhY2l0eSA9IDA7XG4gICAgdGhpcy5sYXN0QW5jaG9yUG9zID0gLTE7XG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG1lcmdlUG9pbnRDb250ZXh0ID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0KSA9PiAoe1xuICAgIGNvbnRleHQ6IHRoaXMubGltaXRNYXhDb250ZXh0KGNvbnRleHQudmFsdWVzKSxcbiAgICBzb3VyY2U6IGNvbnRleHQuc291cmNlLFxuICAgIC4uLih0aGlzLnBvaW50VGVtcGxhdGVDb250ZXh0IGFzIFN0cmluZ01hcCksXG4gIH0pO1xuXG4gIGl0ZW1UcmFja0J5OiBUcmFja0J5RnVuY3Rpb248Q29udGV4dEl0ZW0+ID0gKF86IG51bWJlciwgdmFsdWU6IENvbnRleHRJdGVtKSA9PlxuICAgIHZhbHVlLm5hbWU7XG5cbiAgLy8gYmFyIG1vdXNlTW92ZSDlpITnkIZcbiAgcHJpdmF0ZSBiYXJNb3VzZU1vdmUoZTogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHhQb3MgPSBnZXRYUG9zKGUsIHRoaXMuY29udGV4dFNlcnZpY2UpO1xuICAgIGNvbnN0IGN1cnJQb3NpdGlvbiA9IHRoaXMuZ2V0Q3VycmVudE1vdXNlTW92ZVBvc2l0aW9uVmFsdWUoXG4gICAgICB0aGlzLnR5cGVTdGFuZGFyZCA/IHRoaXMuY2FsY3VsYXRpb25JdGVtUG9zaXRpb24gOiB0aGlzLmdyb3VwUG9zaXRpb24sXG4gICAgICB4UG9zLFxuICAgICk7XG4gICAgaWYgKGN1cnJQb3NpdGlvbikge1xuICAgICAgdGhpcy5nZXRCYXJYQW5jaG9yUG9zKGN1cnJQb3NpdGlvbik7XG4gICAgICB0aGlzLmdldEJhckhpZ2h0KFxuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnhTZXJpZXNWYWx1ZVtjdXJyUG9zaXRpb24uaW5kZXhdIGFzIHN0cmluZyxcbiAgICAgICAgY3VyclBvc2l0aW9uLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ2V0QmFyWUFuY2hvclBvcyhjdXJyUG9zaXRpb24pO1xuICAgICAgdGhpcy50b29sdGlwQ29udGV4dCA9IHRoaXMuZ2V0QmFyVG9vbHRpcENvbnRleHQoY3VyclBvc2l0aW9uKTtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJhckhpZ2h0KGdyb3VwTmFtZTogc3RyaW5nLCB2YWx1ZT86IEN1cnJlbnRQb3NpdGlvbkl0ZW0pIHtcbiAgICB0aGlzLmFuY2hvckhlaWdodCA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9yaXpvbnRhbFxuICAgICAgPyB0aGlzLnR5cGVTdGFuZGFyZFxuICAgICAgICA/IHRoaXMuY29udGV4dFNlcnZpY2UuYmFySW5uZXJTY2FsZSgpLmJhbmR3aWR0aCgpXG4gICAgICAgIDogKDxTY2FsZUJhbmQ8c3RyaW5nPj50aGlzLmNvbnRleHRTZXJ2aWNlLngpLmJhbmR3aWR0aCgpXG4gICAgICA6IHRoaXMuZ2V0VmVydGljYWxCYXJIZWlnaHQoZ3JvdXBOYW1lLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICog6K6h566XIGJhciDlnoLnm7Qg57G75Z6L5LiLIOmrmOW6plxuICAgKiDmoIflh4bvvJpcYlxi55u05o6l5qC55o2uIHkoMCkgLSB5KHZhbHVlKSDorqHnrpcgYmFyIGl0ZW0g55qE6auY5bqmXG4gICAqIOWghuWPoO+8muiuoeeulyBncm91cCDkuIvmiYDmnIlpdGVtIOeahOmrmOW6puebuOWKoCDlvpfliLDloIblj6DnmoQgYmFyIOmrmOW6plxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWZXJ0aWNhbEJhckhlaWdodChncm91cE5hbWU6IHN0cmluZywgdmFsdWU/OiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZVN0YW5kYXJkXG4gICAgICA/IHRoaXMuY29udGV4dFNlcnZpY2UueSgwKSAtXG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KHRoaXMuZ2V0QmFyWVZhbHVlKHZhbHVlLmdyb3VwTmFtZSwgdmFsdWUubmFtZSkpXG4gICAgICA6IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyLm5hbWUgPT09IGdyb3VwTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgY3Vyci52YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5oYXModmFsLnggYXMgc3RyaW5nKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KDApIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KHZhbC55KSArXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgfSwgMCkgKyBwcmV2XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwgMCk7XG4gIH1cblxuICAvLyDojrflj5blvZPliY3pvKDmoIfnp7vlhaUgYmFyIHkg5YC8XG4gIHByaXZhdGUgZ2V0QmFyWVZhbHVlKGdyb3VwTmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBmb3IgKGNvbnN0IFssIGl0ZW1dIG9mIHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLmVudHJpZXMoKSkge1xuICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gZ3JvdXBOYW1lKSB7XG4gICAgICAgIGZvciAoY29uc3QgWywgdmFsXSBvZiBpdGVtLnZhbHVlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICBpZiAodmFsLnggPT09IG5hbWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHZhbC55O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gbGluZSBhcmVhIGNoYXJ0IOiOt+WPliB0b29sdGlwIOWxleekuuaVsOaNrlxuICBwcml2YXRlIGdldFRvb2x0aXBDb250ZXh0KGluZGV4OiBudW1iZXIsIHhWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSkge1xuICAgIGNvbnN0IHZhbHVlczogQ29udGV4dEl0ZW1bXSA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZShcbiAgICAgIChhY2MsIGdyb3VwKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5oYXMoZ3JvdXAubmFtZSkpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gZ3JvdXAudmFsdWVzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICBjb2xvcjogZ3JvdXAuY29sb3IsXG4gICAgICAgICAgICAgIHVuaXQ6IGdyb3VwLnVuaXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogeFZhbHVlLFxuICAgICAgc291cmNlOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YSxcbiAgICAgIHZhbHVlczogdGhpcy5hdXRvU29ydCA/IHZhbHVlcy5zb3J0KChhLCBiKSA9PiBiLnkgLSBhLnkpIDogdmFsdWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog6I635Y+WIGJhciB0b29sdGlwIOWxleekuuaVsOaNrlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRCYXJUb29sdGlwQ29udGV4dCh2YWx1ZTogQ3VycmVudFBvc2l0aW9uSXRlbSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZSgoYWNjLCBncm91cCkgPT4ge1xuICAgICAgaWYgKGdyb3VwLm5hbWUgPT09IHZhbHVlLmdyb3VwTmFtZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAuLi5ncm91cC52YWx1ZXMucmVkdWNlKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcmV2LFxuICAgICAgICAgICAgICBjdXJyOiBDaGFydERhdGFJdGVtPHsgeDogc3RyaW5nOyB5OiBudW1iZXI7IGNvbG9yPzogc3RyaW5nIH0+LFxuICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuY29udGV4dFNlcnZpY2UuZGlzYWJsZWRMZWdlbmQuaGFzKGN1cnIueCBhcyBzdHJpbmcpICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlLm5hbWUgPyBjdXJyLnggPT09IHZhbHVlLm5hbWUgOiB0cnVlKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY3Vyci54LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyLmNvbG9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5nZXRDaGFydERlZmF1bHRDb2xvcihpbmRleCksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdmFsdWUuZ3JvdXBOYW1lLFxuICAgICAgc291cmNlOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YSxcbiAgICAgIHZhbHVlcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOaaguaXtuWFiCDpgJrov4cgaGFjayDmlrnlvI8g5L+u5pS5IHBvaW50ZXIgZXZlbnQg6KGM5Li6XG4gICAqIFRPRE86IOWQjue7reWGhemDqOWunueOsCB0b29sdGlwIOS4jeS9v+eUqCBhdWkgdG9vbHRpcFxuICAgKi9cbiAgaGFja092ZXJsYXlQYW5lU3R5bGUoc3R5bGU6IHN0cmluZykge1xuICAgIGNvbnN0IHRvb2x0aXBQYW5lRG9tID0gZ2V0KFxuICAgICAgdGhpcy5hdWlUb29sdGlwUmVmLm92ZXJsYXlSZWYsXG4gICAgICAnX3BhbmUnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRvb2x0aXBQYW5lRG9tKSB7XG4gICAgICB0b29sdGlwUGFuZURvbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPlum8oOagh+enu+WKqOeahOS9jee9ruaJgOWcqOeahCBiYXIgdmFsdWVcbiAgICogQHBhcmFtIGRhdGEg5b2T5YmNXGIgYmFyIOW8gOWni+e7k+adnyB4IOS9jee9rlxuICAgKiBAcGFyYW0geFBvcyDlvZPliY3pvKDmoIfkvY3nva5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3VycmVudE1vdXNlTW92ZVBvc2l0aW9uVmFsdWUoXG4gICAgZGF0YTogQ3VycmVudFBvc2l0aW9uSXRlbVtdLFxuICAgIHhQb3M6IG51bWJlcixcbiAgKSB7XG4gICAgbGV0IHJlc3VsdDogQ3VycmVudFBvc2l0aW9uSXRlbTtcbiAgICBmb3IgKGNvbnN0IFssIHBvc2l0aW9uXSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgaWYgKHhQb3MgPj0gcG9zaXRpb24ueDEgJiYgeFBvcyA8PSBwb3NpdGlvbi54Mikge1xuICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICog6K6h566X6ZSa54K5IHgg5L2N572uXG4gICAqIOW9k+WJjSBiYXIg5pWw5o2uIHgg5L2N572uICsg5b2T5YmNIGJhciDlrr3luqbnmoTkuIDoiKxcbiAgICogQHBhcmFtIGN1cnJQb3NpdGlvbiDlvZPliY3pvKDmoIfnp7vlhaXnmoRiYXIg5pWw5o2uXG4gICAqL1xuICBwcml2YXRlIGdldEJhclhBbmNob3JQb3MoY3VyclBvc2l0aW9uOiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgY29uc3QgYmFuZHdpZHRoID0gdGhpcy50eXBlU3RhbmRhcmRcbiAgICAgID8gdGhpcy5jb250ZXh0U2VydmljZS5iYXJJbm5lclNjYWxlKCkuYmFuZHdpZHRoKCkgLyAyXG4gICAgICA6ICg8U2NhbGVCYW5kPHN0cmluZz4+dGhpcy5jb250ZXh0U2VydmljZS54KS5iYW5kd2lkdGgoKSAvIDI7XG4gICAgdGhpcy5hbmNob3JQb3MgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvcml6b250YWxcbiAgICAgID8gTWF0aC5hYnMoXG4gICAgICAgICAgdGhpcy5nZXRWZXJ0aWNhbEJhckhlaWdodChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UueFNlcmllc1ZhbHVlW2N1cnJQb3NpdGlvbi5pbmRleF0gYXMgc3RyaW5nLFxuICAgICAgICAgICAgY3VyclBvc2l0aW9uLFxuICAgICAgICAgICkgLyAyLFxuICAgICAgICApXG4gICAgICA6IGN1cnJQb3NpdGlvbi54MSArIGJhbmR3aWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiDorqHnrpfplJrngrkgeSDkvY3nva5cbiAgICog5rC05bmz77ya5b2T5YmNIGJhciDmlbDmja4geCDkvY3nva5cbiAgICog5Z6C55u077ya5oC76auY5bqmIC0gYmFyIOmrmOW6piDvvIjpnIDopoHlhYjorqHnrpflh7ogYmFy6auY5bqm77yJXG4gICAqL1xuICBwcml2YXRlIGdldEJhcllBbmNob3JQb3MoY3VyclBvc2l0aW9uOiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgdGhpcy5hbmNob3JZID0gdGhpcy5jb250ZXh0U2VydmljZS5ob3Jpem9udGFsXG4gICAgICA/IGN1cnJQb3NpdGlvbi54MVxuICAgICAgOiB0aGlzLnZpZXcuaGVpZ2h0IC0gdGhpcy5hbmNob3JIZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKCkge1xuICAgIGlmICghdGhpcy5hdWlUb29sdGlwUmVmPy5pc0NyZWF0ZWQpIHtcbiAgICAgIHRoaXMuYXVpVG9vbHRpcFJlZj8uc2hvdygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaGFja2VkKSB7XG4gICAgICB0aGlzLmhhY2tPdmVybGF5UGFuZVN0eWxlKCdub25lJyk7XG4gICAgfVxuICAgIHRoaXMuaGFja2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRvb2x0aXAoKSB7XG4gICAgdGhpcy5oYWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhhY2tPdmVybGF5UGFuZVN0eWxlKCdhdXRvJyk7XG4gICAgdGhpcy5hdWlUb29sdGlwUmVmPy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TWF4Q29udGV4dChjb250ZXh0OiBDb250ZXh0SXRlbVtdLCBsaW1pdCA9IDE1KSB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udGV4dC5zbGljZSgwLCBsaW1pdCk7XG4gICAgY29uc3QgZXhpc3RBY3RpdmUgPSB2YWx1ZXMuc29tZShpdGVtID0+IGl0ZW0ubmFtZSA9PT0gdGhpcy5hY3RpdmVMZWdlbmQpO1xuICAgIGlmICghZXhpc3RBY3RpdmUgJiYgdGhpcy5hY3RpdmVMZWdlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuYWN0aXZlTGVnZW5kKTtcbiAgICAgIHRoaXMuYWN0aXZlTGVnZW5kID0gJyc7XG4gICAgICByZXR1cm4gZGF0YSA/IFsuLi52YWx1ZXMuc2xpY2UoMCwgbGltaXQgLSAxKSwgZGF0YV0gOiB2YWx1ZXM7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPHN2ZzpnXG4gIFthdHRyLm9wYWNpdHldPVwiYW5jaG9yT3BhY2l0eVwiXG4gICpuZ0lmPVwiIWlzQmFuZFwiXG4+XG4gIDxzdmc6Y2lyY2xlXG4gICAgW2F0dHIudmlzaWJpbGl0eV09XCJcbiAgICAgIGNvbnRleHRTZXJ2aWNlLmRpc2FibGVkTGVnZW5kLmhhcyhpdGVtLm5hbWUpID8gJ2hpZGRlbicgOiAnJ1xuICAgIFwiXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdG9vbHRpcENvbnRleHQ/LnZhbHVlc1wiXG4gICAgcj1cIjIuNVwiXG4gICAgW2F0dHIuc3Ryb2tlXT1cIml0ZW0uY29sb3JcIlxuICAgIHN0cm9rZS13aWR0aD1cIjFcIlxuICAgIGZpbGw9XCIjZmZmXCJcbiAgICBbYXR0ci5jeF09XCJhbmNob3JQb3NcIlxuICAgIFthdHRyLmN5XT1cIml0ZW0ueSA/IChpdGVtLnkgfCBwdXJlOiBjb250ZXh0U2VydmljZS55KSB8fCAwIDogMTAwMFwiXG4gID48L3N2ZzpjaXJjbGU+XG48L3N2ZzpnPlxuXG48c3ZnOnJlY3RcbiAgc3Ryb2tlPVwiIzk5OVwiXG4gIFthdHRyLnhdPVwiYW5jaG9yUG9zXCJcbiAgW2F0dHIudmlzaWJpbGl0eV09XCJhbmNob3JWaXNpYmlsaXR5XCJcbiAgW2F0dHIueV09XCJhbmNob3JZXCJcbiAgW2F0dHIud2lkdGhdPVwiMC41XCJcbiAgW2F0dHIuaGVpZ2h0XT1cImFuY2hvckhlaWdodFwiXG4gICN0b29sdGlwPVwiYXVpVG9vbHRpcFwiXG4gIFthdHRyLm9wYWNpdHldPVwiYW5jaG9yT3BhY2l0eVwiXG4gIFthdWlUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZSB8fCBkZWZhdWx0VG9vbHRpcFRlbXBsYXRlXCJcbiAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgY29udGV4dDogdG9vbHRpcENvbnRleHQgfVwiXG4gIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiYW5jaG9yVmlzaWJpbGl0eVwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwibWFudWFsXCJcbiAgW2F1aVRvb2x0aXBQb3NpdGlvbl09XCJ0eXBlU3RhbmRhcmQgJiYgaXNCYW5kID8gJ3RvcCcgOiAnc3RhcnQnXCJcbiAgYXVpVG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzXCJcbi8+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdFRvb2x0aXBUZW1wbGF0ZVxuICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuPlxuICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlVGVtcGxhdGUgfHwgZGVmYXVsdFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb250ZXh0OiBjb250ZXh0IH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZXh0XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50VGVtcGxhdGUgfHwgZGVmYXVsdFBvaW50VGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dCB8IHB1cmU6IG1lcmdlUG9pbnRDb250ZXh0XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIlxuICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRUaXRsZVRlbXBsYXRlXG4gIGxldC1jb250ZXh0PVwiY29udGV4dFwiXG4+XG4gIHt7XG4gICAgdGl0bGVUcmFuc2xhdGlvblxuICAgICAgPyAoY29udGV4dD8udGl0bGUgfCB0cmFuc2xhdGU6IG51bGw6dHJ1ZSlcbiAgICAgIDogKGNvbnRleHQ/LnRpdGxlIHwgcHVyZTogaGFuZGxlRGF0ZUZvcm1hdDpkYXRlRm9ybWF0KVxuICB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0UG9pbnRUZW1wbGF0ZVxuICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuICBsZXQtc291cmNlPVwic291cmNlXCJcbj5cbiAgPHVsXG4gICAgY2xhc3M9XCJjb250ZXh0LWxpc3RcIlxuICAgIFtjbGFzcy5jb2x1bW4tbGF5b3V0XT1cImNvbHVtbkxheW91dFwiXG4gID5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwiY29udGV4dC1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRleHQ7IHRyYWNrQnk6IGl0ZW1UcmFja0J5XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXRlbT8uYWN0aXZlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1pY29uXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtLmNvbG9yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLW5hbWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9pbnROYW1lVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50TmFtZVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29udGV4dDogaXRlbSB9XCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uID8gKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSkgOiBpdGVtLm5hbWUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uTGF5b3V0XCI+OiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cIml0ZW0tcHJlZml4XCJcbiAgICAgICAgICAqbmdJZj1cInZhbHVlUHJlZml4XCJcbiAgICAgICAgICA+e3sgdmFsdWVQcmVmaXggfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIj57eyBpdGVtIHwgcHVyZTogcG9pbnRGb3JtYXQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLXN1ZmZpeFwiXG4gICAgICAgICAgKm5nSWY9XCJ2YWx1ZVN1ZmZpeFwiXG4gICAgICAgICAgPnt7IHZhbHVlU3VmZml4IHwgcHVyZTogdG9vbHRpcFN1ZmZpeEZvcm1hdCB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
514
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChartTooltipComponent, { className: "ChartTooltipComponent" }); })();
|
|
515
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY2hhcnQvY29tbW9uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY2hhcnQvY29tbW9uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUVYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQXFCLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsbUJBQW1CLEdBQ3BCLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7SUNwQm5CLDRCQVdjOzs7Ozs7Ozs7SUFmaEIseUJBR0M7SUFDQywwRkFXQztJQUNILGlCQUFROzs7O0lBUmEsY0FBeUI7SUFBekIsNkZBQXlCOzs7SUFnQzFDLEFBREYsOEJBQTZCLGNBQ1I7SUFDakIsNEJBR2dCO0lBQ2xCLGlCQUFNO0lBQ04sK0JBQXFCO0lBQ25CLDRCQUdnQjs7SUFFcEIsQUFERSxpQkFBTSxFQUNGO0lBQ04sMEJBRU87Ozs7OztJQWJELGVBQTBEO0lBQzFELEFB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LFFBQVE7a0JBQWhCLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBRUcsV0FBVztrQkFBbkIsS0FBSztZQUVnQixhQUFhO2tCQUFsQyxTQUFTO21CQUFDLFNBQVM7O2tGQTNCVCxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbHRpcCB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjYWxlQmFuZCB9IGZyb20gJ2QzJztcbmltcG9ydCBkYXlqcywgeyBDb25maWdUeXBlIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFULCBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2hhcnREYXRhLCBDaGFydERhdGFJdGVtIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jaGFydC9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENvbnRleHRDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZpbmRDbG9zZXN0UG9pbnRJbmRleCxcbiAgZ2V0WFBvcyxcbiAgdG9vbHRpcFN1ZmZpeEZvcm1hdCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG50eXBlIFhWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGU7XG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRJdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICB4OiBYVmFsdWU7XG4gIHk6IG51bWJlcjtcbiAgdW5pdD86IHN0cmluZztcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBDdXJyZW50UG9zaXRpb25JdGVtIHtcbiAgeDE6IG51bWJlcjtcbiAgeDI6IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUb29sdGlwQ29udGV4dCB7XG4gIHRpdGxlOiBYVmFsdWU7XG4gIHNvdXJjZTogQ2hhcnREYXRhW107XG4gIHZhbHVlczogQ29udGV4dEl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZURhdGVGb3JtYXQoZGF0ZTogQ29uZmlnVHlwZSwgZm9ybWF0ID0gREFURV9USU1FX0ZPUk1BVCkge1xuICByZXR1cm4gU3RyaW5nKGRheWpzKGRhdGUpLmlzVmFsaWQoKSA/IGRheWpzKGRhdGUpLmZvcm1hdChmb3JtYXQpIDogZGF0ZSk7XG59XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2dbYWNsVG9vbHRpcF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0VG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGF0ZUZvcm1hdCA9IERBVEVfVElNRV9GT1JNQVQ7XG5cbiAgQElucHV0KCkgdmFsdWVQcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSB2YWx1ZVN1ZmZpeDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGNvbHVtbkxheW91dCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgcG9pbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgcG9pbnROYW1lVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHBvaW50VGVtcGxhdGVDb250ZXh0OiB1bmtub3duO1xuXG4gIEBJbnB1dCgpIHRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIGF1dG9Tb3J0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpdGxlVHJhbnNsYXRpb246IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcG9pbnRGb3JtYXQ6IChkOiBDb250ZXh0SXRlbSkgPT4gc3RyaW5nIHwgbnVtYmVyID0gZCA9PiBkLnk7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcpIGF1aVRvb2x0aXBSZWY6IEJhc2VUb29sdGlwO1xuXG4gIHZpZXc6IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9O1xuXG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgYW5jaG9yUG9zID0gMDtcbiAgYW5jaG9yT3BhY2l0eSA9IDA7XG4gIGFuY2hvckhlaWdodCA9IDA7XG4gIGFuY2hvclkgPSAwO1xuICBsYXN0QW5jaG9yUG9zOiBudW1iZXI7XG4gIHRvb2x0aXBDb250ZXh0OiBUb29sdGlwQ29udGV4dDtcblxuICBoYWNrZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEYXRlRm9ybWF0ID0gaGFuZGxlRGF0ZUZvcm1hdDtcblxuICB0b29sdGlwU3VmZml4Rm9ybWF0ID0gdG9vbHRpcFN1ZmZpeEZvcm1hdDtcblxuICBhY3RpdmVMZWdlbmQ6IHN0cmluZztcblxuICBnZXQgdHlwZVN0YW5kYXJkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmJhck9wdGlvbnMudHlwZSA9PT0gJ3N0YW5kYXJkJztcbiAgfVxuXG4gIGdldCBpc0JhbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UuYmFyT3B0aW9ucy5pc0JhbmQ7XG4gIH1cblxuICBnZXQgYW5jaG9yVmlzaWJpbGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5zaXplID09PVxuICAgICAgKHRoaXMudHlwZVN0YW5kYXJkXG4gICAgICAgID8gdGhpcy5jb250ZXh0U2VydmljZS5pbm5lckRvbWFpbi5sZW5ndGhcbiAgICAgICAgOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YT8ubGVuZ3RoKVxuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBncm91cFBvc2l0aW9uKCkge1xuICAgIC8vIOiuoeeulyBncm91cCDlvIDlp4vnu5PmnZ/kvY3nva5cbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS54U2VyaWVzVmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgeCA9IDxTY2FsZUJhbmQ8c3RyaW5nPj50aGlzLmNvbnRleHRTZXJ2aWNlLng7XG4gICAgICBjb25zdCB4MSA9IHgoaXRlbSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHsgeDEsIHgyOiB4MSArIHguYmFuZHdpZHRoKCksIGluZGV4LCBncm91cE5hbWU6IGl0ZW0gYXMgc3RyaW5nIH07XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRpb25JdGVtUG9zaXRpb24oKSB7XG4gICAgLy8g5qC55o2uIGdyb3VwIOiuoeeulyBpdGVtIOW8gOWni+e7k+adn+S9jee9rlxuICAgIHJldHVybiB0aGlzLmdyb3VwUG9zaXRpb24ucmVkdWNlKFxuICAgICAgKGFjYywgcG9zaXRpb24sIGluZGV4KSA9PiBbXG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgLi4udGhpcy5jb250ZXh0U2VydmljZS5pbm5lckRvbWFpbi5tYXAoKGlubmVyLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmFySW5uZXJTY2FsZSA9IHRoaXMuY29udGV4dFNlcnZpY2UuYmFySW5uZXJTY2FsZSgpO1xuICAgICAgICAgIGNvbnN0IHgxID0gYmFySW5uZXJTY2FsZShpbm5lcik7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgxOiB4MSArIHBvc2l0aW9uLngxLFxuICAgICAgICAgICAgeDI6IHgxICsgcG9zaXRpb24ueDEgKyBiYXJJbm5lclNjYWxlLmJhbmR3aWR0aCgpLFxuICAgICAgICAgICAgbmFtZTogaW5uZXIsXG4gICAgICAgICAgICBncm91cE5hbWU6IHRoaXMuY29udGV4dFNlcnZpY2UueFNlcmllc1ZhbHVlW2luZGV4XSxcbiAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIFtdLFxuICAgICk7XG4gIH1cblxuICBjYWxjdWxhdGVZID0gKF86IG51bWJlcikgPT4gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dFNlcnZpY2U6IENvbnRleHRDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFuY2hvckhlaWdodCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnRWaWV3LmhlaWdodDtcbiAgICAgICAgdGhpcy52aWV3ID0gdGhpcy5jb250ZXh0U2VydmljZS5jaGFydFZpZXc7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UubGVnZW5kQWN0aXZhdGUkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUobGVnZW5kID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVMZWdlbmQgPSBsZWdlbmQ7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBDb250ZXh0Py52YWx1ZXMpIHtcbiAgICAgICAgICB0aGlzLnRvb2x0aXBDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4udGhpcy50b29sdGlwQ29udGV4dCxcbiAgICAgICAgICAgIHZhbHVlczogdGhpcy50b29sdGlwQ29udGV4dC52YWx1ZXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgYWN0aXZlOiBpdGVtLm5hbWUgPT09IGxlZ2VuZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGU6IE1vdXNlRXZlbnQsIHJlY3REb20/OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHhQb3MgPSBnZXRYUG9zKGUsIHRoaXMuY29udGV4dFNlcnZpY2UsIHJlY3REb20pO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleCA9IGZpbmRDbG9zZXN0UG9pbnRJbmRleCh4UG9zLCB0aGlzLmNvbnRleHRTZXJ2aWNlKTtcbiAgICBjb25zdCBjbG9zZXN0UG9pbnQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnhTZXJpZXNWYWx1ZVtjbG9zZXN0SW5kZXhdO1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmJhck9wdGlvbnMuaXNCYW5kKSB7XG4gICAgICB0aGlzLmJhck1vdXNlTW92ZShlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hbmNob3JQb3MgPSB4UG9zO1xuICAgIGlmICh0aGlzLmFuY2hvclBvcyAhPT0gdGhpcy5sYXN0QW5jaG9yUG9zICYmIGNsb3Nlc3RQb2ludCkge1xuICAgICAgdGhpcy50b29sdGlwQ29udGV4dCA9IHRoaXMuZ2V0VG9vbHRpcENvbnRleHQoY2xvc2VzdEluZGV4LCBjbG9zZXN0UG9pbnQpO1xuICAgICAgLy8g5YC85Li6IG51bGwg5LiN5bGV56S6IHRvb2x0aXBcbiAgICAgIGNvbnN0IG5vRGF0YSA9ICF0aGlzLnRvb2x0aXBDb250ZXh0Py52YWx1ZXM/LnNvbWUoZCA9PiBkLnkgIT09IG51bGwpO1xuICAgICAgaWYgKG5vRGF0YSkge1xuICAgICAgICB0aGlzLmFuY2hvck9wYWNpdHkgPSAwO1xuICAgICAgICB0aGlzLmxhc3RBbmNob3JQb3MgPSAtMTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0QW5jaG9yUG9zID0gdGhpcy5hbmNob3JQb3M7XG4gICAgICAgIHRoaXMuYW5jaG9yT3BhY2l0eSA9IDAuNztcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuYW5jaG9yT3BhY2l0eSA9IDA7XG4gICAgdGhpcy5sYXN0QW5jaG9yUG9zID0gLTE7XG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG1lcmdlUG9pbnRDb250ZXh0ID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0KSA9PiAoe1xuICAgIGNvbnRleHQ6IHRoaXMubGltaXRNYXhDb250ZXh0KGNvbnRleHQudmFsdWVzKSxcbiAgICBzb3VyY2U6IGNvbnRleHQuc291cmNlLFxuICAgIC4uLih0aGlzLnBvaW50VGVtcGxhdGVDb250ZXh0IGFzIFN0cmluZ01hcCksXG4gIH0pO1xuXG4gIGl0ZW1UcmFja0J5OiBUcmFja0J5RnVuY3Rpb248Q29udGV4dEl0ZW0+ID0gKF86IG51bWJlciwgdmFsdWU6IENvbnRleHRJdGVtKSA9PlxuICAgIHZhbHVlLm5hbWU7XG5cbiAgLy8gYmFyIG1vdXNlTW92ZSDlpITnkIZcbiAgcHJpdmF0ZSBiYXJNb3VzZU1vdmUoZTogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHhQb3MgPSBnZXRYUG9zKGUsIHRoaXMuY29udGV4dFNlcnZpY2UpO1xuICAgIGNvbnN0IGN1cnJQb3NpdGlvbiA9IHRoaXMuZ2V0Q3VycmVudE1vdXNlTW92ZVBvc2l0aW9uVmFsdWUoXG4gICAgICB0aGlzLnR5cGVTdGFuZGFyZCA/IHRoaXMuY2FsY3VsYXRpb25JdGVtUG9zaXRpb24gOiB0aGlzLmdyb3VwUG9zaXRpb24sXG4gICAgICB4UG9zLFxuICAgICk7XG4gICAgaWYgKGN1cnJQb3NpdGlvbikge1xuICAgICAgdGhpcy5nZXRCYXJYQW5jaG9yUG9zKGN1cnJQb3NpdGlvbik7XG4gICAgICB0aGlzLmdldEJhckhpZ2h0KFxuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnhTZXJpZXNWYWx1ZVtjdXJyUG9zaXRpb24uaW5kZXhdIGFzIHN0cmluZyxcbiAgICAgICAgY3VyclBvc2l0aW9uLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ2V0QmFyWUFuY2hvclBvcyhjdXJyUG9zaXRpb24pO1xuICAgICAgdGhpcy50b29sdGlwQ29udGV4dCA9IHRoaXMuZ2V0QmFyVG9vbHRpcENvbnRleHQoY3VyclBvc2l0aW9uKTtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJhckhpZ2h0KGdyb3VwTmFtZTogc3RyaW5nLCB2YWx1ZT86IEN1cnJlbnRQb3NpdGlvbkl0ZW0pIHtcbiAgICB0aGlzLmFuY2hvckhlaWdodCA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9yaXpvbnRhbFxuICAgICAgPyB0aGlzLnR5cGVTdGFuZGFyZFxuICAgICAgICA/IHRoaXMuY29udGV4dFNlcnZpY2UuYmFySW5uZXJTY2FsZSgpLmJhbmR3aWR0aCgpXG4gICAgICAgIDogKDxTY2FsZUJhbmQ8c3RyaW5nPj50aGlzLmNvbnRleHRTZXJ2aWNlLngpLmJhbmR3aWR0aCgpXG4gICAgICA6IHRoaXMuZ2V0VmVydGljYWxCYXJIZWlnaHQoZ3JvdXBOYW1lLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICog6K6h566XIGJhciDlnoLnm7Qg57G75Z6L5LiLIOmrmOW6plxuICAgKiDmoIflh4bvvJpcYlxi55u05o6l5qC55o2uIHkoMCkgLSB5KHZhbHVlKSDorqHnrpcgYmFyIGl0ZW0g55qE6auY5bqmXG4gICAqIOWghuWPoO+8muiuoeeulyBncm91cCDkuIvmiYDmnIlpdGVtIOeahOmrmOW6puebuOWKoCDlvpfliLDloIblj6DnmoQgYmFyIOmrmOW6plxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWZXJ0aWNhbEJhckhlaWdodChncm91cE5hbWU6IHN0cmluZywgdmFsdWU/OiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZVN0YW5kYXJkXG4gICAgICA/IHRoaXMuY29udGV4dFNlcnZpY2UueSgwKSAtXG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KHRoaXMuZ2V0QmFyWVZhbHVlKHZhbHVlLmdyb3VwTmFtZSwgdmFsdWUubmFtZSkpXG4gICAgICA6IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyLm5hbWUgPT09IGdyb3VwTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgY3Vyci52YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5oYXModmFsLnggYXMgc3RyaW5nKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KDApIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS55KHZhbC55KSArXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgfSwgMCkgKyBwcmV2XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwgMCk7XG4gIH1cblxuICAvLyDojrflj5blvZPliY3pvKDmoIfnp7vlhaUgYmFyIHkg5YC8XG4gIHByaXZhdGUgZ2V0QmFyWVZhbHVlKGdyb3VwTmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBmb3IgKGNvbnN0IFssIGl0ZW1dIG9mIHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLmVudHJpZXMoKSkge1xuICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gZ3JvdXBOYW1lKSB7XG4gICAgICAgIGZvciAoY29uc3QgWywgdmFsXSBvZiBpdGVtLnZhbHVlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICBpZiAodmFsLnggPT09IG5hbWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHZhbC55O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gbGluZSBhcmVhIGNoYXJ0IOiOt+WPliB0b29sdGlwIOWxleekuuaVsOaNrlxuICBwcml2YXRlIGdldFRvb2x0aXBDb250ZXh0KGluZGV4OiBudW1iZXIsIHhWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSkge1xuICAgIGNvbnN0IHZhbHVlczogQ29udGV4dEl0ZW1bXSA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZShcbiAgICAgIChhY2MsIGdyb3VwKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZXh0U2VydmljZS5kaXNhYmxlZExlZ2VuZC5oYXMoZ3JvdXAubmFtZSkpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gZ3JvdXAudmFsdWVzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICBjb2xvcjogZ3JvdXAuY29sb3IsXG4gICAgICAgICAgICAgIHVuaXQ6IGdyb3VwLnVuaXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogeFZhbHVlLFxuICAgICAgc291cmNlOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YSxcbiAgICAgIHZhbHVlczogdGhpcy5hdXRvU29ydCA/IHZhbHVlcy5zb3J0KChhLCBiKSA9PiBiLnkgLSBhLnkpIDogdmFsdWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog6I635Y+WIGJhciB0b29sdGlwIOWxleekuuaVsOaNrlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRCYXJUb29sdGlwQ29udGV4dCh2YWx1ZTogQ3VycmVudFBvc2l0aW9uSXRlbSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhcnREYXRhLnJlZHVjZSgoYWNjLCBncm91cCkgPT4ge1xuICAgICAgaWYgKGdyb3VwLm5hbWUgPT09IHZhbHVlLmdyb3VwTmFtZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAuLi5ncm91cC52YWx1ZXMucmVkdWNlKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcmV2LFxuICAgICAgICAgICAgICBjdXJyOiBDaGFydERhdGFJdGVtPHsgeDogc3RyaW5nOyB5OiBudW1iZXI7IGNvbG9yPzogc3RyaW5nIH0+LFxuICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuY29udGV4dFNlcnZpY2UuZGlzYWJsZWRMZWdlbmQuaGFzKGN1cnIueCBhcyBzdHJpbmcpICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlLm5hbWUgPyBjdXJyLnggPT09IHZhbHVlLm5hbWUgOiB0cnVlKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY3Vyci54LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyLmNvbG9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5nZXRDaGFydERlZmF1bHRDb2xvcihpbmRleCksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdmFsdWUuZ3JvdXBOYW1lLFxuICAgICAgc291cmNlOiB0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYXJ0RGF0YSxcbiAgICAgIHZhbHVlcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOaaguaXtuWFiCDpgJrov4cgaGFjayDmlrnlvI8g5L+u5pS5IHBvaW50ZXIgZXZlbnQg6KGM5Li6XG4gICAqIFRPRE86IOWQjue7reWGhemDqOWunueOsCB0b29sdGlwIOS4jeS9v+eUqCBhdWkgdG9vbHRpcFxuICAgKi9cbiAgaGFja092ZXJsYXlQYW5lU3R5bGUoc3R5bGU6IHN0cmluZykge1xuICAgIGNvbnN0IHRvb2x0aXBQYW5lRG9tID0gZ2V0KFxuICAgICAgdGhpcy5hdWlUb29sdGlwUmVmLm92ZXJsYXlSZWYsXG4gICAgICAnX3BhbmUnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRvb2x0aXBQYW5lRG9tKSB7XG4gICAgICB0b29sdGlwUGFuZURvbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPlum8oOagh+enu+WKqOeahOS9jee9ruaJgOWcqOeahCBiYXIgdmFsdWVcbiAgICogQHBhcmFtIGRhdGEg5b2T5YmNXGIgYmFyIOW8gOWni+e7k+adnyB4IOS9jee9rlxuICAgKiBAcGFyYW0geFBvcyDlvZPliY3pvKDmoIfkvY3nva5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3VycmVudE1vdXNlTW92ZVBvc2l0aW9uVmFsdWUoXG4gICAgZGF0YTogQ3VycmVudFBvc2l0aW9uSXRlbVtdLFxuICAgIHhQb3M6IG51bWJlcixcbiAgKSB7XG4gICAgbGV0IHJlc3VsdDogQ3VycmVudFBvc2l0aW9uSXRlbTtcbiAgICBmb3IgKGNvbnN0IFssIHBvc2l0aW9uXSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgaWYgKHhQb3MgPj0gcG9zaXRpb24ueDEgJiYgeFBvcyA8PSBwb3NpdGlvbi54Mikge1xuICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICog6K6h566X6ZSa54K5IHgg5L2N572uXG4gICAqIOW9k+WJjSBiYXIg5pWw5o2uIHgg5L2N572uICsg5b2T5YmNIGJhciDlrr3luqbnmoTkuIDoiKxcbiAgICogQHBhcmFtIGN1cnJQb3NpdGlvbiDlvZPliY3pvKDmoIfnp7vlhaXnmoRiYXIg5pWw5o2uXG4gICAqL1xuICBwcml2YXRlIGdldEJhclhBbmNob3JQb3MoY3VyclBvc2l0aW9uOiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgY29uc3QgYmFuZHdpZHRoID0gdGhpcy50eXBlU3RhbmRhcmRcbiAgICAgID8gdGhpcy5jb250ZXh0U2VydmljZS5iYXJJbm5lclNjYWxlKCkuYmFuZHdpZHRoKCkgLyAyXG4gICAgICA6ICg8U2NhbGVCYW5kPHN0cmluZz4+dGhpcy5jb250ZXh0U2VydmljZS54KS5iYW5kd2lkdGgoKSAvIDI7XG4gICAgdGhpcy5hbmNob3JQb3MgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvcml6b250YWxcbiAgICAgID8gTWF0aC5hYnMoXG4gICAgICAgICAgdGhpcy5nZXRWZXJ0aWNhbEJhckhlaWdodChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UueFNlcmllc1ZhbHVlW2N1cnJQb3NpdGlvbi5pbmRleF0gYXMgc3RyaW5nLFxuICAgICAgICAgICAgY3VyclBvc2l0aW9uLFxuICAgICAgICAgICkgLyAyLFxuICAgICAgICApXG4gICAgICA6IGN1cnJQb3NpdGlvbi54MSArIGJhbmR3aWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiDorqHnrpfplJrngrkgeSDkvY3nva5cbiAgICog5rC05bmz77ya5b2T5YmNIGJhciDmlbDmja4geCDkvY3nva5cbiAgICog5Z6C55u077ya5oC76auY5bqmIC0gYmFyIOmrmOW6piDvvIjpnIDopoHlhYjorqHnrpflh7ogYmFy6auY5bqm77yJXG4gICAqL1xuICBwcml2YXRlIGdldEJhcllBbmNob3JQb3MoY3VyclBvc2l0aW9uOiBDdXJyZW50UG9zaXRpb25JdGVtKSB7XG4gICAgdGhpcy5hbmNob3JZID0gdGhpcy5jb250ZXh0U2VydmljZS5ob3Jpem9udGFsXG4gICAgICA/IGN1cnJQb3NpdGlvbi54MVxuICAgICAgOiB0aGlzLnZpZXcuaGVpZ2h0IC0gdGhpcy5hbmNob3JIZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKCkge1xuICAgIGlmICghdGhpcy5hdWlUb29sdGlwUmVmPy5pc0NyZWF0ZWQpIHtcbiAgICAgIHRoaXMuYXVpVG9vbHRpcFJlZj8uc2hvdygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaGFja2VkKSB7XG4gICAgICB0aGlzLmhhY2tPdmVybGF5UGFuZVN0eWxlKCdub25lJyk7XG4gICAgfVxuICAgIHRoaXMuaGFja2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRvb2x0aXAoKSB7XG4gICAgdGhpcy5oYWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhhY2tPdmVybGF5UGFuZVN0eWxlKCdhdXRvJyk7XG4gICAgdGhpcy5hdWlUb29sdGlwUmVmPy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TWF4Q29udGV4dChjb250ZXh0OiBDb250ZXh0SXRlbVtdLCBsaW1pdCA9IDE1KSB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udGV4dC5zbGljZSgwLCBsaW1pdCk7XG4gICAgY29uc3QgZXhpc3RBY3RpdmUgPSB2YWx1ZXMuc29tZShpdGVtID0+IGl0ZW0ubmFtZSA9PT0gdGhpcy5hY3RpdmVMZWdlbmQpO1xuICAgIGlmICghZXhpc3RBY3RpdmUgJiYgdGhpcy5hY3RpdmVMZWdlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuYWN0aXZlTGVnZW5kKTtcbiAgICAgIHRoaXMuYWN0aXZlTGVnZW5kID0gJyc7XG4gICAgICByZXR1cm4gZGF0YSA/IFsuLi52YWx1ZXMuc2xpY2UoMCwgbGltaXQgLSAxKSwgZGF0YV0gOiB2YWx1ZXM7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPHN2ZzpnXG4gIFthdHRyLm9wYWNpdHldPVwiYW5jaG9yT3BhY2l0eVwiXG4gICpuZ0lmPVwiIWlzQmFuZFwiXG4+XG4gIDxzdmc6Y2lyY2xlXG4gICAgW2F0dHIudmlzaWJpbGl0eV09XCJcbiAgICAgIGNvbnRleHRTZXJ2aWNlLmRpc2FibGVkTGVnZW5kLmhhcyhpdGVtLm5hbWUpID8gJ2hpZGRlbicgOiAnJ1xuICAgIFwiXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdG9vbHRpcENvbnRleHQ/LnZhbHVlc1wiXG4gICAgcj1cIjIuNVwiXG4gICAgW2F0dHIuc3Ryb2tlXT1cIml0ZW0uY29sb3JcIlxuICAgIHN0cm9rZS13aWR0aD1cIjFcIlxuICAgIGZpbGw9XCIjZmZmXCJcbiAgICBbYXR0ci5jeF09XCJhbmNob3JQb3NcIlxuICAgIFthdHRyLmN5XT1cIml0ZW0ueSA/IChpdGVtLnkgfCBwdXJlOiBjb250ZXh0U2VydmljZS55KSB8fCAwIDogMTAwMFwiXG4gID48L3N2ZzpjaXJjbGU+XG48L3N2ZzpnPlxuXG48c3ZnOnJlY3RcbiAgc3Ryb2tlPVwiIzk5OVwiXG4gIFthdHRyLnhdPVwiYW5jaG9yUG9zXCJcbiAgW2F0dHIudmlzaWJpbGl0eV09XCJhbmNob3JWaXNpYmlsaXR5XCJcbiAgW2F0dHIueV09XCJhbmNob3JZXCJcbiAgW2F0dHIud2lkdGhdPVwiMC41XCJcbiAgW2F0dHIuaGVpZ2h0XT1cImFuY2hvckhlaWdodFwiXG4gICN0b29sdGlwPVwiYXVpVG9vbHRpcFwiXG4gIFthdHRyLm9wYWNpdHldPVwiYW5jaG9yT3BhY2l0eVwiXG4gIFthdWlUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZSB8fCBkZWZhdWx0VG9vbHRpcFRlbXBsYXRlXCJcbiAgW2F1aVRvb2x0aXBDb250ZXh0XT1cInsgY29udGV4dDogdG9vbHRpcENvbnRleHQgfVwiXG4gIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiYW5jaG9yVmlzaWJpbGl0eVwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwibWFudWFsXCJcbiAgW2F1aVRvb2x0aXBQb3NpdGlvbl09XCJ0eXBlU3RhbmRhcmQgJiYgaXNCYW5kID8gJ3RvcCcgOiAnc3RhcnQnXCJcbiAgYXVpVG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzXCJcbi8+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdFRvb2x0aXBUZW1wbGF0ZVxuICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuPlxuICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlVGVtcGxhdGUgfHwgZGVmYXVsdFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb250ZXh0OiBjb250ZXh0IH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZXh0XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50VGVtcGxhdGUgfHwgZGVmYXVsdFBvaW50VGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dCB8IHB1cmU6IG1lcmdlUG9pbnRDb250ZXh0XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIlxuICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRUaXRsZVRlbXBsYXRlXG4gIGxldC1jb250ZXh0PVwiY29udGV4dFwiXG4+XG4gIHt7XG4gICAgdGl0bGVUcmFuc2xhdGlvblxuICAgICAgPyAoY29udGV4dD8udGl0bGUgfCB0cmFuc2xhdGU6IG51bGw6dHJ1ZSlcbiAgICAgIDogKGNvbnRleHQ/LnRpdGxlIHwgcHVyZTogaGFuZGxlRGF0ZUZvcm1hdDpkYXRlRm9ybWF0KVxuICB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0UG9pbnRUZW1wbGF0ZVxuICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuICBsZXQtc291cmNlPVwic291cmNlXCJcbj5cbiAgPHVsXG4gICAgY2xhc3M9XCJjb250ZXh0LWxpc3RcIlxuICAgIFtjbGFzcy5jb2x1bW4tbGF5b3V0XT1cImNvbHVtbkxheW91dFwiXG4gID5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwiY29udGV4dC1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRleHQ7IHRyYWNrQnk6IGl0ZW1UcmFja0J5XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXRlbT8uYWN0aXZlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1pY29uXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtLmNvbG9yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLW5hbWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9pbnROYW1lVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50TmFtZVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29udGV4dDogaXRlbSB9XCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uID8gKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSkgOiBpdGVtLm5hbWUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uTGF5b3V0XCI+OiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cIml0ZW0tcHJlZml4XCJcbiAgICAgICAgICAqbmdJZj1cInZhbHVlUHJlZml4XCJcbiAgICAgICAgICA+e3sgdmFsdWVQcmVmaXggfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIj57eyBpdGVtIHwgcHVyZTogcG9pbnRGb3JtYXQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLXN1ZmZpeFwiXG4gICAgICAgICAgKm5nSWY9XCJ2YWx1ZVN1ZmZpeFwiXG4gICAgICAgICAgPnt7IHZhbHVlU3VmZml4IHwgcHVyZTogdG9vbHRpcFN1ZmZpeEZvcm1hdCB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, TemplateRef, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
const _c0 =
|
|
4
|
-
const _c1 =
|
|
3
|
+
const _c0 = () => [];
|
|
4
|
+
const _c1 = a0 => ({ data: a0 });
|
|
5
5
|
function DropdownLegendComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
6
6
|
i0.ɵɵelementContainerStart(0);
|
|
7
|
-
i0.ɵɵelement(1, "aui-icon",
|
|
7
|
+
i0.ɵɵelement(1, "aui-icon", 4);
|
|
8
8
|
i0.ɵɵelementContainerEnd();
|
|
9
9
|
} if (rf & 2) {
|
|
10
10
|
i0.ɵɵnextContext();
|
|
11
|
-
const
|
|
12
|
-
i0.ɵɵadvance(
|
|
13
|
-
i0.ɵɵproperty("auiTooltip",
|
|
11
|
+
const dropdownItemTemplate_r1 = i0.ɵɵreference(4);
|
|
12
|
+
i0.ɵɵadvance();
|
|
13
|
+
i0.ɵɵproperty("auiTooltip", dropdownItemTemplate_r1)("auiTooltipContext", i0.ɵɵpureFunction1(3, _c1, i0.ɵɵpureFunction0(2, _c0)));
|
|
14
14
|
} }
|
|
15
15
|
function DropdownLegendComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
-
i0.ɵɵelementStart(0, "button",
|
|
17
|
-
i0.ɵɵelement(1, "aui-icon",
|
|
16
|
+
i0.ɵɵelementStart(0, "button", 5);
|
|
17
|
+
i0.ɵɵelement(1, "aui-icon", 6);
|
|
18
18
|
i0.ɵɵelementEnd();
|
|
19
19
|
} if (rf & 2) {
|
|
20
20
|
i0.ɵɵnextContext();
|
|
21
|
-
const
|
|
22
|
-
i0.ɵɵproperty("square", true)("auiTooltip",
|
|
21
|
+
const dropdownItemTemplate_r1 = i0.ɵɵreference(4);
|
|
22
|
+
i0.ɵɵproperty("square", true)("auiTooltip", dropdownItemTemplate_r1)("auiTooltipContext", i0.ɵɵpureFunction1(4, _c1, i0.ɵɵpureFunction0(3, _c0)));
|
|
23
23
|
} }
|
|
24
24
|
function DropdownLegendComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
25
25
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -28,9 +28,9 @@ function DropdownLegendComponent_ng_template_3_ng_container_0_Template(rf, ctx)
|
|
|
28
28
|
i0.ɵɵelementEnd();
|
|
29
29
|
i0.ɵɵelementContainerEnd();
|
|
30
30
|
} if (rf & 2) {
|
|
31
|
-
const
|
|
31
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
32
32
|
i0.ɵɵadvance(2);
|
|
33
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
33
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.legendTemplate);
|
|
34
34
|
} }
|
|
35
35
|
function DropdownLegendComponent_ng_template_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
36
36
|
i0.ɵɵtext(0);
|
|
@@ -39,25 +39,22 @@ function DropdownLegendComponent_ng_template_3_ng_template_1_Template(rf, ctx) {
|
|
|
39
39
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, "no_data"), " ");
|
|
40
40
|
} }
|
|
41
41
|
function DropdownLegendComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
-
i0.ɵɵtemplate(0, DropdownLegendComponent_ng_template_3_ng_container_0_Template, 3, 1, "ng-container",
|
|
43
|
-
i0.ɵɵtemplate(1, DropdownLegendComponent_ng_template_3_ng_template_1_Template, 2, 3, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
|
42
|
+
i0.ɵɵtemplate(0, DropdownLegendComponent_ng_template_3_ng_container_0_Template, 3, 1, "ng-container", 3)(1, DropdownLegendComponent_ng_template_3_ng_template_1_Template, 2, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
44
43
|
} if (rf & 2) {
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
i0.ɵɵproperty("ngIf",
|
|
44
|
+
const noDataTemplate_r3 = i0.ɵɵreference(2);
|
|
45
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
46
|
+
i0.ɵɵproperty("ngIf", ctx_r1.data.length && !ctx_r1.noData)("ngIfElse", noDataTemplate_r3);
|
|
48
47
|
} }
|
|
49
48
|
export class DropdownLegendComponent {
|
|
50
49
|
static { this.ɵfac = function DropdownLegendComponent_Factory(t) { return new (t || DropdownLegendComponent)(); }; }
|
|
51
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DropdownLegendComponent, selectors: [["acl-dropdown-legend"]], inputs: { data: "data", legendTemplate: "legendTemplate", noData: "noData", isCard: "isCard" }, decls: 5, vars: 2, consts: [[
|
|
52
|
-
i0.ɵɵtemplate(0, DropdownLegendComponent_ng_container_0_Template, 2, 5, "ng-container", 0);
|
|
53
|
-
i0.ɵɵtemplate(1, DropdownLegendComponent_ng_template_1_Template, 2, 6, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
54
|
-
i0.ɵɵtemplate(3, DropdownLegendComponent_ng_template_3_Template, 3, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
50
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DropdownLegendComponent, selectors: [["acl-dropdown-legend"]], inputs: { data: "data", legendTemplate: "legendTemplate", noData: "noData", isCard: "isCard" }, decls: 5, vars: 2, consts: [["elseTemplate", ""], ["dropdownItemTemplate", ""], ["noDataTemplate", ""], [4, "ngIf", "ngIfElse"], ["icon", "prod:chart_legend", "auiTooltipType", "info", "auiTooltipPosition", "bottom end", "auiTooltipTrigger", "click", "auiTooltipActive", "legendActive", 1, "btn", 3, "auiTooltip", "auiTooltipContext"], ["aui-button", "", "icon", "prod:chart_legend", "auiTooltipType", "info", "auiTooltipPosition", "bottom end", "auiTooltipTrigger", "click", "auiTooltipActive", "legendActive", 1, "btn", 3, "square", "auiTooltip", "auiTooltipContext"], ["icon", "prod:chart_legend"], [1, "legend-vertical"], [3, "ngTemplateOutlet"]], template: function DropdownLegendComponent_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵtemplate(0, DropdownLegendComponent_ng_container_0_Template, 2, 5, "ng-container", 3)(1, DropdownLegendComponent_ng_template_1_Template, 2, 6, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(3, DropdownLegendComponent_ng_template_3_Template, 3, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
55
52
|
} if (rf & 2) {
|
|
56
|
-
const
|
|
57
|
-
i0.ɵɵproperty("ngIf", !ctx.isCard)("ngIfElse",
|
|
53
|
+
const elseTemplate_r4 = i0.ɵɵreference(2);
|
|
54
|
+
i0.ɵɵproperty("ngIf", !ctx.isCard)("ngIfElse", elseTemplate_r4);
|
|
58
55
|
} }, styles: [".btn[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4));cursor:pointer} .legend-label{padding:0;margin:0;list-style:none;display:flex;align-items:center;cursor:pointer;justify-content:flex-start} .legend-label:not(:last-child){margin-bottom:8px} .label-name{color:rgb(var(--aui-color-secondary-text))} .label-symbol{margin-right:4px}[_nghost-%COMP%] .legend-labels[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column}.legendActive[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary))}", ".legend-wrap[_ngcontent-%COMP%]{display:inline-block}.legend-wrap[_ngcontent-%COMP%] ul[_ngcontent-%COMP%], .legend-wrap[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}.legend-wrap[_ngcontent-%COMP%] .legend-labels[_ngcontent-%COMP%]{display:flex}.legend-wrap[_ngcontent-%COMP%] .legend-label[_ngcontent-%COMP%]{display:flex;align-items:center;cursor:pointer;justify-content:center}.legend-wrap[_ngcontent-%COMP%] .legend-label[_ngcontent-%COMP%]:not(:last-child){margin-right:20px}.legend-wrap[_ngcontent-%COMP%] .forbid[_ngcontent-%COMP%]{cursor:no-drop}.legend-wrap[_ngcontent-%COMP%] .label-name[_ngcontent-%COMP%]{font-size:12px;color:rgb(var(--aui-color-secondary-text))}.legend-wrap[_ngcontent-%COMP%] .label-symbol[_ngcontent-%COMP%]{margin-right:4px}.disable[_ngcontent-%COMP%] .label-symbol[_ngcontent-%COMP%]{background:rgb(var(--aui-color-n-6))!important}.disable[_ngcontent-%COMP%] .label-name[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-6))}.hover[_ngcontent-%COMP%] .label-name[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-1))}.symbol-square[_ngcontent-%COMP%]{width:12px;height:12px;display:inline-block}.symbol-line[_ngcontent-%COMP%]{width:12px;height:2px;display:inline-block}.symbol-circle[_ngcontent-%COMP%]{width:12px;height:12px;border-radius:50%;display:inline-block}.operation[_ngcontent-%COMP%]{display:flex;justify-content:center}.select-all[_ngcontent-%COMP%] .aui-checkbox{font-size:12px;line-height:16px;margin-bottom:8px}"], changeDetection: 0 }); }
|
|
59
56
|
}
|
|
60
|
-
(
|
|
57
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DropdownLegendComponent, [{
|
|
61
58
|
type: Component,
|
|
62
59
|
args: [{ selector: 'acl-dropdown-legend', template: `
|
|
63
60
|
<ng-container *ngIf="!isCard; else elseTemplate">
|
|
@@ -109,4 +106,5 @@ export class DropdownLegendComponent {
|
|
|
109
106
|
}], isCard: [{
|
|
110
107
|
type: Input
|
|
111
108
|
}] }); })();
|
|
112
|
-
|
|
109
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DropdownLegendComponent, { className: "DropdownLegendComponent" }); })();
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGVnZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NoYXJ0L2N1c3RvbS10ZW1wbGF0ZS9kcm9wZG93bi1sZWdlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQzs7Ozs7SUFPbkIsNkJBQWlEO0lBQy9DLDhCQVNZOzs7OztJQU5WLGNBQW1DO0lBQ25DLEFBREEsb0RBQW1DLDZFQUNEOzs7SUFRcEMsaUNBV0M7SUFDQyw4QkFBOEM7SUFDaEQsaUJBQVM7Ozs7SUFQUCxBQURBLEFBSEEsNkJBQWUsdUNBR29CLDZFQUNEOzs7SUFXcEMsNkJBQWtFO0lBQ2hFLDhCQUE2QjtJQUMzQiwyQkFBaUU7SUFDbkUsaUJBQU07Ozs7SUFEVSxlQUFtQztJQUFuQyx3REFBbUM7OztJQUluRCxZQUNGOzs7SUFERSxnRUFDRjs7O0lBRkEsQUFMQSx3R0FBa0UsMEhBS3JDOzs7O0lBTGdCLEFBQTlCLDJEQUE4QiwrQkFBbUI7O0FBZ0J0RSxNQUFNLE9BQU8sdUJBQXVCO3dGQUF2Qix1QkFBdUI7b0VBQXZCLHVCQUF1QjtZQWpCaEMsQUFqQkEsQUFaQSwwRkFBaUQsNEdBWXRCLDRHQWlCUTs7O1lBN0JMLEFBQWYsa0NBQWUsNkJBQWlCOzs7aUZBOEN0Qyx1QkFBdUI7Y0FqRG5DLFNBQVM7MkJBQ0UscUJBQXFCLFlBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NULG1CQUtnQix1QkFBdUIsQ0FBQyxNQUFNO2dCQUd0QyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLOztrRkFKSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMZWdlbmRJdGVtIH0gZnJvbSAnLi4vY29tbW9uL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWRyb3Bkb3duLWxlZ2VuZCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0NhcmQ7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICBpY29uPVwicHJvZDpjaGFydF9sZWdlbmRcIlxuICAgICAgICBbYXVpVG9vbHRpcF09XCJkcm9wZG93bkl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgIFthdWlUb29sdGlwQ29udGV4dF09XCJ7IGRhdGE6IFtdIH1cIlxuICAgICAgICBhdWlUb29sdGlwVHlwZT1cImluZm9cIlxuICAgICAgICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gZW5kXCJcbiAgICAgICAgYXVpVG9vbHRpcFRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgIGF1aVRvb2x0aXBBY3RpdmU9XCJsZWdlbmRBY3RpdmVcIlxuICAgICAgPjwvYXVpLWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGF1aS1idXR0b25cbiAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICBpY29uPVwicHJvZDpjaGFydF9sZWdlbmRcIlxuICAgICAgICBbYXVpVG9vbHRpcF09XCJkcm9wZG93bkl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgIFthdWlUb29sdGlwQ29udGV4dF09XCJ7IGRhdGE6IFtdIH1cIlxuICAgICAgICBhdWlUb29sdGlwVHlwZT1cImluZm9cIlxuICAgICAgICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gZW5kXCJcbiAgICAgICAgYXVpVG9vbHRpcFRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgIGF1aVRvb2x0aXBBY3RpdmU9XCJsZWdlbmRBY3RpdmVcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cInByb2Q6Y2hhcnRfbGVnZW5kXCI+PC9hdWktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duSXRlbVRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubGVuZ3RoICYmICFub0RhdGE7IGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC12ZXJ0aWNhbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVnZW5kVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhVGVtcGxhdGU+XG4gICAgICAgIHt7ICdub19kYXRhJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9kcm9wZG93bi1sZWdlbmQuc2NzcycsXG4gICAgJy4uL2NvbW1vbi9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudC5zY3NzJyxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duTGVnZW5kQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0YTogTGVnZW5kSXRlbVtdO1xuICBASW5wdXQoKSBsZWdlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBJbnB1dCgpIG5vRGF0YTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNDYXJkOiBib29sZWFuO1xufVxuIl19
|